KinD를 사용한 Kubernetes 개발
본 안내서는 로컬 Kubernetes 개발 환경을 설정하기 위한 크로스 플랫폼 리소스로 프로덕션되었습니다. 본 안내서에서는 KinD를 사용할 것입니다. 이는 Docker를 사용하여 Kubernetes 클러스터를 생성하고 여러 버전 및 여러 노드를 배포할 수 있는 간단한 매커니즘을 제공합니다.
또한 nip.io를 사용할 것인데, 이를 사용하면 192.168.1.250.nip.io
와 같은 형식으로 IP 주소를 호스트 이름에 매핑할 수 있습니다. 설치가 필요하지 않습니다.
Apple 실리콘 (M1/M2)
kind
는 macOS, M1
및 M2
등을 포함한 로컬 Kubernetes 개발 환경을 제공하기 위해 colima
와 함께 사용할 수 있습니다.
의존성 설치
- MacOS 13 (Ventura) 이상을 실행 중인지 확인하십시오.
-
colima
를 설치하십시오. -
Rosetta
를 설치하십시오:softwareupdate --install-rosetta
VM 구축
colima
VM을 생성하십시오:
colima start --cpu 4 --memory 16 --disk 40 --profile docker --arch aarch64 --vm-type=vz --vz-rosetta
준비가 되면, preparation
을 참조하여 GitLab을 kind
로 설치할 수 있습니다.
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
GitLab Helm 차트 추가
시스템을 구성하여 GitLab Helm 차트에 액세스하도록 하려면 다음 명령을 따르십시오:
helm repo add gitlab https://charts.gitlab.io/
helm repo update
배포 옵션
귀하의 요구에 따라 다음 중 하나의 배포 옵션을 선택하십시오.
kubectl --namespace YOUR_NAMESPACE get pods
webservice
pod이 2/2
컨테이너로 READY
상태를 표시할 때 GitLab이 완전히 배포됩니다.
NGINX Ingress NodePort with SSL
이 방법에서는 SSL이 활성화된 NGINX 컨트롤러 서비스의 NodePort를 로컬 머신의 포트에 노출하기 위해 kind
를 사용합니다.
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에 액세스할 수 있습니다.
kubectl get secret gitlab-wildcard-tls-ca -ojsonpath='{.data.cfssl_ca}' | base64 --decode > gitlab.(your host IP).nip.io.ca.pem
이제 루트 CA를 다운로드했으므로 로컬 체인에 추가할 수 있습니다. (지침은 플랫폼에 따라 다양하며 온라인에서 쉽게 찾을 수 있습니다).
docker login
으로 레지스트리에 로그인해야 하는 경우, 자체 서명된 인증서와 함께 레지스트리를 구성하기 위해 추가적인 단계를 수행해야 합니다. 자세한 지침은 다음에서 확인할 수 있습니다:NGINX Ingress NodePort without SSL
이 방법에서는 SSL을 비활성화한 상태로 kind
를 사용하여 NGINX 컨트롤러 서비스의 NodePort를 로컬 머신의 포트에 노출합니다.
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에 네트워크 액세스 권한이 있는 것으로 가정합니다. 이를 지원하지 않는 경우 KinD에 대해 동작할 미니큐브 설명서의 DNS 처리 섹션을 참고하십시오.
$(minikube ip)
의 출력이 아닌 호스트 컴퓨터의 IP 주소를 사용하십시오.정리
로컬 시스템을 정리하려면 다음 명령을 실행하십시오:
kind delete cluster
--name
플래그로 특정 클러스터를 삭제할 수 있습니다.