Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Kubernetes
- kotlin coroutine
- IntelliJ
- AWS EKS
- CKA 기출문제
- 기록으로 실력을 쌓자
- 정보처리기사실기 기출문제
- 오블완
- MySQL
- Spring
- 정보처리기사 실기 기출문제
- Pinpoint
- kotlin spring
- Elasticsearch
- 정보처리기사 실기
- kotlin querydsl
- kotlin
- AI
- mysql 튜닝
- 공부
- Java
- CKA
- aws
- APM
- CloudWatch
- 코틀린 코루틴의 정석
- PETERICA
- Linux
- minikube
- 티스토리챌린지
Archives
- Today
- Total
피터의 개발이야기
[kubernetes] command, env 문법 공부 본문
반응형
ㅁ 관련글
ㅇ 쿠버네티스 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문을 수행할 수 있다.
반응형
'Kubernetes > 기초공부' 카테고리의 다른 글
[MSA] 마이크로서비스란? - 배민 마이크로서비스 여행기를 보고... (6) | 2024.02.29 |
---|---|
[MSA] 마이크로서비스 - 분산 트랜잭션 처리를 위한 Saga 패턴 (0) | 2024.02.27 |
[kubernetes] Deployment이란? 서비스 중단, 무중단 배포방법 (0) | 2024.01.21 |
[kubernetes] Pod 로그 확인 (0) | 2024.01.20 |
[kubernetes] Pod 한꺼번에 삭제하기 (0) | 2024.01.19 |
Comments