如何在 GKE 上创建 CloudSQL 代理凭据作为机密

sha*_*vah 7 google-cloud-sql kubernetes google-kubernetes-engine cloud-sql-proxy

我已按照https://cloud.google.com/sql/docs/mysql/connect-kubernetes-engine 中的步骤设置 MySQL 用户帐户和服务帐户。我已经下载了包含我的凭据的 JSON 文件。

我的问题是在我从网站复制的代码中:

- name: cloudsql-proxy
  image: gcr.io/cloudsql-docker/gce-proxy:1.11
  command: ["/cloud_sql_proxy",
            "-instances=<INSTANCE_CONNECTION_NAME>=tcp:3306",
            "-credential_file=/secrets/cloudsql/credentials.json"]
  securityContext:
    runAsUser: 2  # non-root user
    allowPrivilegeEscalation: false
  volumeMounts:
    - name: cloudsql-instance-credentials
      mountPath: /secrets/cloudsql
      readOnly: true
Run Code Online (Sandbox Code Playgroud)

指定了路径 /secrets/cloudsql/credentials.json ,我不知道它来自哪里。

我想我应该通过以下方式创建凭据作为秘密

kubectl create secret generic cloudsql-instance-credentials --from-file=k8s\secrets\my-credentials.json

但在那之后我不知道该怎么办。这个秘密是如何成为路径的/secrets/cloudsql/credentials.json

gri*_*ies 4

您必须在规范下添加一个卷条目,如下所示:

  volumes:
    - name: cloudsql-instance-credentials
      secret:
        defaultMode: 420
        secretName: cloudsql-instance-credentials
Run Code Online (Sandbox Code Playgroud)

注意:这属于部署规范而不是容器规范。

编辑:更多信息可以在这里找到: https: //kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#create-a-pod-that-has-access-to-the-卷中的秘密数据感谢 Shalvah 指出了这一点。