kubernetes配置管理中的secret

网友投稿 253 2022-10-27

kubernetes配置管理中的secret

k8s的配置管理Secret和ConfigMap

Secret的k8s官方文档::加密数据并存放在Etcd中,让Pod容器以挂载Volume方式访问,Pod使用secret的两种方式: 变量注入 挂载

使用kubectl创建本地创建Secret

echo -n 'admin' > ./username.txt echo -n '1f2d1e2e67df' > ./password.txt

kubectl create secret 命令将这些文件打包到一个 Secret 中并在 API server 中创建了一个对象。

kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt

默认的键名是文件名。你也可以使用 [--from-file=[key=]source] 参数来设置键名。(我采用的这种方法详细说明)

kubectl create secret generic db-user-pass \ --from-file=username=./username.txt \ --from-file=password=./password.txt

查看secret的描述

[root@master1 secret]# kubectl get secrets NAME TYPE DATA AGE blog-ljy-com kubernetes.io/tls 2 2d db-user-pass Opaque 2 97s default-token-nsxx5 kubernetes.io/service-account-token 3 9d [root@master1 secret]# kubectl describe secrets/db-user-pass Name: db-user-pass Namespace: default Labels: Annotations: Type: Opaque Data ==== password: 12 bytes username: 5 bytes [root@master1 secret]#

使用secret

Secret 可以作为数据卷被挂载,或作为环境变量 暴露出来以供 Pod 中的容器使用。它们也可以被系统的其他部分使用,而不直接暴露在 Pod 内;

使用挂载卷的方法 [root@master1 secret]# vim secret.yaml apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: redis volumeMounts: - name: foo mountPath: "/etc/foo" readOnly: true volumes: - name: foo secret: secretName: db-user-pass [root@master1 secret]# kubectl apply -f secret.yaml pod/mypod created [root@master1 secret]# kubectl get pods NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 3s nginx-deployment-9cdc9bd5c-pzzst 1/1 Running 1 3d14h web-nginx-dep2-66ccfd7fb7-z2x84 1/1 Running 1 8d #查看mypod中挂载/etc/foo目录是否正常,并查看其内容 [root@master1 secret]# kubectl exec -it mypod /bin/bash root@mypod:/# df -h Filesystem Size Used Avail Use% Mounted on overlay 39G 5.9G 33G 16% / tmpfs 64M 0 64M 0% /dev tmpfs 910M 0 910M 0% /sys/fs/cgroup tmpfs 910M 8.0K 910M 1% /etc/foo /dev/mapper/centos-root 39G 5.9G 33G 16% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 910M 12K 910M 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 910M 0 910M 0% /proc/acpi tmpfs 910M 0 910M 0% /proc/scsi tmpfs 910M 0 910M 0% /sys/firmware root@mypod:/# cat /etc/foo/username.txt adminroot@mypod:/# cat /etc/foo/password.txt 1f2d1e2e67dfroot@mypod:/# 以环境变量的形式使用 Secrets一般情况下多个Pod用来引用同一个Secret

[root@master1 secret]# vim secret-env-pod.yaml [root@master1 secret]# cat secret-env-pod.yaml apiVersion: v1 kind: Pod metadata: name: secret-env-pod spec: containers: - name: mycontainer image: nginx:1.8 env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: db-user-pass key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: db-user-pass key: password restartPolicy: Never [root@master1 secret]# kubectl apply -f secret-env-pod.yaml [root@master1 secret]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-deployment-9cdc9bd5c-pzzst 1/1 Running 1 3d14h secret-env-pod 1/1 Running 0 13m web-nginx-dep2-66ccfd7fb7-z2x84 1/1 Running 1 8d #在一个以环境变量形式使用 Secret 的容器中,Secret 键表现为常规的环境变量,其中包含 Secret 数据的 base-64 解码值。这是从上面的示例在容器内执行的命令的结果: [root@master1 secret]# kubectl exec -it secret-env-pod /bin/bash root@secret-env-pod:/# echo $SECRET_USERNAME admin root@secret-env-pod:/# echo $SECRET_PASSWORD 1f2d1e2e67df

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes配置管理中的ConfigMap
下一篇:java开源区块链jdchain入门
相关文章

 发表评论

暂时没有评论,来抢沙发吧~