有好几种方法,我使用的不是直接写在yaml中,而是使用命令,全程不会接触和修改rsa的公私钥文件内容。

一,拿到或生成pem格式的密钥对。

过程略,假设拿到的文件名为private.pem和public.pem

二,在K8s集群中导入rsa文件。

命名为rsa-secret ,namespace为cgtest.

kubectl create secret generic rsa-secret --from-file=ssh-privatekey=private.pem --from-file=ssh-publickey=public.pem -n cgtest

后期,如果要更新,需要先delete(kubectl delete secret rsa-secret -n cgtest),再create.

三,在pod中挂载

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: golang-deploy
  namespace: cgtest
spec:
  replicas: 1
  selector:
    matchLabels:
      app: golang-deploy
  template:
    metadata:
      labels:
        app: golang-deploy
    spec:
      nodeName: xxxxx
      containers:
      - name: golang
        image: demo.harbor/golang:1.12.9-alpine3.10
        imagePullPolicy: IfNotPresent
        command: ["sh","-c","while true;do date;sleep 1;done"]
        volumeMounts:
        - name: secret-volume
          readOnly: true
          mountPath: "/etc/secret-volume"
      volumes:
      - name: secret-volume
        secret:
          secretName: rsa-secret

其中,volumes不带namespace,但会自动从Deployment下读namespace。

四,在应用中读取。

程序代码就从/etc/secret-volume目录下读取private.pem(私钥)和public.pem(公钥)

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐