🍳머리말
종속 환경 변수 정의하는 설명글입니다. k8s cluster, node 3개 이상 필요합니다.
📕Container를 위한 종속 환경 변수 정의
📔 설명
pod 생성 시, pod 안에서 동작하는 container를 위한 종속 환경 변수를 설정할 수 있습니다. 종속 환경 변수를 설정하려면, 구성 file에 env의 value로 ${변수명}을 사용합니다.
📔 예제
한 개의 container를 실행하는 pod 생성. pod를 위한 구성 file은 일반적인 방식으로 정의된 종속 환경 변수를 정의합니다. 다음은 pod를 위한 구성 manifest 예시입니다.
dependent-envars.yaml
apiVersion: v1
kind: Pod
metadata:
name: dependent-envars-demo
spec:
containers:
- name: dependent-envars-demo
args:
- while true; do echo -en '\n'; printf UNCHANGED_REFERENCE=$UNCHANGED_REFERENCE'\n'; printf SERVICE_ADDRESS=$SERVICE_ADDRESS'\n';printf ESCAPED_REFERENCE=$ESCAPED_REFERENCE'\n'; sleep 30; done;
command:
- sh
- -c
image: busybox
env:
- name: SERVICE_PORT
value: "80"
- name: SERVICE_IP
value: "172.17.0.1"
- name: UNCHANGED_REFERENCE
value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
- name: PROTOCOL
value: "https"
- name: SERVICE_ADDRESS
value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
- name: ESCAPED_REFERENCE
value: "$$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
pod 생성
kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yaml
또는
kubectl apply -f 만든yaml명
pod 생성 확인
kubectl get pods dependent-envars-demo
container log 확인
kubectl logs pod/dependent-envars-demo
위에서 보듯이, SERVICE_ADDRESS는 올바른 종속성 참조, UNCHANGED_REFERENCE는 잘못된 종속성 참조를 정의했으며 ESCAPED_REFERENCE는 종속성 참조를 건너뜁니다.
환경 변수가 참조될 때 해당 환경 변수가 미리 정의되어 있으면 SERVICE_ADDRESS의 경우와 같이 참조를 올바르게 해석할 수 있습니다.
환경 변수가 정의되지 않았거나 일부 변수만 포함된 경우, 정의되지 않은 환경 변수는 UNCHANGED_REFERENCE의 경우와 같이 일반 문자열로 처리됩니다. 일반적으로 환경 변수 해석에 실패하더라도 컨테이너의 시작을 막지는 않습니다.
$(VAR_NAME) 구문은 이중 $로 이스케이프될 수 있습니다. (예: $$(VAR_NAME)) 이스케이프된 참조는 참조된 변수가 정의되었는지 여부에 관계없이 해석을 수행하지 않습니다. 이는 위의 ESCAPED_REFERENCE를 통해 확인할 수 있습니다.
📕참조
'Cloud' 카테고리의 다른 글
(Kubernetes) - application에 data 주입 4 (0) | 2021.12.06 |
---|---|
(Kubernetes) - application에 data 주입 3 (0) | 2021.12.06 |
(Kubernetes) - application에 data 주입 1 (0) | 2021.12.06 |
(Kubernetes) - Custom Resource (0) | 2021.12.01 |
(Kubernetes) - operator pattern (0) | 2021.11.17 |