分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

(转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书

发布时间:2023-09-06 02:16责任编辑:胡小海关键词:配置

转:https://www.jianshu.com/p/530b3642c642

本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面。

转换安全数据成base-64表示

假设你有两个秘密数据:一个用户名my-app和一个密码39528$vdg7Jb。首先使用Base64-encoding转换用户名和密码用base-64来表示。下面是一个用Linux转换的例子:

echo -n ‘my-app‘ | base64echo -n ‘39528$vdg7Jb‘ | base64

输出展示了用户名转换以后的字符串是bXktYXBw,密码转换以后是Mzk1MjgkdmRnN0pi。

创建一个Secret

下面是一个配置文件创建一个Secret来保存用户名和密码:

apiVersion: v1kind: Secretmetadata: ?name: test-secretdata: ?username: bXktYXBwCg== ?password: Mzk1MjgkdmRnN0piCg==

1.创建Secret

kubectl create -f secret.yaml

注意:如果你想跳过Base64转码的步骤,可以使用kubectl create secret命令创建Secret:

 kubectl create secret generic test-secret --from-literal=username=‘my-app‘,password=‘39528$vdg7Jb‘

2.查看Secret的详细信息:

kubectl get secret test-secret

输出:

NAME ?????????TYPE ?????DATA ?????AGE test-secret ??Opaque ???2 ????????1m

3.查看更多详细信息:

 kubectl describe secret test-secret

输出:

 Name: ??????test-secret Namespace: ?default Labels: ????<none> Annotations: ???<none> Type: ??Opaque Data ==== password: ??13 bytes username: ??7 bytes

创建一个Pod通过卷访问秘密数据

下面是一个配置文件可以用来创建一个Pod:

apiVersion: v1kind: Podmetadata: ?name: secret-test-podspec: ?containers: ???- name: test-container ?????image: nginx ?????volumeMounts: ?????????# name must match the volume name below ?????????- name: secret-volume ???????????mountPath: /etc/secret-volume ?# The secret data is exposed to Containers in the Pod through a Volume. ?volumes: ???- name: secret-volume ?????secret: ???????secretName: test-secret

1.创建Pod:

kubectl create -f secret-pod.yaml

2.验证Pod是否运行:

kubectl get pod secret-test-pod

输出:

NAME ?????????????READY ????STATUS ???RESTARTS ??AGE secret-test-pod ??1/1 ??????Running ??0 ?????????42m

3.使用shell进入到pod运行的容器里面:

kubectl exec -it secret-test-pod -- /bin/bash

4.这个秘密数据公开在容器/etc/secret-volume目录里面通过卷挂载的方式。进入这个目录,并查看这个数据:

root@secret-test-pod:/# cd /etc/secret-volume

5.在shell里面查看/etc/secret-volume目录下的文件:

root@secret-test-pod:/etc/secret-volume# ls

输出展示了两个文件,每一个都对应相应的秘密数据:

password username

输出是用户名和密码:

 my-app 39528$vdg7Jb

创建Pod通过环境变量访问秘密数据

下面是一个创建Pod的配置文件:

apiVersion: v1kind: Podmetadata: ?name: secret-envars-test-podspec: ?containers: ?- name: envars-test-container ???image: nginx ???env: ???- name: SECRET_USERNAME ?????valueFrom: ???????secretKeyRef: ?????????name: test-secret ?????????key: username ???- name: SECRET_PASSWORD ?????valueFrom: ???????secretKeyRef: ?????????name: test-secret ?????????key: password

1.创建Pod:

kubectl create -f secret-envars-pod.yaml

2.验证Pod是否已经运行:

kubectl get pod secret-envars-test-pod

输出:

NAME ????????????????????READY ????STATUS ???RESTARTS ??AGE secret-envars-test-pod ??1/1 ??????Running ??0 ?????????4m

3.用shell进入Pod运行的容器里面:

kubectl exec -it secret-envars-test-pod -- /bin/bash

4.在shell里面展示环境变量:

root@secret-envars-test-pod:/# printenv

输出包含用户名和密码:

 ... SECRET_USERNAME=my-app ... SECRET_PASSWORD=39528$vdg7Jb


作者:YiQinGuo
链接:https://www.jianshu.com/p/530b3642c642
來源:简书

(转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书

原文地址:https://www.cnblogs.com/wangle1001986/p/9726894.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved