이 페이지는 플랫폼 관리자용으로 작성되었습니다.
이 페이지에서는 Terraform을 사용하여 사용자 클러스터를 관리하는 방법을 설명합니다.
기본 요건
관리자 클러스터에 액세스할 수 있는 계정이 있어야 합니다. 사용자 클러스터를 관리할 수 있는 권한이 이 계정에 있어야 합니다.
이 계정에는 플랫폼 관리자의 하위 액세스 권한과 apiextensions.k8s.io
그룹의 customresourcedefinitions
에 대한 'list' 액세스 권한이 필요합니다. 이 계정을 사용하여 Terraform Kubernetes 공급자를 구성하여 사용자 클러스터 관련 리소스를 관리할 수 있습니다. 계정에 다음과 같은 특정 권한이 있어야 합니다.
- 관리자 클러스터의 사용자 클러스터 네임스페이스에 대한 전체 액세스 권한(예:
cluster-user-cluster2
). baremetal.cluster.gke.io
의clusters
및nodepools
에 대한 전체 액세스 권한managementcenter.anthos.cloud.google.com
의bootstrapservicebindings
,configmanagementfeaturespecs
,configmanagementbindings
,servicemeshfeaturespecs
,servicemeshbindings
에 대한 전체 액세스 권한apiextensions.k8s.io
의customresourcedefinitions
에 대한list
액세스 권한- Anthos Config Management 및 Anthos Service Mesh를 설치해야 하는 경우 사용자 클러스터에 연결할 사용자 인증 정보를 가져올 수 있도록 관리자 클러스터의 사용자 클러스터 네임스페이스에서 보안 비밀을 가져올 수 있는 액세스 권한이 필요합니다.
Terraform 스크립트 다운로드
Anthos 관리 센터 콘솔의 지원 탭에서 Terraform 스크립트 tarball 파일을 다운로드합니다. 파일에서 스크립트를 추출합니다.
tar xvf terraform-scripts.tar.gz
Terraform 초기화 및 인증 설정
관리자 클러스터 API로 인증하도록 Terraform Kubernetes 공급자를 설정하는 방법은 다양합니다. 공급자 설정에 설명된 사용 사례에 가장 적합한 방법을 선택하세요. 관리자 클러스터에 충분한 권한이 없으면 인프라 운영자에게 문의하세요.
cd cluster
terraform init
(# TODO 인증)을 제공자 설정 인증 방법 중 하나로 바꿉니다.
사용자 클러스터 만들기
cluster/terraform.tfvars
에서 모든 변수를 지정합니다. 루트 권한이 없는 경우login_user_name
을 지정해야 합니다. 예:admin_cluster_endpoint = "https://10.200.0.100:443" cluster_name = "user-cluster2" control_plane_nodes = [ { "address" = "10.200.0.26" }, { "address" = "10.200.0.21" }, { "address" = "10.200.0.22" }, ] control_plane_vip = "10.200.0.110" nodepool_nodes = [ { "address" = "10.200.0.23" }, { "address" = "10.200.0.25" }, { "address" = "10.200.0.24" }, ] address_pools = [ { "addresses" = ["10.200.0.111-10.200.0.119"] "name" = "pool1" }, ] bootstrap_service = ["test-bootstrapservice", "test-bootstrapservice-2"] anthos_baremetal_version = "1.9.0"
변경사항을 적용합니다. 명령어가 성공적으로 완료되면 사용자 클러스터가 생성됩니다.
terraform apply
사용자 클러스터 폐기
다음 명령어를 사용하여 사용자 클러스터를 폐기합니다.
terraform destroy
대기 시간은 리소스 폐기를 제어하기 위해 설정됩니다. wait_duration
변수를 업데이트하여 조정할 수 있습니다. 대기 시간이 발생하는 이유는 Kubernetes 제공자의 기능이 없기 때문입니다(이 기능 요청 참조).
일부 문제로 인해 사용자 클러스터 생성이 대기 중이면 terraform destroy
를 사용하지 마세요. 대신 수동으로 설치를 삭제합니다.
terraform 명령어를 중지합니다.
관리 센터 콘솔에서 사용자 클러스터를 삭제합니다.
terraform.tfstate
파일을 삭제합니다.
Anthos Config Management 및 Anthos Service Mesh 사용 설정
Anthos Config Management 및 Anthos Service Mesh를 사용 설정하려면 다음 단계를 완료하세요.
features
Terraform 프로젝트의 Terraform을 초기화합니다.cd features terraform init
관리자 클러스터에 대한 인증을 설정합니다.
비공개 키를
/etc/ssh-key/key
의 git 저장소에 배치합니다.activate_acm
및activate_asm
을 true로 설정하고 모든 관련 변수를 정의합니다. 예:cluster_name = "user-cluster2" admin_cluster_endpoint = "https://10.200.0.100:443" user_cluster_ca_certificate = "" activate_acm = true version_acm = "1.7.1" enable_acm_policy_controller = true acm_git_repo = { git_repo_url = "git@github.com:example/example.git" git_repo_branch = "main" git_policy_dir = "." git_secret_type = "ssh" } activate_asm = true version_asm = "1.9.6-asm.1"
변경사항을 적용합니다.
terraform apply
(선택사항) 필요한 경우 Anthos Service Mesh의 대기 시간을 조정합니다. 이렇게 하려면
wait_duration
변수를 업데이트하면 됩니다.
Anthos Config Management 및 Anthos Service Mesh 중지
Anthos Config Management를 삭제하기 전 클러스터에서 Anthos Config Management로 동기화된 모든 리소스를 삭제하는 것이 좋습니다.
tfstate
에서 git-creds
보안 비밀 및 config-management-system
을 삭제합니다. ConfigManagementBinding
및 ConfigManagementFeatureSpec
이 삭제된 후 Anthos Config Management 운영자가 사용자 클러스터 내의 리소스를 삭제해야 합니다.
관리 센터에서 Anthos Config Management가 제거된 것으로 즉시 표시되지는 않습니다. 운영자가 모든 항목을 삭제하는 데 5~10분 정도 걸릴 수 있습니다.
terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy
알려진 문제
현재 클러스터를 업데이트할 수 없습니다. 업데이트를 실행할 때 제공자는 1378 문제로 인해 기존 리소스에서 완료자를 삭제하려고 시도합니다.
사용자 클러스터 및 Anthos Service Mesh의 destroy 명령어는 1357 문제로 인해 대기 시간을 사용합니다. 클러스터 크기에 따라 대기 시간을 조정해야 할 수도 있습니다.
클러스터는 관리 센터에 표시되는 것보다 더 빠르게 Teraform에 준비된 상태로 표시됩니다(제공자의
kubernetes_manifest
데이터 지원으로 차단).terraform destroy
를 사용하여 Anthos Config Management를 삭제하려면 tfstate에서 먼저 리소스를 삭제해야 합니다. 자세한 내용은 Anthos Config Management 및 Anthos Service Mesh 사용 중지를 참조하세요. Anthos Config Management는 관리 센터에서 즉시 제거된 것으로 표시되지 않습니다. 작업자가 모든 항목을 삭제하려면 5~10분 정도 걸릴 수 있습니다.terraform destroy
명령어는 사용자 클러스터 네임스페이스를 삭제합니다. 플랫폼 관리자는 관리자 클러스터에서 네임스페이스를 삭제할 권한이 없습니다. 따라서 명령어가 실패할 수 있습니다.
제한사항
현재 코드를 사용하면 단일 사용자 클러스터를 만들 수 있습니다.
현재 코드에는 OIDC 구성이 포함되어 있지 않습니다. 이 부분에는 kubernetes_manifest 리소스의 Kubernetes 공급자 패치 기능이 필요합니다.