在 YAML 中定义/更改 Kubernetes SSH 密钥文件名

问题描述

我有一个秘密:

apiVersion: v1
kind: Secret
Metadata:
  name: secret-ssh-auth
type: kubernetes.io/ssh-auth
data:
  ssh-privatekey: |
          SEVMTE9PT09PT09PT09PT09PT09PCg==

和部署:

apiVersion: apps/v1
kind: Deployment
Metadata:
  name: Nginx-deployment
  labels:
    app: Nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: Nginx
  template:
    Metadata:
      labels:
        app: Nginx
    spec:
      containers:
      - name: Nginx
        image: Nginx:1.14.2
        ports:
        - containerPort: 80
        volumeMounts:
          - name: secret-ssh-auth
            mountPath: /root/.ssh
      volumes:
      - name: secret-ssh-auth
        secret:
          secretName: secret-ssh-auth
          defaultMode: 0400

它创建了一个路径为 /root/.ssh/ssh-privatekey文件,而我想改为使用 /root/.ssh/id_rsa 名称

我知道我们可以通过运行 kubectl 命令来解决它,但我想在 YAML 文件中处理它。 那么,如何通过 YAML 文件做到这一点?

解决方法

根据 Kubernetes 文档,ssh-privatekey 键是必需的,在这种情况下,您可以通过 stringData 键将其留空,然后通过 data 键定义另一个键,如下所示:

apiVersion: v1
kind: Secret
metadata:
  name: secret-ssh-auth
type: kubernetes.io/ssh-auth
stringData:
  ssh-privatekey: |
          -
data:
   id_rsa: |
          SEVMTE9PT09PT09PT09PT09PT09PCg==