kubectl을 사용하여 YAML 파일의 여러 줄 업데이트

YAML 파일을 업데이트해야 할 때마다 가장 먼저 떠오르는 것은 sed 또는 awk 또는 perl 등을 사용하는 것이지만 경험을 단순화하는 사내 Kubectlpatch 옵션이 있습니다.



예를 들어 아래spec의 복제본 수와 Nginx 컨테이너 이미지 버전을 업데이트해 보겠습니다. 여러 줄로 되어 있고 다른 옵션을 사용하는 것은 다소 어색할 수 있음을 기억하십시오.

출처: https://kubernetes.io/docs/tasks/run-application/run-stateless-application-deployment/

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80


파일을 적용하자

kubectl apply -f https://k8s.io/examples/application/deployment.yaml


로컬에서 아래 내용으로 patch.yaml라는 파일을 생성해 보겠습니다.

spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3 # Update the number replicas from 2 to 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1 # Update the version of nginx from 1.14.2 to 1.16.1
        ports:
        - containerPort: 80


그런 다음 아래 명령으로 deployment를 패치합니다.

kubectl patch deployment/nginx-deployment --patch "$(cat patch.yaml)"


이 메시지가 표시되면 deployment.apps/nginx-deployment patched . 아래 명령 실행

Kubectl get deployments 
# NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
#nginx-deployment      3/3     3            3           3h

kubectl get deployment nginx-deployment -o yaml


교체된 이전 구성을 확인합니다.

kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replicas":2,"selector":{"matchLabels":{"app":"nginx"}},"template":{"metadata":{"labels":{"app":"nginx"}},"spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx","ports":[{"containerPort":80}]}]}}}}

좋은 웹페이지 즐겨찾기