🌌[쿠버네티스 아키텍처] 3. API 호출

원하는 상태(desired stats)를 다양한 오브젝트(objects)로 정의(spec)하고 API 서버에 yaml 형식으로 전달한다.

44BIT님의 [초보를 위한 쿠버네티스 안내서] 쿠버네티스 아키텍처 강의를 듣고 정리한 내용입니다.

1. API 호출 방법

원하는 상태(desired stats)를 다양한 오브젝트(objects)정의(spec)하고 API 서버에 yaml 형식으로 전달한다.

2. 쿠버네티스의 흐름 요약

위 그림은 지난 글에서 배운 ReplicaSet을 생성하는 흐름을 나타내고 있는데, 사실 이 과정이 쿠버네티트의 전부라고 봐도 된다. 이 과정 속에서 어떤 오브젝트가 있고, 어떤 스펙이 있는지, 그래서 띄우면 어떻게 되는지를 이해하면 쿠버네티스를 사용할 수 있는 것이다.

3. 오브젝트 YAML 명세 작성법

예를 들어 pod 오브젝트를 띄우고 싶을 때 spec을 어떻게 yaml 형식으로 작성하는지 알아보자.

apiVersion: v1
kind: Pod
metadata:
    name: example
spec:
    containers:
    - name: busybox
        image: busybox:1.25

key:value 형식으로 이렇게 명세를 작성하면, API 서버가 이 명세를 보고 ectd에 정보를 저장하고 각 컨트롤러들이 동작을 하는 것이다. 게시글 최상단의 그림은 ReplicaSet의 스펙을 작성하는 예시이다.

아래는 ArgoCD 라는 커스텀 리소스를 어떻게 호출하는지에 대한 예시인데, 어떤 오브젝트이던지 apiVersion, kind, metadata 를 작성하는 방법은 동일하다. 그리고 종류에 따라 spec 을 그에 맞게 작성해주면 된다.

세 종류의 API를 호출하는 방법을 알아봤는데, 보다시피 형식 자체는 동일하다. spec 만 각 오브젝트의 스펙으로 작성해주면 되는 것이다.

4. 요약 및 정리

yaml 포맷에 들어가는 내용을 정리를 해보자.

  • apiVersion : 종류가 많을 수 있다. 배포 버전, 앱의 버전, 네트워크 버전...등등

  • kine : 오브젝트의 종류를 적어준다. Pod, Depolyment, Service, Ingress..

  • metadata : name, namespace, label을 설정할 수 있다.

  • spec : 각종 설정에 대한 정보를 담고 있는데, 어떤 오브젝트냐에 따라 달라질 수 있기 때문에 각 종류의 스펙을 보고 작성해주면 된다.

  • status : 각종 설정의 현재 최신 상태를 read-only로 관리하는 항목이다. 컨트롤러가 현재상태를 조회할 때 이 status 를 확인한다.

이제 쿠버네티스 안내서의 워드프레스 배포 실습을 해보면 조금 더 감이 올 것 같다.

Last updated