쿠버네티스를 사용할 때 간단하게 YAML을 create/apply 해야할 때가 많습니다. 하지만 YAML 파일을 생성하고, YAML 파일을 배포하고, YAML 파일을 삭제하는 것은 번거로운 일 입니다. 이 때 터미널에서 STDIN 타입으로 즉석 YAML을 만들어 사용할 수 있다면 간단하게 작업을 수행할 수 있습니다. 여기서 주의할 점은 단순한 작업에만 적절하다는 것 입니다. 만약 재현이 필요한 일이고, 기록해야 할 이유가 있다면 YAML로 저장하는 걸 강력이 권합니다. 이 블로그에서는 정말 바쁠 때 유용하게 쓸 수 있는 YAML 파일 없이 리소스 생성하기 (k8s+STDIN+YAML)에 대해서 알아보겠습니다.
✨ 소개
모든 일에 YAML을 만드는 건 힘들고 귀찮은 일 입니다. 리눅스의 STDIN (Standard Input) 방식으로 k8s 리소스를 바로 명시할 수 있는 방법이 있습니다. k8s 공식문서에도 소개가 되어 있습니다. 하나만 예시로 든다면 다음과 같습니다.
# Create multiple YAML objects from stdin
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000000"
---
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
EOF
'-f - << EOF .... EOF' 로 되어 있는 부분이 줄나눔을 포함한 YAML을 입력할 수 있는 STDIN 구문입니다. 이렇게 멀티라인으로 명령어를 만들어 두면, 가독성이 좋은 코드를 복붙해서 바로 실행하기 편하다는 장점이 있습니다. 회사 문서에 k8s 앱 설치법, 설정법 등을 기록할 때 아주 유용합니다.
여기서 주의할 점은 단순한 작업에만 적절하다는 것 입니다. 만약 재현이 필요한 일이고, 기록해야 할 이유가 있다면 YAML로 저장하는 걸 강력이 권합니다.
💾 YAML을 저장 후 배포할 때
YAML을 생성합니다.
vim my-awesome-pod.yaml
파드 내용을 입력하고 저장(:wq)합니다.
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
그리고 YAML을 배포합니다.
kubectl apply -n awesome-namespace -f my-awesome-pod.yaml
네임스페이스를 확인합니다. 동작이 apply가 아닌 create, delete 이라면 그에 맞게 수정합니다.
⏩ YAML 저장 없이 배포할 때
터미널에 다음 명령어를 복붙합니다. 아직 ENTER는 입력하지 않습니다! 그리고 네임스페이스를 확인합니다. 동작이 apply가 아닌 create, delete 이라면 그에 맞게 수정합니다.
kubectl apply -n awesome-namespace -f - << EOF
# YAML HERE!!
EOF
우리가 실행하고 싶은 YAML은 다음과 같습니다.
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
이제 YAML을 복사하여 '# YAML HERE!!' 을 지우고 붙여넣습니다. 그럼 다음과 같은 모습이 됩니다.
kubectl apply -n awesome-namespace -f - << EOF
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
EOF
이대로 ENTER를 입력하여 실행합니다. 정상적으로 실행이 되었다면 다음과 같이 나옵니다.
만약 문서로 작성하고 싶다면 명령어 전체를 코드 블럭에 적어두고 앞뒤로 설명을 추가하시면 됩니다.
'DevOps' 카테고리의 다른 글
🐙 GitOps#2: Argo CD와 Git으로 커스텀 차트 배포하기 (1) | 2024.11.25 |
---|---|
🐙 GitOps#1: Argo CD와 함께 GitOps 시작하기 (1) | 2024.11.21 |
🐶 k9s: 쿠버네티스 클러스터 관리를 위한 커맨드라인 UI 도구를 소개합니다 (1) | 2024.11.10 |
☸️ 로컬 쿠버네티스: 연습용 쿠버네티스 클러스터 사용법을 소개합니다 (1) | 2024.11.09 |
🔮 오브스택(OrbStack): 당신의 느린 맥을 빠르게 해 줄 쿠버네티스 도구를 소개합니다 (0) | 2024.11.08 |
어제보다 오늘 더 공부 잘하는 코딩냥이. 어제보다 오늘 더 일 잘하는 코딩냥이.
포스팅이 좋았다면, 오류를 발견했다면, 더 좋은 아이디어가 있다면 댓글 부탁드립니다!