Kubernetes/기초공부
[kubernetes] command, env 문법 공부
기록하는 백앤드개발자
2024. 1. 24. 23:56
반응형
ㅁ 관련글
ㅇ 쿠버네티스 Docs - 애플리케이션에 데이터 주입하기
ㅁ 들어가며
쿠버네티스를 공부하면서 command와 env의 쓰임새와 문법이 다양함을 알 수 있었다. 그래서 예제를 중심으로 문법이 어떻게 쓰일 수 있는지 정리해 보았다. command와 env를 설명해 주는 쿠버네티스 Docs - 애플리케이션에 데이터 주입하기를 토대로 정리해 보았다.
ㅁ 기본 command - 파드를 생성할 때 커맨드와 인자를 정의하기
# 기본 command: 인자값은 String이어야 한다.
command:
- sleep
- "5000"
# Array 형태 command: 환경변수를 프린트
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: debian
image: debian
command:
- sleep
- "5000"
ㄴ 컨테이너를 위한 커맨드와 인자를 정의할 수 있다.
ㄴ command에 인자값을 줄 때에는 String으로 주어야 한다.
- 5000 X
- "5000" O
ㅁ shell command - 셸 안에서 커맨드 실행하기
# shell 적용 command
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
ㅁ 환경변수
ㅇ 기본 name-value - 컨테이너를 위한 환경 변수 정의하기
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/node-hello:1.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
- name: DEMO_FAREWELL
value: "Such a sweet sorrow"
# 환경변수를 받아 command 실행
env:
- name: MESSAGE
value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]
ㄴ 환경변수를 받아 커멘트를 실행함.
apiVersion: v1
kind: Pod
metadata:
name: print-greeting
spec:
containers:
- name: env-print-demo
image: bash
env:
- name: GREETING
value: "Warm greetings to"
- name: HONORIFIC
value: "The Most Honorable"
- name: NAME
value: "Kubernetes"
command: ["echo"]
args: ["$(GREETING) $(HONORIFIC) $(NAME)"]
ㄴ command array와 환경변수를 응용하여 사용
apiVersion: v1
kind: Pod
metadata:
name: dependent-envars-demo
spec:
containers:
- name: dependent-envars-demo
image: busybox:1.28
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)"
command:
- sh
- -c
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;
ㄴ 이미 선언되어 있는 환경변수를 받아서 env로 설정하여 컨테이너에 전달하고 command문을 수행할 수 있다.
반응형