Kubernetes Secret(秘钥)是用于存储敏感信息的 Kubernetes 资源对象,例如密码、API 密钥、TLS 证书等。Secret 与 ConfigMap 类似,但它专门用于存储和管理敏感数据。与 ConfigMap 不同,Secret 中的数据会以 Base64 编码进行存储,但请注意,Base64 编码并非加密,因此 Secret 并不是绝对安全的存储方式。

以下是创建和使用 Secret 的基本步骤:

1. 创建 Secret:
   通过 YAML 文件或者命令行创建 Secret。例如,创建一个包含用户名和密码的 Secret:
   apiVersion: v1
   kind: Secret
   metadata:
     name: my-secret
   type: Opaque
   data:
     username: <base64-encoded-username>
     password: <base64-encoded-password>

   使用命令行创建:
   kubectl create secret generic my-secret --from-literal=username=<your-username> --from-literal=password=<your-password>

2. 将 Secret 应用到 Pod 中:
   在 Pod 的配置中引用 Secret 中的敏感信息。可以通过环境变量、命令行参数或者卷挂载的方式使用 Secret 中的数据。

   例如,在 Pod 的 YAML 文件中使用 Secret:
   apiVersion: v1
   kind: Pod
   metadata:
     name: mypod
   spec:
     containers:
     - name: mycontainer
       image: myimage
       env:
       - name: DB_USERNAME
         valueFrom:
           secretKeyRef:
             name: my-secret
             key: username
       - name: DB_PASSWORD
         valueFrom:
           secretKeyRef:
             name: my-secret
             key: password

3. 通过卷挂载使用 Secret:
   类似 ConfigMap,你也可以通过卷挂载将 Secret 中的数据挂载到 Pod 中。例如:
   apiVersion: v1
   kind: Pod
   metadata:
     name: mypod
   spec:
     volumes:
     - name: secret-volume
       secret:
         secretName: my-secret
     containers:
     - name: mycontainer
       image: myimage
       volumeMounts:
       - name: secret-volume
         mountPath: /etc/secret

   在这个例子中,Secret 中的数据将被挂载到 /etc/secret 目录下。

总体而言,Kubernetes Secret 用于安全地存储和使用敏感信息,帮助保护应用程序的安全性。如有其他问题或需要更多详细信息,请随时提问。


转载请注明出处:http://www.pingtaimeng.com/article/detail/9748/Kubernetes