Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
本文展示如何安全地将敏感数据(如密码和加密密钥)注入到 Pods 中。
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
要获知版本信息,请输入kubectl version
.
假设用户想要有两条 secret 数据:用户名 my-app
和密码
39528$vdg7Jb
。 首先使用 Base64 编码 将用户名和密码转化为 base-64 形式。 这里是一个 Linux 示例:
```shell
echo -n 'my-app' | base64
echo -n '39528$vdg7Jb' | base64
```
结果显示 base-64 形式的用户名为 bXktYXBw
,
base-64 形式的密码为 Mzk1MjgkdmRnN0pi
。
这里是一个配置文件,可以用来创建存有用户名和密码的 Secret:
pods/inject/secret.yaml
|
---|
|
创建 Secret
kubectl create -f https://k8s.io/examples/pods/inject/secret.yaml
注意: 如果想要跳过 Base64 编码的步骤,可以使用kubectl create secret
命令来创建 Secret:
kubectl create secret generic test-secret --from-literal=username='my-app' --from-literal=password='39528$vdg7Jb'
查看 Secret 相关信息:
kubectl get secret test-secret
输出:
NAME TYPE DATA AGE
test-secret Opaque 2 1m
查看 Secret 相关的更多详细信息:
kubectl describe secret test-secret
输出:
Name: test-secret
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 13 bytes
username: 7 bytes
这里是一个可以用来创建 pod 的配置文件:
pods/inject/secret-pod.yaml
|
---|
|
创建 Pod:
kubectl create -f secret-pod.yaml
确认 Pod 正在运行:
kubectl get pod secret-test-pod
输出:
NAME READY STATUS RESTARTS AGE
secret-test-pod 1/1 Running 0 42m
在 Pod 中运行的容器中获取一个 shell:
kubectl exec -it secret-test-pod -- /bin/bash
secret 数据通过挂载在 /etc/secret-volume
目录下的卷暴露在容器中。
在 shell 中,进入 secret 数据被暴露的目录:
root@secret-test-pod:/# cd /etc/secret-volume
在 shell 中,列出 /etc/secret-volume
目录的文件:
root@secret-test-pod:/etc/secret-volume# ls
输出显示了两个文件,每个对应一条 secret 数据:
password username
在 shell 中,显示 username
和 password
文件的内容:
root@secret-test-pod:/etc/secret-volume# cat username; echo; cat password; echo
输出为用户名和密码:
my-app
39528$vdg7Jb
这里是一个可以用来创建 pod 的配置文件:
pods/inject/secret-envars-pod.yaml
|
---|
|
创建 Pod:
kubectl create -f https://k8s.io/examples/pods/inject/secret-envars-pod.yaml
确认 Pod 正在运行:
kubectl get pod secret-envars-test-pod
输出:
NAME READY STATUS RESTARTS AGE
secret-envars-test-pod 1/1 Running 0 4m
在 Pod 中运行的容器中获取一个 shell:
kubectl exec -it secret-envars-test-pod -- /bin/bash
在 shell 中,显示环境变量:
root@secret-envars-test-pod:/# printenv
输出包括用户名和密码:
...
SECRET_USERNAME=my-app
...
SECRET_PASSWORD=39528$vdg7Jb