我是kubernetes的新手,正在尝试将根证书添加到我现有的secrets truststore.jks文件中。使用get secret mysecret -o yaml
。我能够查看mysecret中信任库文件的详细信息,但不确定如何用新的信任库文件替换或如何使用最新的根证书编辑现有的信任库文件。谁能帮助我使用Kubectl来获取正确的命令来执行此操作?
谢谢
答案 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会在每次定期同步中检查已安装的机密是否新鲜。
如果对此有任何疑问,请告诉我。