Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

개발용 로컬 Kubernetes 클러스터 구성

로컬 Docker와 kind를 사용하면 개발 컴퓨터에 다중 노드 Kubernetes 클러스터를 만들고 Apollo의 스포크 연결을 익힐 수 있습니다. 이 구성은 개발용입니다. 운영 환경에는 CNCF 인증을 받은 Kubernetes 배포판을 사용하고 Apollo의 스포크 사전 요건을 충족해야 합니다.

Apollo 스포크의 컴퓨팅 노드는 x86_64를 지원해야 합니다. kind 자체는 Intel Mac과 Apple Silicon Mac을 모두 지원하지만, kind의 ARM 지원과 Apollo 스포크의 아키텍처 요건은 별개입니다. Apollo에 연결할 노드는 스포크 요건에 맞추어 준비합니다.

1. Docker 실행 환경 준비

macOS에서는 Docker Desktop을 설치하고 Applications 폴더의 Docker.app을 실행할 수 있습니다. Docker Desktop에는 Docker Engine과 Docker CLI가 포함됩니다.

설치 파일은 Intel Mac용 Docker Desktop 또는 Apple Silicon Mac용 Docker Desktop을 사용할 수 있습니다. 다운로드한 Docker.dmg를 열고 Docker 아이콘을 Applications로 옮긴 뒤 앱을 실행합니다. 조직의 사용 조건에 맞는 라이선스와 구독을 확인해야 합니다.

brew install docker는 Docker CLI를 설치하는 명령입니다. Docker Engine은 별도로 실행해야 합니다.

다음 명령으로 클라이언트와 서버 정보를 확인할 수 있습니다.

docker version

Client는 Docker CLI 정보이고 Server는 연결된 Docker Engine 정보입니다. kind 클러스터를 만들기 전에 서버에 연결할 수 있어야 합니다. docker --version은 CLI 버전만 보여주므로 엔진 연결 확인과 용도가 다릅니다.

Docker Desktop에서는 다음 명령으로 앱의 실행 상태도 확인할 수 있습니다.

docker desktop status

선택 사항: Docker 튜토리얼 컨테이너

Docker의 입문용 컨테이너를 실행하려면 다음 명령을 사용할 수 있습니다.

docker run -d -p 80:80 docker/getting-started

이 명령은 호스트의 80번 포트로 튜토리얼 컨테이너를 실행합니다. Docker Engine을 시작하는 명령은 아니며 Apollo 스포크 연결의 필수 단계도 아닙니다.

2. kind와 kubectl 설치

kind는 Docker 컨테이너를 Kubernetes 노드로 사용하는 로컬 클러스터 도구입니다. macOS에서 Homebrew를 사용한다면 다음과 같이 설치할 수 있습니다.

brew install kind
brew install kubectl

직접 바이너리를 내려받는 경우에는 관리할 수 있는 안전한 디렉터리에 보관하고 실행 경로를 설정합니다. kubectl은 이후 클러스터 상태 조회와 초기 매니페스트 적용에 사용합니다.

kubectl version --client

3. 클러스터 구성 파일 작성

Apollo에 클러스터를 등록할 때 사용할 파일을 보관할 새 디렉터리를 만듭니다. 바탕화면이나 문서 폴더 아래처럼 위치를 알고 관리할 수 있는 곳을 선택합니다.

이 디렉터리에 cluster.yml 파일을 만들고 다음 내용을 저장합니다.

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: control-plane
  - role: control-plane
  - role: worker
  - role: worker
  - role: worker

이 구성은 제어 플레인 노드 3개와 워커 노드 3개를 만듭니다. Apollo에는 다중 노드 클러스터가 필요합니다. 노드 개수와 별도로 Docker 실행 환경에 할당한 CPU와 메모리가 스포크의 자원 요건을 충족하는지도 확인해야 합니다.

4. 클러스터 생성

cluster.yml을 저장한 디렉터리에서 다음 명령을 실행합니다.

kind create cluster --config cluster.yml

설치와 시작이 끝날 때까지 기다린 뒤 노드를 조회합니다.

kubectl get nodes

기본 이름으로 생성한 이 예시의 클러스터에서는 다음 노드 구성과 준비 상태를 확인합니다.

노드 이름기대 상태역할
kind-control-planeReady제어 플레인
kind-control-plane2Ready제어 플레인
kind-control-plane3Ready제어 플레인
kind-workerReady워커
kind-worker2Ready워커
kind-worker3Ready워커

명령 출력의 AGE와 VERSION은 생성 시각과 설치한 Kubernetes 버전에 따라 달라집니다.

5. Apollo에 연결

클러스터가 준비되면 Apollo의 배포 환경 생성 워크플로를 시작합니다.

스포크 배포 환경 연결과 새 배포 환경 생성 및 연결을 따라 팀 역할, 에이전트 설치와 허브 연결을 구성합니다. 로컬 클러스터에서 LoadBalancer가 필요한 차트를 사용할 때의 문제는 클러스터 안에서 문제 조사하기에서 설명합니다.