kubernetes存储-secrets

目录

一、从文件创建

二、编写yaml文件

三、将Secret挂载到Volume中

四、向指定路径映射 secret 密钥

五、将Secret设置为环境变量

六、存储docker registry的认证信息


       Kubernetes中的Secrets是用于存储敏感信息的一种对象类型,例如密码、令牌、证书等。Secrets可以以编码、加密或未加密的形式存储。使用Secrets可以保护敏感信息不被直接暴露在Pod定义中,从而增加了应用程序的安全性。

一、从文件创建

echo -n 'admin' > ./username.txt
echo -n '123456' > ./password.txt
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt
kubectl get secrets db-user-pass -o yaml
echo MTIzNDU2 | base64 -d

二、编写yaml文件

echo -n 'admin' | base64
echo -n '123456' | base64
vim mysecret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=                    #必须编码后的值
  password: MTIzNDU2

kubectl apply -f mysecret.yaml
kubectl get secrets mysecret -o yaml

 

三、将Secret挂载到Volume中

vim pod1.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mysecret
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: secrets
      mountPath: "/secret"
      readOnly: true
  volumes:
  - name: secrets
    secret:
      secretName: mysecret

kubectl apply  -f pod1.yaml
kubectl get pod
kubectl exec  mysecret -- ls /secret
kubectl delete  -f pod1.yaml

 

四、向指定路径映射 secret 密钥

vim pod2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mysecret
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
    - name: secrets
      mountPath: "/secret"
      readOnly: true
  volumes:
  - name: secrets
    secret:
      secretName: mysecret
      items:
      - key: username
        path: my-group/my-username

kubectl apply -f pod2.yaml
kubectl exec  mysecret -- cat /secret/my-group/my-username
kubectl delete  -f pod2.yaml

 

五、将Secret设置为环境变量

vim pod3.yaml

apiVersion: v1
kind: Pod
metadata:
  name: secret-env
spec:
  containers:
  - name: pod3
    image: busybox
    command: ["/bin/sh", "-c", "env"]
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never

kubectl apply -f pod3.yaml
kubectl logs secret-env

六、存储docker registry的认证信息

新建私有仓库

 

kubectl create secret docker-registry myregistrykey --docker-server=reg.westos.org --docker-username=admin --docker-password=123456 --docker-email=yyl@westos.org
vim pod4.yaml

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: game2048
      image: reg.westos.org/westos/game2048
  imagePullSecrets:
    - name: myregistrykey

kubectl apply -f pod4.yaml
kubectl get pod

推荐把registrykey绑定到sa,这样yaml文件中就可以不用指定,更加安全。

kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'
kubectl describe sa default

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值