如何将凭据 json 文件发送到 kubernetes pod?

Ale*_*llo 1 heartbeat elasticsearch kubernetes

我在 Kubernetes 集群中使用 Elastic Heartbeat。

我正在尝试将谷歌云平台模块设置为 Heartbeat,文档说:

    metricbeat.modules:
    - module: googlecloud
      metricsets:
        - compute
      region: "us-"
      project_id: "your project id"
      credentials_file_path: "your JSON credentials file path"
      exclude_labels: false
      period: 1m
Run Code Online (Sandbox Code Playgroud)

我有凭据.json 文件来访问 GCP,但是,我无法使用 Heartbeat 将此凭据放入 kubernetes pod 中。

我尝试使用 kubernetes 秘密,但模块配置不允许这样做。只需允许放置一条路径即可。

如何将此凭据放入我的心跳 Pod 中?

谢谢!

Ale*_*llo 5

解决了!

我使用credentials.json 文件创建了一个秘密,并将该秘密作为volumen 安装在pod 中。

配置:

秘密.yaml:

apiVersion: v1
kind: Secret
metadata:
  name: credentials-secret
type: Opaque
stringData:
  sa_json: |
    {
      "type": "service_account",
      "project_id": "erased",
      "private_key_id": "erased",
      "private_key": "-----BEGIN PRIVATE KEY-----erased-----END PRIVATE KEY-----\n",
      "client_email": "erased",
      "client_id": "erased",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://oauth2.googleapis.com/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xxxxx.iam.gserviceaccount.com"
    }

Run Code Online (Sandbox Code Playgroud)

部署.yaml:

---
          volumeMounts:
          - mountPath: /etc/gcp
            name: service-account-credentials-volume
            readOnly: true
---
---
---
        volumes:
        - name: service-account-credentials-volume
          secret:
            secretName: credentials-secret
            items:
            - key: sa_json
              path: credentials.json
Run Code Online (Sandbox Code Playgroud)