Secret

Secret 是一种 Kubernetes 原生资源,用于存储少量敏感信息,比如密码、OAuth 令牌、SSH 密钥等。使用 Secret 可以避免将敏感数据直接写入到 Pod 的定义中或者应用程序代码里,从而提高了安全性。

创建 Secret

下面是一个基本的 Secret 示例:

apiVersion: v1
kind: Secret
metadata:
  name: secret-demo
type: Opaque
data:
  key1: dmFsdWUxCg==
  key2: dmFsdWUyCg==

在该例中,secret-demo 存储了两对键值对,其中值经过了 base64 编码。

使用 Secret

PVC 类似,Secret 可以以同样的方式作为数据卷被 Pod、Notebook、Job 等资源挂载。以 PyTorchTrainingJob 为例:

apiVersion: batch.tensorstack.dev/v1beta1
kind: PyTorchTrainingJob
metadata:
  name: pytorchtrainingjob-demo
spec:
  replicaSpecs:
    - type: worker
      replicas: 1
      restartPolicy: OnFailure
      template:
        spec:
          containers:
            - image: pytorch/pytorch:2.0.0-cuda11.7-cudnn8-devel
              name: pytorch
              command:
                - python
                - dist_mnist.py
              resources:
                limits:
                  cpu: '1'
                  memory: 1Gi
                requests:
                  cpu: 500m
                  memory: 500Mi
              volumeMounts:
                - name: data
                  mountPath: /data
                - name: secret
                  mountPath: /secret
          volumes:
            - name: data
              persistentVolumeClaim:
                claimName: pvc-demo
            - name: secret
              secret:
                name: secret-demo

在该例中,pytorchtrainingjob-demopvc-demosecret-demo 均作为数据卷(volume)来使用,其中容器 pytorch 将两个数据卷分别挂载到 /data/secret 目录下。因此,容器 pytorch/secret 目录下将存在两个文件 /secret/key1/secret/key2,文件内容是经过 base64 解码后的对应的值。

Secret 类型

Secret 有多种类型,分别适用于存储不同类型的敏感数据,并通过 label tensorstack.dev/resource 进行标识,具体类型如下表所示:

类型label用途数据来源
API Keytensorstack.dev/resource: apikey存放 API Key在 User Console 生成
S3-cfgtensorstack.dev/resource: s3-cfg存放 .s3cfg 文件的内容从管理员处获取
S3-envtensorstack.dev/resource: s3-env存放 S3 配置从管理员处获取
Dockertensorstack.dev/resource: docker存放 Docker 配置文件的内容本地的 $HOME/.docker/config.json 文件
SSH Public Keytensorstack.dev/resource: ssh存放 SSH 公钥本地的 $HOME/.ssh/id_rsa.pub 文件
Ceph Clienttensorstack.dev/resource: ceph-client存放 Ceph 客户端配置从管理员处获取
Customtensorstack.dev/resource: other自定义用途-

例如:

下一步