• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

K8S YAML 문법 문의

21.11.11 17:14 작성 조회수 182

1

안녕하세요 강의 잘 듣고 있습니다. 다름이 아니오라 YAML 파일을 작성하는데 있어 궁금한 점이 생겨 문의드립니다.
 
오브젝트를 정의하기 위해 개별속성값들에 대한 정보를 기입을 해줘야 하는 것으로 알고 있습니다.
- apiVersion
- kind
- metadata
- spec
 
Q. 위에 기재한 4개 속성은 인터넷에 쉽게 검색하면 나올 수 있지만
- 내부적인 추가 개별속성값 (selector, args.. etc)들은 어떤 것들이 있는지?
- 그것들이 어떤 의미를 내포하는지?
- 아래 속성값들과 어떤 relation을 가지고 있는지?
 
이러한 내부 속성값들에 대한 detail한 부분들을 어디에서 공부할 수 있는지 궁금합니다.
 
Ex) 잘못된 Deployment YAML 문법
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-frontend

spec:
  replicas: 3
  selector:
    matchLabels:
     app: httpd-frontend

  template:
    metadata:
      labels:
        app: httpd-frontend

    spec:
      containers:
      - name: httpd-frontend
        image: httpd:2.4-alpine

# 올바른 문법

apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-frontend

spec:
  replicas: 3
  selector:
    matchLabels:
      name: httpd-frontend

  template:
    metadata:
      labels:
        name: httpd-frontend

    spec:
      containers:
      - name: httpd-frontend
        image: httpd:2.4-alpine

이 경우 matchLabels 가 어떤 의미를 내포하고 내부 속성값들로 어떤 것들을 기입할 수 있는지 궁금하며

왜 selector → matchLabels 내 app이 아닌 name을 기입해야하는지

어떤 상관관계를 가지는지 궁금합니다.

 즉, 최상위 속성값들을 제한 하위 속성값들에 대한 관계 및 의미를 알고 싶은데 어디서 알 수 있는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요!

k8s의 spec에 대해 문의하신것 같습니다.

상세한 spec은 다음 페이지에서 확인하실 수 있습니다.

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#deployment-v1-apps

위 링크를 보면 Deployment 오브젝트는 DeploymentSpec을 참조하고 해당 Spec은 링크를 눌러서 상세하게 확인할 수 있습니다.

보시면 굉장히 다양하고 자세하게 설명된 것을 보실 수 있습니다.

참고로 matchLabels는 key-value 형태로 정해진 형태없이 다양하게 사용하실 수 있습니다.

감사합니다!