Как передать переменную среды в конвейер 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