Как передать переменную среды в конвейер kubeflow?

Я хочу, чтобы переменная была доступна gcr.io/******/serve_model:lat5 Изображение, которое является аргументом gcr.io/******/deployservice:lat2

Первоначально я пытался передать переменную в качестве аргумента, но это не сработало, поэтому я пытаюсь передать ее как переменную среды.
Моя переменная среды будет URL-адресомGCP ведро, откуда мой serve_model получит доступ к .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 ответа

Решение

Публикация этого как Вики Сообщества для лучшей видимости, поскольку оригинальный плакат смог передать эту переменную.

Это лучшее Kubernetes способ передать значение.

ConfigMap - это словарь параметров конфигурации. Этот словарь состоит из пар "ключ-значение" строк. Kubernetes предоставляет эти значения вашим контейнерам. ConfigMap хранит настройки конфигурации для вашего кода. Храните строки подключения, общедоступные учетные данные, имена хостов и URL-адреса в вашем ConfigMap.

Вы можете создать ConfigMapразными способами (из файла, вручную и т. д.). Более подробную информацию можно найти здесь.

Решение

Согласно комментарию оригинального постера:

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.

add_env_variable() является функцией Container объект, представленный как свойство ContainerOp.

Так что что-то вроде ниже будет работать. См. Код kfp dsl здесь

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))

Вы можете проверить это, проверив YAML в zip-архиве на предмет env раздел под -container

  - 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
Другие вопросы по тегам