如何在kubeflow管道中传递环境变量?

时间:2019-12-03 05:03:47

标签: python kubernetes kubeflow kubeflow-pipelines

我希望gcr.io/******/serve_model:lat5可以访问变量,该图像是gcr.io/******/deployservice:lat2的参数

最初,我尝试将变量作为参数传递,但是它没有用,所以我试图将其作为环境变量传递。
我的环境变量将是GCP存储桶的URL,我的serve_model将通过该URL访问.sav模型文件。

        name='web-ui',
        image='gcr.io/******/deployservice:lat2',
        arguments=[
        '--image', 'gcr.io/******/serve_model:lat5',
        '--name', 'web-ui',
        '--container-port', '8080',
        '--service-port', '80',
        '--service-type', "LoadBalancer"
        ]
        ).add_env_variable(V1EnvVar(name='modelurl', value=Model_Path))

2 个答案:

答案 0 :(得分:0)

add_env_variable()Container对象的功能,该对象公开为ContainerOp的属性。

所以下面的方法可以工作。请参阅kfp dsl代码here

model_path = 'gcp://dummy-url'
container_op = ContainerOp(name='web-ui',
                               image='gcr.io/******/deployservice:lat2',
                               arguments=[
                                   '--image', 'gcr.io/******/serve_model:lat5',
                                   '--name', 'web-ui',
                                   '--container-port', '8080',
                                   '--service-port', '80',
                                   '--service-type', "LoadBalancer"]
                               )
container_op.container.add_env_variable(V1EnvVar(name='model_url', value=model_path))

您可以通过检查zip中env-container部分的YAML来验证这一点

  - container:
      args:
      - --image
      - gcr.io/******/serve_model:lat5
      - --name
      - web-ui
      - --container-port
      - '8080'
      - --service-port
      - '80'
      - --service-type
      - LoadBalancer
      env:
      - name: modelurl
        value: gcp://dummy-url <--the static env value
      image: gcr.io/******/deployservice:lat2

答案 1 :(得分:0)

将其发布为Community Wiki以获得更好的可见性,因为原始海报能够传递此变量。

这是传递价值的最佳Kubernetes方法。

  

ConfigMap是配置设置的词典。这个   字典由字符串的键值对组成。 Kubernetes提供   这些值添加到您的容器中。 ConfigMap存储配置   代码的设置。存储连接字符串,公共凭据,   主机名和ConfigMap中的URL。

您可以通过多种方式(从文件,手动等)创建ConfigMap。可以找到更多信息here

解决方案

根据原始海报评论:

1。。使用管道python文件和container函数add_env_variable传递环境变量:

web_ui.container.add_env_variable(V1EnvVar(name='modelurl', value=Model_Path))

2。。准备命令将创建具有适当值的配置映射:

kubectl create configmap modelurl --from-literal=modelurl=Model_Path

3。。将上一个命令放在将在Kubeflow中使用的脚本中。