Kubernetes 개발을 위한 KinD
이 가이드는 로컬 Kubernetes 개발 환경을 설정하기 위한 크로스 플랫폼 리소스로 제공됩니다.
이 가이드에서는 KinD를 사용할 것입니다. 이는 Docker를 사용하여 Kubernetes 클러스터를 생성하고, 다양한 버전과 여러 노드를 배포하는 쉬운 메커니즘을 제공합니다.
또한, 우리는 nip.io를 사용하여 192.168.1.250.nip.io
와 같은 형식으로 모든 IP 주소를 호스트 이름에 매핑할 수 있습니다. 이는 192.168.1.250
에 매핑됩니다. 설치가 필요하지 않습니다.
Apple 실리콘 (M1/M2)
kind
는 colima
와 함께 사용하여 macOS에서 로컬 Kubernetes 개발 환경을 제공합니다. 이는 M1
및 M2
변형을 포함합니다.
종속성 설치
- MacOS >= 13 (Ventura)이 실행 중인지 확인합니다.
-
colima
를 설치합니다. -
Rosetta
를 설치합니다:softwareupdate --install-rosetta
VM 구축
colima
VM을 생성합니다:
colima start --cpu 6 --memory 16 --disk 40 --profile docker --arch aarch64 --vm-type=vz --vz-rosetta
준비가 완료되면 아래의 준비 단계를 따라 kind
로 GitLab을 설치할 수 있습니다.
VM 관리
colima
VM을 중지하려면:
colima stop --profile docker
VM을 다시 시작하려면:
colima start --profile docker
로컬 시스템을 제거하고 정리하려면:
colima delete --profile docker
준비
필요한 정보
다음의 모든 설치 옵션은 호스트 IP를 알고 있어야 합니다. 이 정보를 찾는 몇 가지 옵션은 다음과 같습니다:
- Linux:
hostname -i
- MacOS:
ipconfig getifaddr en0
en0
을 기본 인터페이스로 사용합니다. 다른 기본 인터페이스가 있는 시스템을 사용하는 경우, 해당 인터페이스 이름을 en0
로 대체하세요.네임스페이스 사용
애플리케이션을 default
가 아닌 네임스페이스에 설치하는 것이 모범 사례로 간주됩니다. kubectl로 helm install
을 실행하기 전에 네임스페이스를 생성합니다:
kubectl create namespace YOUR_NAMESPACE
모든 향후 kubectl 명령에 --namespace YOUR_NAMESPACE
를 추가하여 네임스페이스를 사용합니다. 또는 kubectx 프로젝트의 kubens
를 사용하여 네임스페이스로 문맥 전환하고 추가 입력을 생략할 수 있습니다.
종속성 설치
다음 도구를 설치하기 위해 asdf
를 사용할 수 있습니다 (자세한 정보):
kubectl
helm
kind
kind
는 로컬 Kubernetes 클러스터를 실행하기 위해 Docker를 사용하므로 Docker를 설치했는지 확인하세요.
구성 예제 얻기
GitLab 차트 저장소에는 다음 단계에서 참조되는 모든 예제가 포함되어 있습니다. 저장소를 복제하거나 기존 체크아웃을 업데이트하여 최신 버전을 가져옵니다:
git clone https://gitlab.com/gitlab-org/charts/gitlab.git
Kind 클러스터 시작하기
테스트를 위한 당신의 욕구와 필요에 따라 doc/examples/kind
에 몇 가지 예제 구성이 있습니다.
이 구성들을 검토하고 필요에 따라 조정하세요.
이제 클러스터를 시작할 수 있습니다. 예를 들어:
kind create cluster --config examples/kind/kind-ssl.yaml
GitLab Helm 차트 추가하기
다음 명령어를 따라 시스템을 설정하여 GitLab Helm 차트에 접근하세요:
helm repo add gitlab https://charts.gitlab.io/
helm repo update
배포 옵션
필요에 따라 다음 배포 옵션 중 하나를 선택하세요.
참고: 첫 번째 전체 배포 프로세스는 클라우드 네이티브 GitLab 이미지를 다운로드하는 동안 네트워크와 시스템 자원에 따라 약 10분이 소요될 수 있습니다. 다음 명령어로 GitLab이 실행 중인지 확인하세요:
kubectl --namespace YOUR_NAMESPACE get pods
webservice
파드가 2/2
컨테이너가 있는 READY
상태를 표시할 때 GitLab이 완전히 배포된 것입니다.
SSL이 포함된 NGINX Ingress NodePort
이 방법에서는 kind
를 사용하여 로컬 머신의 포트에 SSL을 활성화하여 NGINX 컨트롤러 서비스의 NodePorts를 노출합니다.
kind create cluster --config examples/kind/kind-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab \
--set global.hosts.domain=(your host IP).nip.io \
-f examples/kind/values-base.yaml \
-f examples/kind/values-ssl.yaml
그런 다음 https://gitlab.(your host IP).nip.io
에서 GitLab에 접근할 수 있습니다.
(선택사항) 루트 CA 추가하기
브라우저가 우리의 자체 서명된 인증서를 신뢰하도록 하려면, 루트 CA를 다운로드하고 신뢰하십시오:
kubectl get secret gitlab-wildcard-tls-ca -ojsonpath='{.data.cfssl_ca}' | base64 --decode > gitlab.(your host IP).nip.io.ca.pem
루트 CA가 다운로드되었으므로, 이를 로컬 체인에 추가할 수 있습니다(플랫폼마다 지침이 다르며 온라인에서 쉽게 찾을 수 있습니다).
참고:
docker login
으로 레지스트리에 로그인해야 하는 경우, 자체 서명된 인증서와 함께 작동하도록 레지스트리를 구성하기 위해 추가 단계를 수행해야 합니다. 추가 지침은 다음에서 찾을 수 있습니다:
SSL이 없는 NGINX Ingress NodePort
이 방법에서는 kind
를 사용하여 로컬 머신의 포트에 SSL을 비활성화하여 NGINX 컨트롤러 서비스의 NodePorts를 노출합니다.
kind create cluster --config examples/kind/kind-no-ssl.yaml
helm upgrade --install gitlab gitlab/gitlab \
--set global.hosts.domain=(your host IP).nip.io \
-f examples/kind/values-base.yaml \
-f examples/kind/values-no-ssl.yaml
http://gitlab.(your host IP).nip.io
에서 GitLab에 접근하세요.
참고:
docker login
으로 레지스트리에 로그인해야 하는 경우, Docker에 불안전한 레지스트리를 신뢰하도록 지시해야 합니다.
DNS 처리하기
이 가이드는 nip.io에 네트워크 접근이 있다고 가정합니다. 만약 이것이 당신에게 사용 불가능하다면, Minikube 문서의 DNS 처리하기 섹션을 참조하시기 바랍니다. 이는 KinD에서도 작동합니다.
참고:
/etc/hosts를 편집할 때는 $(minikube ip)
의 출력 대신에 호스트 컴퓨터의 IP 주소를 사용하는 것을 잊지 마세요.
정리
로컬 시스템을 정리할 준비가 되면 다음 명령어를 실행하세요:
kind delete cluster
알림:
클러스터를 생성할 때 이름을 지정했거나 여러 클러스터를 실행 중인 경우, --name
플래그를 사용하여 특정 클러스터를 삭제할 수 있습니다.