使用除文件名以外的 --from-file 时如何设置 kubernetes 密钥名称?

How to set kubernetes secret key name when using --from-file other than filename?

在使用 --from-file 而不是文件名时,是否可以设置 kubernetes 密钥名称?

我有一堆不同的配置文件,我在我的容器中用作 secrets.json。但是,为了组织我的文件,none 个文件在我的主机上被命名为 secrets.json。例如 secrets.dev.jsonsecrets.test.json。我的应用程序只知道读取 secrets.json.

当我使用 kubectl create secret generic my-app-secrets --from-file=secrets.dev.json 创建密钥时,这导致密钥名称为 secrets.dev.json 而不是 secrets.json

我正在将我的秘密内容作为文件安装(这是从 Docker swarm 迁移而来的遗留物)。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  template:
    spec:
      volumes:
      - name: my-secret
        secret:
          secretName: my-app-secrets
      containers:
        - name: my-app
          volumeMounts:
            - name: my-secret
              mountPath: "/run/secrets/secrets.json"
              subPath: "secrets.json"

因为 secrets.json 不作为键存在,因为它使用了文件名 (secrets.dev.json),它最终变成了一个目录。我最终得到了这个挂载路径:/run/secrets/secrets.json/secrets.dev.json.

我希望能够将密钥名称设置为 secrets.json,而不是使用 secrets.dev.json 的文件名。

您可以指定键名[--from-file=[key=]source]

kubectl create secret generic my-app-secrets --from-file=secrets.json=secrets.dev.json

这里,secrets.json是键名,secrets.dev.json是来源