- Kubernetes 教程
- Kubernetes - 主页
- Kubernetes - 概览
- Kubernetes - 架构
- Kubernetes - 设置
- Kubernetes - 映像
- Kubernetes - 作业
- Kubernetes - 标签和选择器
- Kubernetes - 命名空间
- Kubernetes - 节点
- Kubernetes - 服务
- Kubernetes - Pod
- Kubernetes - 副本控制器
- Kubernetes - 副本集
- Kubernetes - 部署
- Kubernetes - 卷
- Kubernetes - 密钥
- Kubernetes - 网络策略
- 高级 Kubernetes
- Kubernetes - API
- Kubernetes - Kubectl
- Kubernetes - Kubectl 命令
- Kubernetes - 创建应用
- Kubernetes - 应用部署
- Kubernetes - 自动伸缩
- Kubernetes - 仪表板设置
- Kubernetes - 监视
- Kubernetes 有用资源
- Kubernetes - 快速指南
- Kubernetes - 有用资源
- Kubernetes - 讨论
Kubernetes - 密钥
密钥可以定义为用于存储敏感数据(如用户名和密码)的 Kubernetes 对象,并对其加密。
在 Kubernetes 中创建密钥有许多方法。
- 从 txt 文件中创建。
- 从 yaml 文件中创建。
从文本文件中创建
要从文本文件(例如用户名和密码)创建密钥,我们首先需要将它们存储在一个 txt 文件中,然后使用以下命令。
$ kubectl create secret generic tomcat-passwd –-from-file = ./username.txt –fromfile = ./. password.txt
从 Yaml 文件中创建
apiVersion: v1 kind: Secret metadata: name: tomcat-pass type: Opaque data: password: <User Password> username: <User Name>
创建密钥
$ kubectl create –f Secret.yaml secrets/tomcat-pass
使用密钥
一旦我们创建了密钥,就可以在 Pod 或副本控制器中引用该密钥,如下所示 −
- 环境变量
- 卷
作为环境变量
要将密钥用作环境变量,我们将在 Pod Yaml 文件的 spec 部分下使用 env。
env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: tomcat-pass
作为卷
spec: volumes: - name: "secretstest" secret: secretName: tomcat-pass containers: - image: tomcat:7.0 name: awebserver volumeMounts: - mountPath: "/tmp/mysec" name: "secretstest"
作为环境变量的密钥配置
apiVersion: v1 kind: ReplicationController metadata: name: appname spec: replicas: replica_count template: metadata: name: appname spec: nodeSelector: resource-group: containers: - name: appname image: imagePullPolicy: Always ports: - containerPort: 3000 env: -----------------------------> 1 - name: ENV valueFrom: configMapKeyRef: name: appname key: tomcat-secrets
在上面的代码中,在 env 定义下,我们正在副本控制器中将密钥用作环境变量。
密钥作为卷挂载
apiVersion: v1 kind: pod metadata: name: appname spec: metadata: name: appname spec: volumes: - name: "secretstest" secret: secretName: tomcat-pass containers: - image: tomcat: 8.0 name: awebserver volumeMounts: - mountPath: "/tmp/mysec" name: "secretstest"
广告