本文主要是介绍Kubernetes 之 Secret,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Kubernetes 之 Secret
Secret 的定义
Secret 解决了密码、token、秘钥等敏感数据的配置问题,它避免了把这些敏感数据直接暴露在镜像或者 Pod 的配置文件中。但是它只是一种相对安全的策略,我们还是可以在容器内找到这些信息。
Secret 的认证方式
认证方式 | 描述 |
---|---|
Generic | 用来给通用字符串进行加密 |
TLS | 用来加密 HTTPS、SSH 等密钥 |
Docker Registry | 用来加密 Docker 仓库登录凭证 |
Secret 的使用
Secret 也存在多种加密类型,我们用其最常见的Base64
加密方式Opaque
。
apiVersion: v1
kind: Secret
metadata:name: secret-mysql
type: Opaque
data:MYSQL_ROOT_PASSWORD: Q2hhbmdlTWU=
root@k8s-master1:~# kubectl describe secret/secret-mysql
Name: secret-mysql
Namespace: default
Labels: <none>
Annotations: <none>Type: OpaqueData
====
MYSQL_ROOT_PASSWORD: 8 bytes
apiVersion: v1
kind: Pod
metadata:name: pod-secret
spec:containers:- name: secret-testimage: busyboxcommand: [ "/bin/sh", "-c", "sleep 3600" ]env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:name: secret-mysqlkey: MYSQL_ROOT_PASSWORDvolumeMounts:- name: volume-secretmountPath: /etc/mysqlvolumes:- name: volume-secretsecret:secretName: secret-mysqlrestartPolicy: Never
root@k8s-master1:~# kubectl exec -it pod-secret -- /bin/sh
/ # env
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=pod-secret
SHLVL=1
HOME=/root
MYSQL_ROOT_PASSWORD=ChangeMe
TERM=xterm
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
PWD=/
/ # cat /etc/mysql/MYSQL_ROOT_PASSWORD
ChangeMe
/ #
这篇关于Kubernetes 之 Secret的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!