1

我有一个带有内联明文配置的服务,它需要存储在 Kubernetes 机密中的某些信息。@pulumi/kubernetes可以使用什么API 方法来访问原始 kubernetes 秘密值?

4

3 回答 3

3

使用k8s.core.v1.Secret.get(pulumiName, secretName)secretName可以包含namespace/as 前缀)。

每个 Pulumi 资源都有一个get()方法

例如:token从 a获取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"]
    })
于 2019-09-06T17:29:52.823 回答
0

该 API 看起来像是Kubernetes API的镜像,特别是有一个core/v1.Secret对象,其中包含 secret data。这些值是 base64 编码的。

(除非 RBAC 禁止,否则您通常kubectl get secret -o yaml secretname可以看到相同的东西......Kubernetes 的秘密只是如此秘密。)

如果您在服务的上下文中运行它,那么使用从相关秘密值设置的环境变量启动服务可能会更容易,使用 YAML 片段,如

env:
- name: SECRET_USERNAME
  valueFrom:
    secretKeyRef:
      name: test-secret
      key: username
于 2018-09-26T23:09:29.010 回答
0

简短的回答是,我认为它不会让您看到秘密,而是在您想使用它的地方使用参考:部署、StatefulSets、DaemonSets、Pods 等。从安全的角度来看,这是有道理的。

您可以在此处查看创建密钥的示例

于 2018-09-26T21:26:21.357 回答