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

Kubernetes 如何使用kubectl将根证书添加到现有的truststore.jks文件中?,kubernetes,kubectl,Kubernetes,Kubectl,我是kubernetes的新手,正在尝试将根证书添加到现有的secrets truststore.jks文件中。使用get secret mysecret-o yaml。我可以在mysecret中查看truststore文件的详细信息,但不确定如何替换为新的truststore文件或使用最新的根证书编辑现有文件。有人能帮我用kubectl获得正确的命令吗 谢谢秘密是包含少量敏感数据(如密码、令牌或密钥)的对象。有一份关于这个问题的官方文件 假设您通过以下方式创建了您的秘密: $kubectl创建

我是kubernetes的新手,正在尝试将根证书添加到现有的secrets truststore.jks文件中。使用
get secret mysecret-o yaml
。我可以在mysecret中查看truststore文件的详细信息,但不确定如何替换为新的truststore文件或使用最新的根证书编辑现有文件。有人能帮我用kubectl获得正确的命令吗


谢谢

秘密是包含少量敏感数据(如密码、令牌或密钥)的对象。有一份关于这个问题的官方文件

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

$kubectl创建机密的通用名称\u OF \u secret--from file=keystore.jks

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

$kubectl编辑机密名称

它将显示类似于以下内容的
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编码并粘贴到旧的位置(
这里是您的\u jks\u文件

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

成功编辑您的秘密后,它会给您一条消息:
secret/NAME\u OF\u secret已编辑


你也可以看看这个

它展示了一种替换现有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
视为一个文件,可以使用卷装载将其装载到pod内的特定位置

下面的示例
YAML
创建了一个秘密装载为卷的pod:

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在每次定期同步时检查装载的机密是否新鲜

--。


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

您是如何从
truststore.jks
创建现有机密的?您是否尝试通过运行命令
kubectl edit secret mysecret
对其进行编辑?@DawidKruk我已获得mysecret yaml文件,我可以看到存在旧的truststore.jks文件,但不确定如何将新的truststore.jks文件添加到现有的yaml文件中。您能否将现有的
yaml
粘贴到您的问题中(使用模糊的敏感数据)?