Pulumi: получить секретное значение kubernetes

У меня есть служба со встроенной конфигурацией открытого текста, которая требует определенной информации, которая хранится в секретах Kubernetes. Какие @pulumi/kubernetes Метод API можно использовать для доступа к необработанным секретным значениям kubernetes?

2 ответа

Использовать k8s.core.v1.Secret.get(pulumiName, secretName) (secretName может содержать namespace/как префикс).

На каждом ресурсе Pulumi есть get()метод.

Например: получите token из kubernetes.io/service-account-token:

import * as k8s from "@pulumi/kubernetes";
​
type KubernetesSecretData = { [key: string]: string }
​
const namespace = 'kube-public'
const secretName = 'default-token-tdcdz'
​
export const token =
    k8s.core.v1.Secret.get('testSecret',`${namespace}/${secretName}`)
        .data.apply(v => {
        return (<KubernetesSecretData> v)["token"]
    })

Этот API выглядит так, как будто он отражает API Kubernetes, и, в частности, есть объект core/v1.Secret, который включает в себя секрет data, Значения в кодировке base64.

(Если RBAC не запрещает это, вы можете вообще kubectl get secret -o yaml secretname чтобы увидеть то же самое... секреты Kubernetes только так секрет.)

Если вы запускаете это в контексте службы, вероятно, проще запустить службу с переменными среды, установленными из соответствующих секретных значений, используя фрагмент YAML, такой как

env:
- name: SECRET_USERNAME
  valueFrom:
    secretKeyRef:
      name: test-secret
      key: username

Короткий ответ: я думаю, что он не позволяет вам увидеть секрет, но использует ссылку там, где вы хотите его использовать: Deployments, StatefulSets, DaemonSets, Pods и т. Д. Это имеет смысл с точки зрения безопасности.

Вы можете увидеть пример создания секрета здесь

Другие вопросы по тегам