Kubernetes Gardener
Kubernetes Gardener
조직의 Kubernetes-as-a-Service 요구 사항을 위해 Gardener를 준비하고 클러스터를 만드는 방법을 알려드려요.
출처: Istio 문서
본문
Gardener 부트스트래핑
조직의 Kubernetes-as-a-Service 요구 사항을 위한 자체 Gardener를 구축하려면 문서를 따라가세요.
테스트 목적으로는 소스 코드 저장소를 체크아웃하고 make kind-up gardener-up만 실행하면 노트북에서 Gardener를 구축할 수 있어요 (Gardener를 체크아웃해 보는 가장 쉬운 개발 방법이에요!).
또는, 23 Technologies GmbH는 모든 지원되는 클라우드 제공업체와 잘 동작하고 무료 체험을 제공하는 완전 관리형 Gardener 서비스인 Okeanos를 제공해요. 마찬가지로 STACKIT, B'Nerd, MetalStack 등의 클라우드 제공업체도 Gardener를 자신의 Kubernetes Engine으로 운영하고 있어요.
이 오픈소스 프로젝트의 탄생에 대해 더 알고 싶다면 kubernetes.io에서 Gardener Project Update와 Gardener - The Kubernetes Botanist를 읽어보세요.
직접 Istio, 사용자 지정 도메인, 인증서로 Shoot을 만들어보기는 Gardener 최종 사용자를 위한 상세 튜토리얼이에요.
kubectl 설치 및 설정
- 이미
kubectlCLI가 있다면kubectl version --short로 버전을 확인해요. 주문하려는 Kubernetes 클러스터 버전과 최소한 일치하는 최신 버전이 필요해요.kubectl이 더 오래된 버전이라면 다음 단계를 따라 더 새로운 버전을 설치하세요. kubectlCLI를 설치해요.
Gardener 접근하기
- Gardener 대시보드에서 프로젝트를 만들어요. 그러면 기본적으로
garden-<my-project>라는 이름의 Kubernetes 네임스페이스가 만들어져요. - kubeconfig를 사용해서 Gardener 프로젝트에 대한 접근을 설정해요.
아직 Gardener 관리자가 아니라면 Gardener 대시보드에서 기술 사용자를 만들 수 있어요:
"Members" 섹션으로 가서 서비스 계정을 추가하세요. 그러면 프로젝트용 kubeconfig를 다운로드할 수 있어요.
셸에서 export KUBECONFIG=garden-my-project.yaml을 설정했는지 확인하세요.
Kubernetes 클러스터 만들기
클러스터 사양 yaml 파일을 제공해서 kubectl CLI로 클러스터를 만들 수 있어요. GCP용 예시는 여기에서 찾을 수 있어요.
네임스페이스가 프로젝트와 일치하는지 확인하세요. 그리고 준비한 이른바 "shoot" 클러스터 매니페스트를 kubectl로 적용해요:
$ kubectl apply --filename my-cluster.yaml
더 쉬운 방법은 Gardener 대시보드의 클러스터 생성 마법사를 따라 클러스터를 만드는 거예요:
클러스터용 kubectl 설정
이제 Gardener 대시보드에서 또는 CLI로 다음과 같이 새로 만든 클러스터의 kubeconfig를 다운로드할 수 있어요:
$ kubectl --namespace shoot--my-project--my-cluster get secret kubecfg --output jsonpath={.data.kubeconfig} | base64 --decode > my-cluster.yaml
이 kubeconfig 파일은 클러스터에 대한 전체 관리자 접근 권한을 가져요.
페이로드 클러스터로 어떤 활동을 하든 export KUBECONFIG=my-cluster.yaml이 설정되어 있는지 확인하세요.
정리하기
Gardener 대시보드를 사용해 클러스터를 삭제하거나, garden-my-project.yaml kubeconfig를 가리키는 kubectl로 다음을 실행하세요:
$ kubectl --kubeconfig garden-my-project.yaml --namespace garden--my-project annotate shoot my-cluster confirmation.garden.sapcloud.io/deletion=true
$ kubectl --kubeconfig garden-my-project.yaml --namespace garden--my-project delete shoot my-cluster