如何使用kubectl将根证书添加到现有的truststore.jks文件中?

时间:2020-02-18 14:56:25

标签: kubernetes kubectl

我是kubernetes的新手,正在尝试将根证书添加到我现有的secrets truststore.jks文件中。使用get secret mysecret -o yaml。我能够查看mysecret中信任库文件的详细信息,但不确定如何用新的信任库文件替换或如何使用最新的根证书编辑现有的信任库文件。谁能帮助我使用Kubectl来获取正确的命令来执行此操作?

谢谢

1 个答案:

答案 0 :(得分:1)

秘密是包含少量敏感数据(例如密码,令牌或密钥)的对象。有关Kubernetes.io: Secrets的官方文档。

假设您通过以下方式创建了秘密:

$ kubectl create secret generic NAME_OF_SECRET --from-file=keystore.jks

您可以通过调用以下命令来编辑您的秘密:

$ kubectl edit secret NAME_OF_SECRET

它将向您显示YAML与此类似的定义:

apiVersion: v1
data:
  keystore.jks: HERE_IS_YOUR_JKS_FILE
kind: Secret
metadata:
  creationTimestamp: "2020-02-20T13:14:24Z"
  name: NAME_OF_SECRET
  namespace: default
  resourceVersion: "430816"
  selfLink: /api/v1/namespaces/default/secrets/jks-old
  uid: 0ce898af-8678-498e-963d-f1537a2ac0c6
type: Opaque

要将其更改为新的keystore.jks,您需要对其进行base64编码并粘贴到旧的(HERE_IS_YOUR_JKS_FILE

您可以通过以下方式获取base64编码的字符串: cat keystore.jks | base64

成功编辑您的秘密后,它会给您一条消息: secret/NAME_OF_SECRET edited


您还可以查看此StackOverflow answer

它显示了一种替换现有configmap的方法,但稍加修改也可以替换一个秘密!

以下示例:

  • 使用keystore-old.jks创建一个秘密:

    $ kubectl create secret generic my-secret --from-file=keystore-old.jks

  • 使用keystore-new.jks更新它:

    $ kubectl create secret generic my-secret --from-file=keystore-new.jks -o yaml --dry-run | kubectl replace -f -


keystore.jks处理为文件可让您使用卷挂载将其挂载到吊舱内的特定位置。

下面的示例YAML创建一个已将机密装入卷的容器:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu
    command:
      - sleep
      - "360000"
    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secret"
  volumes:
  - name: secret-volume
    secret:
      secretName: NAME_OF_SECRET

具体看一下:

    volumeMounts:
    - name: secret-volume
      mountPath: "/etc/secret"
  volumes:
  - name: secret-volume
    secret:
      secretName: NAME_OF_SECRET

这部分将把您的秘密安装在/ etc / secret /目录中。它将以名称keystore.jks

出现在此处。

关于已安装的机密的一句话:

安装的机密会自动更新

当卷中当前消耗的机密被更新时,投影密钥最终也会被更新。 kubelet会在每次定期同步中检查已安装的机密是否新鲜。

-Kubernetes.io: Secrets

如果对此有任何疑问,请告诉我。