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:  Opaque

Data
====
MYSQL_ROOT_PASSWORD:  8 bytes
apiVersion: v1
kind: Pod
metadata:
  name: pod-secret
spec:
  containers:
    - name: secret-test
      image: busybox
      command: [ "/bin/sh", "-c", "sleep 3600" ]
      env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: secret-mysql
              key: MYSQL_ROOT_PASSWORD
      volumeMounts:
        - name: volume-secret
          mountPath: /etc/mysql
  volumes:
    - name: volume-secret
      secret:
        secretName: secret-mysql
  restartPolicy: 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
/ #
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值