Xiangxiang Ma
07/06/2023, 6:03 PMPRIMARY_CONTAINER_NAME = "primary"
FLYTE_POD_SPEC = V1PodSpec(
containers=[
V1Container(
env=[
V1EnvVar(
name="K8S_POD_NAME",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.name",
)
),
),
V1EnvVar(
name="K8S_POD_UID",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.uid",
)
),
),
V1EnvVar(
name="TEST_ENV",
value="test-test",
),
],
)
],
)
task_config = Pod(pod_spec=FLYTE_POD_SPEC, primary_container_name=PRIMARY_CONTAINER_NAME)
Unfortunately, none of the environment variables were set using the above code. I'm not sure if I'm doing something wrong or if there's something missing. Is it possible to set up env vars this way?Yee
Dan Rammer (hamersaw)
07/07/2023, 5:29 AMPRIMARY_CONTAINER_NAME = "primary"
FLYTE_POD_SPEC = V1PodSpec(
containers=[
V1Container(
env=[
V1EnvVar(
name="K8S_POD_NAME",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.name",
)
),
),
V1EnvVar(
name="K8S_POD_UID",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.uid",
)
),
),
V1EnvVar(
name="TEST_ENV",
value="test-test",
),
],
)
],
)
task_config = Pod(pod_spec=FLYTE_POD_SPEC, primary_container_name=PRIMARY_CONTAINER_NAME)
@task(task_config=task_config)
def my_pod_task_with_env() -> str:
return "hello world!"
results in :
(.venv) hamersaw@ragnarok:~/Development/flytetest$ pyflyte run --remote pod.py my_pod_task_with_env
Failed with Unknown Exception <class 'ValueError'> Reason: Invalid value for `name`, must not be `None`
Invalid value for `name`, must not be `None`
however, when I add the name to the V1Container
like:
PRIMARY_CONTAINER_NAME = "primary"
FLYTE_POD_SPEC = V1PodSpec(
containers=[
V1Container(
name=PRIMARY_CONTAINER_NAME,
env=[
V1EnvVar(
name="K8S_POD_NAME",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.name",
)
),
),
V1EnvVar(
name="K8S_POD_UID",
value_from=V1EnvVarSource(
field_ref=V1ObjectFieldSelector(
field_path="metadata.uid",
)
),
),
V1EnvVar(
name="TEST_ENV",
value="test-test",
),
],
)
],
)
task_config = Pod(pod_spec=FLYTE_POD_SPEC, primary_container_name=PRIMARY_CONTAINER_NAME)
@task(task_config=task_config)
def my_pod_task_with_env() -> str:
return "hello world!"
then all of the environment variables are correctly set on the k8s Pod:
hamersaw@ragnarok:~$ kubectl -n flytesnacks-development get pods f617b2923f70244caa47-podmypodtaskwithenv-0 -o yaml
...
spec:
affinity: {}
containers:
...
env:
- name: K8S_POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: K8S_POD_UID
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.uid
- name: TEST_ENV
value: test-test
Victor Churikov
07/09/2023, 7:43 AMXiangxiang Ma
07/17/2023, 8:29 AM