AirflowKubernetesPodOperator如何访问传递给Pod的秘钥?
创始人
2024-08-02 05:31:47
0

通过在kubernetes资源定义中定义秘钥的方式,可以传递秘钥到Pod中。要访问这些秘钥,在操作符中必须将秘钥名称传递给env_vars并将其设置为PodSpec中的环境变量。下面是一个简单的代码示例,演示如何在KubernetesPodOperator中访问传递给Pod的秘钥。

from kubernetes.client import models as k8s

secrets = [
    k8s.V1Secret(
        metadata=k8s.V1ObjectMeta(name='my-secret'),
        data={'my-password': 'password123'}
    )
]

secrets_volume = k8s.V1Volume(
    name='my-secret',
    secret=k8s.V1SecretVolumeSource(secret_name='my-secret')
)

volume_mounts = [
    k8s.V1VolumeMount(
        name='my-secret',
        mount_path='/mnt/secrets',
        read_only=True
    )
]

env_vars = [
    k8s.V1EnvVar(
        name='MY_PASSWORD',
        value_from=k8s.V1EnvVarSource(
            secret_key_ref=k8s.V1SecretKeySelector(
                key='my-password',
                name='my-secret'
            )
        )
    )
]

operator = KubernetesPodOperator(
    task_id='my-task',
    name='my-pod',
    image='my-image',
    secrets=secrets,
    env_vars=env_vars,
    volume_mounts=volume_mounts,
    volumes=[secrets_volume]
)

在上面的示例中,将传递名为'my-secret”的秘钥,其中包含一个名为'my-password”的密钥和相应的值。然后,为Pod定义了一个名为'my-secret”的卷,并将其挂载到'/mnt/secrets”目录中,并将其设置为只读。在env_vars中设置了一个环境变量,名称为'MY_PASSWORD”,并使用'my-secret”和'my-password”作为秘钥的名称和密钥的名称来从Pod中读取它的值。

在Pod中,可以使用以下方式访问此环境变量。

import os

my_password = os.environ['MY_PASSWORD']
print(my_password)

相关内容

热门资讯

安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
omi系统和安卓系统哪个好,揭... OMI系统和安卓系统哪个好?这个问题就像是在问“苹果和橘子哪个更甜”,每个人都有自己的答案。今天,我...
原生ios和安卓系统,原生对比... 亲爱的读者们,你是否曾好奇过,为什么你的iPhone和安卓手机在操作体验上有着天壤之别?今天,就让我...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...
Alertmanager在pr... 首先,在Prometheus配置文件中,确保Alertmanager URL已正确配置。例如:ale...