이 페이지는 Google Distributed Cloud의 소규모 개념 증명 설치를 안내하는 가이드의 2부에 해당합니다. 1부는 최소 인프라 설정에 관한 내용으로, IP 주소를 계획하고 배포에 필요한 vSphere 및 Google Cloud 인프라를 설정하는 방법을 설명합니다. 이 문서에서는 이전 섹션에서 수행한 설정 및 계획을 기반으로 하여 이 문서에서 입력할 수 있는 간단한 템플릿을 사용하여 vSphere 환경에서 관리자 워크스테이션, 관리자 클러스터, 사용자 클러스터를 만드는 방법을 다룹니다. 그런 다음 사용자는 애플리케이션을 배포할 수 있습니다.
이 간편 설치의 인프라 설정과 마찬가지로 이 문서를 사용하여 설정한 클러스터가 실제 프로덕션 요구사항과 사용 사례에 적합하지 않을 수도 있습니다. 프로덕션 설치에 대한 상세 설명, 권장사항, 관련 지침은 설치 가이드를 참조하세요.
시작하기 전에
최소 인프라 설정에 설명된 대로 vSphere 및 Google Cloud 환경을 설정했는지 확인하세요.
Terraform을 사용하여 사용자 클러스터를 만들려면 관리자 워크스테이션 또는 다른 컴퓨터에 Terraform이 있어야 합니다.
절차 개요
이 설정과 관련된 기본 단계는 다음과 같습니다.
서비스 계정을 만드는 데 필요한 권한이 있는 계정으로 Google Cloud CLI에 로그인하세요.
vCenter 사용자 이름 및 비밀번호, 이전 섹션에서 준비한 IP 주소를 포함하여 Google Distributed Cloud를 구성하는 데 필요한 정보를 수집합니다.
설정을 완료하는 데 필요한 추가 서비스 계정을 포함하여 관리자 및 사용자 클러스터를 만드는 데 필요한 리소스와 도구가 있는 관리자 워크스테이션을 만듭니다.
사용자 클러스터를 관리하고 업데이트하도록 관리자 클러스터를 만듭니다.
워크로드를 실행할 사용자 클러스터를 만듭니다.
1. Google Cloud CLI에 로그인
Google Distributed Cloud를 설정하려면 권한이 다른 여러 서비스 계정이 필요합니다. 따라서 gkeadm
이 현재 설정을 하는 시점에 gcloud CLI account
속성을 사용하므로 사용자는 서비스 계정을 만들고 구성하는 데 필요한 권한이 있는 계정으로 Google Cloud CLI에 로그인해야 합니다.
gcloud CLI에 로그인. 모든 Google 계정을 사용할 수 있지만 필요한 권한이 있어야 합니다. 이 가이드의 이전 부분을 수행했다면 이미 구성요소 액세스 서비스 계정을 만드는 데 적절한 계정으로 로그인했을 것입니다.
gcloud auth login
gcloud CLI
account
속성이 올바르게 설정되었는지 확인합니다.gcloud config list
SDK
account
속성 값이 출력에 표시됩니다. 예를 들면 다음과 같습니다.[core] account = my-name@google.com disable_usage_reporting = False Your active configuration is: [default]
최신 gcloud CLI 구성요소가 설치되어 있는지 확인합니다.
gcloud components update
gcloud CLI를 설치한 방법에 따라 다음 메시지가 표시될 수 있습니다. 'Google Cloud CLI 구성요소 관리자가 이 설치에 대해 사용 중지되었기 때문에 이 작업을 수행할 수 없습니다. 다음 명령어를 실행하여 이 설치에 대해 동일한 결과를 얻을 수 있습니다.' 구성요소를 업데이트하려면 안내에 따라 명령어를 복사하여 붙여넣습니다.
2. 정보 수집
최소 인프라 설정에서 준비한 정보를 사용하여 다음 테이블의 자리표시자를 수정합니다.
vSphere 세부정보 | |
---|---|
vCenter 계정 사용자 이름 | USERNAME |
vCenter 계정 비밀번호 | PASSWORD |
vCenter Server 주소 | ADDRESS |
관리자 워크스테이션을 만드는 데 사용할 머신의 vCenter Server에 대한 루트 CA 인증서 경로 | CA_CERT_PATH |
vSphere 데이터 센터의 이름 | DATA_CENTER |
vSphere 클러스터의 이름 | VSPHERE_CLUSTER |
vSphere 리소스 풀의 이름 또는 경로입니다. 자세한 내용은 vcenter.resourcePool을 참조하세요. | RESOURCE_POOL |
vSphere Datastore의 이름 | DATASTORE |
vSphere 네트워크의 이름 | NETWORK |
IP 주소 | |
관리자 워크스테이션용 IP 주소 1개 | ADMIN_WS_IP |
관리자 클러스터 노드의 IP 주소 4개. 여기에는 업그레이드 및 업데이트 중에 사용할 수 있는 추가 노드의 주소가 포함됩니다. |
ADMIN_CONTROL_PLANE_NODE_IP_1 ADMIN_CONTROL_PLANE_NODE_IP_2 ADMIN_CONTROL_PLANE_NODE_IP_3 |
사용자 클러스터의 제어 영역 노드에 대한 IP 주소입니다. |
USER_CONTROL_PLANE_NODE_IP |
사용자 클러스터 노드의 IP 주소 4개. 여기에는 업그레이드 및 업데이트 중에 사용할 수 있는 추가 노드의 주소가 포함됩니다. |
USER_NODE_IP_1 USER_NODE_IP_2 USER_NODE_IP_3 USER_NODE_IP_4 |
관리자 클러스터 Kubernetes API 서버의 가상 IP 주소(VIP) | ADMIN_CONTROL_PLANE_VIP |
사용자 클러스터 Kubernetes API 서버의 VIP | USER_CONTROL_PLANE_VIP |
사용자 클러스터의 인그레스 VIP | USER_INGRESS_VIP |
사용자 클러스터의 LoadBalancer 유형의 서비스에 대한 VIP 2개 |
SERVICE_VIP_1 SERVICE_VIP_2 |
관리자 워크스테이션 및 클러스터 노드에서 연결할 수 있는 DNS 서버의 IP 주소 | DNS_SERVER_IP |
관리자 워크스테이션 및 클러스터 노드에서 연결할 수 있는 NTP 서버의 IP 주소 | NTP_SERVER_IP |
관리자 워크스테이션 및 클러스터 노드가 있는 서브넷에 대한 기본 게이트웨이의 IP 주소 | DEFAULT_GATEWAY_IP |
관리자 워크스테이션 및 클러스터 노드가 있는 서브넷의 넷마스크 예시: 255.255.255.0 |
NETMASK |
네트워크가 프록시 서버 뒤에 있는 경우 프록시 서버의 URL입니다. 자세한 내용은 프록시를 참조하세요. 필요한 경우 관리자 워크스테이션 구성 파일에서 수동으로 입력합니다. | PROXY_URL |
서비스 및 포드의 CIDR 범위 | |
관리자 클러스터와 사용자 클러스터 각각에는 서비스의 CIDR 범위와 포드의 CIDR 범위가 필요합니다. 네트워크의 다른 요소와 겹치지 않도록 변경해야 하는 경우를 제외하고 미리 채워진 다음 값을 사용합니다. | |
관리자 클러스터에 있는 서비스의 CIDR 범위 | 10.96.232.0/24 |
관리자 클러스터에 있는 포드의 CIDR 범위 | 192.168.0.0/16 |
사용자 클러스터에 있는 서비스의 CIDR 범위 | 10.96.0.0/20 |
사용자 클러스터에 있는 포드의 CIDR 범위 | 192.168.0.0/16 |
Google Cloud 세부정보 | |
선택한 클라우드 프로젝트의 ID입니다. | PROJECT_ID |
이전 섹션에서 설정한 구성요소 액세스 서비스 계정의 JSON 키 파일 경로이며 관리자 워크스테이션을 만드는 데 사용하는 머신에 있습니다. | COMPONENT_ACCESS_SA_KEY_PATH |
Google Cloud 계정과 연결된 이메일 주소입니다. 예를 들면 alex@example.com 입니다. |
GOOGLE_ACCOUNT_EMAIL |
3. 관리자 워크스테이션 만들기
클러스터를 만들려면 먼저 관리자 워크스테이션을 만든 다음 SSH를 사용하여 연결해야 합니다. 관리자 워크스테이션은 vSphere 환경에서 Anthos 클러스터를 만드는 데 필요한 도구와 리소스가 포함된 독립형 VM입니다. gkeadm
명령줄 도구를 사용하여 관리자 워크스테이션을 만듭니다.
gkeadm 다운로드
현재 디렉터리에 gkeadm
을 다운로드합니다.
gsutil cp gs://gke-on-prem-release/gkeadm/1.29.100-gke.248/linux/gkeadm ./ chmod +x gkeadm
관리자 클러스터와 사용자 클러스터 구성 파일을 만들려면 gkeadm
버전(Google Distributed Cloud 버전이기도 함)이 필요합니다. gkeadm
버전을 확인하려면 다음을 실행합니다.
./gkeadm version
다음 출력 예시에서는 버전을 보여줍니다.
gkeadm 1.29.0 (1.29.100-gke.248)
다른 버전의 gkeadm
을 다운로드할 수 있지만 이 가이드에서는 1.29.100-gke.248을 설치한다고 가정하며 모든 구성 파일과 명령어에서 이 버전을 사용합니다.
사용자 인증 정보 파일 만들기
다음 콘텐츠로 현재 디렉터리에 credential.yaml
이라는 파일을 만들고 저장합니다.
apiVersion: v1 kind: CredentialFile items: - name: vCenter username: "USERNAME" password: "PASSWORD"
관리자 워크스테이션 구성 파일 만들기
다음 콘텐츠로 현재 디렉터리에 admin-ws-config.yaml
이라는 파일을 만들고 저장합니다.
gcp: componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH" vCenter: credentials: address: "ADDRESS" fileRef: path: "credential.yaml" entry: "vCenter" datacenter: "DATA_CENTER" datastore: "DATASTORE" cluster: "VSPHERE_CLUSTER" network: "NETWORK" resourcePool: "RESOURCE_POOL" caCertPath: "CA_CERT_PATH" proxyUrl: "" adminWorkstation: name: "minimal-installation-admin-workstation" cpus: 4 memoryMB: 8192 diskGB: 50 dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk dataDiskMB: 512 network: ipAllocationMode: "static" hostConfig: ip: "ADMIN_WS_IP" gateway: "DEFAULT_GATEWAY_IP" netmask: "NETMASK" dns: - "DNS_SERVER_IP" proxyUrl: "" ntpServer: ntp.ubuntu.com
관리자 워크스테이션 만들기
다음 명령어를 사용하여 관리자 워크스테이션을 만듭니다.
./gkeadm create admin-workstation --auto-create-service-accounts
다음 명령어를 실행하여 다음을 수행합니다.
- 관리자 워크스테이션 만들기
- 설치에 필요한 추가 서비스 계정을 자동으로 만들기
- 관리자 및 사용자 클러스터에 대한 템플릿 구성 파일 만들기
출력은 관리자 워크스테이션 생성에 대한 자세한 정보를 제공하며 관리자 워크스테이션으로 SSH 연결을 가져오는 데 사용할 수 있는 명령어를 제공합니다. 예를 들면 다음과 같습니다.
... Admin workstation is ready to use. Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation This file is required for future upgrades SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49 ********************************************************************
앞의 출력에서 IP 주소는 예시입니다. 실제 관리자 워크스테이션의 IP 주소는 다릅니다. 관리자 워크스테이션의 IP 주소를 기록해 둡니다. 다음 단계에 이 항목이 필요합니다.
관리자 워크스테이션 만들기에 대한 자세한 내용은 관리자 워크스테이션 만들기를 참조하세요.
관리자 워크스테이션에 연결
이전 출력에 표시된 명령어를 사용해서 관리자 워크스테이션에 SSH로 연결합니다. 예를 들면 다음과 같습니다.
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.20.49
이 명령어를 다시 찾아야 하는 경우 gkeadm
은 gkeadm create admin-workstation
을 실행한 로컬 머신의 디렉터리에 gke-admin-ws-...
라는 파일을 생성합니다.
여기에는 SSH 명령어를 포함한 관리자 워크스테이션에 대한 세부정보가 포함되어 있습니다.
관리자 워크스테이션에서 exit
를 입력하여 SSH 연결을 종료하고 로컬 머신으로 돌아갑니다.
감사 로깅 키를 관리자 워크스테이션에 복사
이전 섹션에서는 감사 로깅 서비스 계정의 JSON 키 파일을 만들었습니다.
JSON 키 파일을 관리자 워크스테이션의 홈 디렉터리에 복사합니다. 예를 들어 로컬 머신에서 다음과 같이 지정합니다.
scp -i /usr/local/google/home/me/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~
관리자 워크스테이션에서 파일 보기
다시 한 번 관리자 워크스테이션으로 SSH 연결을 가져옵니다.
관리자 워크스테이션의 홈 디렉터리에 있는 파일을 나열합니다.
ls -1
출력에는 다음이 포함되어야 합니다.
admin-cluster.yaml
: 관리자 클러스터를 만들기 위한 템플릿 구성 파일user-cluster.yaml
: 사용자 클러스터를 만들기 위한 템플릿 구성 파일- 관리자 워크스테이션 구성에 지정한 vCenter 인증서 파일
- 관리자 워크스테이션 구성에서 지정한
credential.yaml
파일 - 감사 로깅 서비스 계정의 JSON 키 파일입니다.
gkeadm
에서 생성된 두 서비스 계정(연결-등록 서비스 계정 및 로깅-모니터링 서비스 계정)에 대한 JSON 키 파일 및 이전에 만든 구성요소 액세스 서비스 계정의 키 파일
예를 들면 다음과 같습니다.
admin-cluster.yaml admin-ws-config.yaml audit-logging-key.json sa-key.json connect-register-sa-2203040617.json credential.yaml log-mon-sa-2203040617.json logs vc01-cert.pem user-cluster.yaml
클러스터를 만들려면 구성 파일에서 이러한 파일 이름 중 일부를 지정해야 합니다. 파일 이름을 다음 테이블의 자리표시자 값으로 사용합니다.
연결-등록 서비스 계정 키 파일 이름 예: connect-register-sa-2203040617.json |
CONNECT_REGISTER_SA_KEY |
로깅-모니터링 서비스 계정 키 파일 이름 예: log-mon-sa-2203040617.json |
LOG_MON_SA_KEY |
감사 로깅 서비스 계정 키 파일 이름 예: audit-logging-key.json |
AUDIT_LOG_SA_KEY |
구성요소 액세스 서비스 계정 키 파일 이름 예: sa-key.json |
COMPONENT_ACCESS_SA_KEY |
vCenter 인증서 파일 이름 예: vc01-cert.pem |
CA_CERT_FILE |
4. 관리자 클러스터 만들기
이제 vCenter 및 기타 세부정보로 구성된 관리자 워크스테이션이 있으므로 이를 사용하여 vSphere 환경에 관리자 클러스터를 만들 수 있습니다. 이 단계를 시작하기 전에 앞에서 설명한 대로 관리자 워크스테이션에 SSH로 연결되어 있는지 확인하세요. 다음 명령어는 모두 관리자 워크스테이션에서 실행됩니다.
관리자 클러스터 구성 파일 만들기
admin-cluster.yaml
을 열고 콘텐츠를 다음으로 바꿉니다.
apiVersion: v1 kind: AdminCluster name: "minimal-installation-admin-cluster" bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.29.100-gke.248-full.tgz" vCenter: address: "ADDRESS" datacenter: "DATA_CENTER" cluster: "VSPHERE_CLUSTER" resourcePool: "RESOURCE_POOL" datastore: "DATASTORE" caCertPath: "CA_CERT_FILE" credentials: fileRef: path: "credential.yaml" entry: "vCenter" network: hostConfig: dnsServers: - "DNS_SERVER_IP" ntpServers: - "NTP_SERVER_IP" serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16" vCenter: networkName: "NETWORK" controlPlaneIPBlock: netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "ADMIN_CONTROL_PLANE_NODE_IP_1" hostname: "admin-cp-vm-1" - ip: "ADMIN_CONTROL_PLANE_NODE_IP_2" hostname: "admin-cp-vm-2" - ip: "ADMIN_CONTROL_PLANE_NODE_IP_3" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "ADMIN_CONTROL_PLANE_VIP" kind: "MetalLB" adminMaster: cpus: 4 memoryMB: 16384 replicas: 3 antiAffinityGroups: enabled: false componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY" gkeConnect: projectID: "PROJECT_ID" registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY" stackdriver: projectID: "PROJECT_ID" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "LOG_MON_SA_KEY" disableVsphereResourceMetrics: false cloudAuditLogging: projectID: "PROJECT_ID" clusterLocation: us-central1 serviceAccountKeyPath: "AUDIT_LOG_SA_KEY"
관리자 클러스터 구성 파일 유효성 검사
관리자 클러스터 구성 파일이 유효하고 클러스터 생성에 사용될 수 있는지 확인합니다.
gkectl check-config --config admin-cluster.yaml
OS 이미지를 vSphere로 가져옵니다.
노드 OS 이미지를 vSphere로 가져오기 위해 완료된 구성 파일로 gkectl prepare
를 실행합니다.
gkectl prepare --config admin-cluster.yaml --skip-validation-all
이 명령어를 실행하면 이미지를 vSphere로 가져오고 관리자 클러스터의 이미지를 포함한 VM 템플릿으로 표시합니다.
이 명령어는 결과를 반환하는 데 몇 분 정도 걸릴 수 있습니다.
관리자 클러스터 만들기
관리자 클러스터를 만듭니다.
gkectl create admin --config admin-cluster.yaml
실패 후 관리자 클러스터 만들기 다시 시작
관리자 클러스터 만들기가 실패하거나 취소된 경우 create
명령어를 다시 실행할 수 있습니다.
gkectl create admin --config admin-cluster.yaml
관리자 클러스터 kubeconfig 파일 찾기
gkectl create admin
명령어는 현재 디렉터리에 kubeconfig
라는 kubeconfig 파일을 만듭니다. 나중에 관리자 클러스터와 상호작용하려면 이 kubeconfig 파일이 필요합니다.
관리자 클러스터 실행 여부 확인
클러스터가 실행 중인지 확인합니다.
kubectl get nodes --kubeconfig kubeconfig
출력에 관리자 클러스터 노드가 표시됩니다. 예를 들면 다음과 같습니다.
admin-cp-vm-1 Ready control-plane,master ... admin-cp-vm-2 Ready control-plane,master ... admin-cp-vm-3 Ready control-plane,master ...
RBAC 승인 사용 설정
클러스터에서 사용자 계정에 Kubernetes clusterrole/cluster-admin
역할을 부여하려면 다음 명령어를 실행합니다.
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-admin-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=kubeconfig \ --context=minimal-installation-admin-cluster \ --apply
이 명령어의 출력은 가독성을 위해 잘려서 표시된 다음과 비슷합니다.
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
무엇보다도 RBAC 정책을 사용하면 Google ID를 사용하여 Google Cloud 콘솔에서 클러스터에 로그인하여 더 많은 클러스터 세부정보를 볼 수 있습니다.
GKE On-Prem API에 자동 등록
GKE On-Prem API가 프로젝트에 사용 설정되었으므로 클러스터가 GKE On-Prem API에 자동으로 등록됩니다. GKE On-Prem API에 관리자 클러스터를 등록하면 Google Cloud 콘솔, Google Cloud CLI 또는 Terraform과 같은 표준 도구를 사용하여 관리자 클러스터에서 관리하는 사용자 클러스터를 생성, 업그레이드, 업데이트, 삭제할 수 있습니다. 클러스터를 등록하면 gcloud
명령어를 실행하여 클러스터에 대한 정보를 가져올 수 있습니다.
5. 사용자 클러스터 만들기
이 섹션에서는 콘솔, gkectl
, Terraform 또는 gcloud CLI를 사용하여 사용자 클러스터를 만드는 단계를 설명합니다.
gkectl
이 절차를 시작하기 전에 앞에서 설명한 대로 관리자 워크스테이션에 SSH로 연결되어 있는지 확인하세요. 다음 명령어는 모두 관리자 워크스테이션에서 실행됩니다.
사용자 클러스터 IP 블록 파일 만들기
user-ipblock.yaml
파일을 만듭니다.다음 콘텐츠를 복사하여
user-ipblock.yaml
에 붙여넣고 파일을 저장합니다.blocks: - netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "USER_NODE_IP_1" hostname: "user-vm-1" - ip: "USER_NODE_IP_2" hostname: "user-vm-2" - ip: "USER_NODE_IP_3" hostname: "user-vm-3" - ip: "USER_NODE_IP_4" hostname: "user-vm-4"
사용자 클러스터 구성 파일 만들기
user-ipblock.yaml
과 같은 디렉터리에user-cluster.yaml
파일을 만듭니다.다음 콘텐츠를 복사하여
user-cluster.yaml
에 붙여넣고 파일을 저장합니다.
apiVersion: v1 kind: UserCluster name: "minimal-installation-user-cluster" gkeOnPremVersion: "1.29.100-gke.248" enableControlplaneV2: true network: hostConfig: dnsServers: - "DNS_SERVER_IP" ntpServers: - "NTP_SERVER_IP" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: "10.96.0.0/20" podCIDR: "192.168.0.0/16" controlPlaneIPBlock: netmask: "NETMASK" gateway: "DEFAULT_GATEWAY_IP" ips: - ip: "USER_CONTROL_PLANE_NODE_IP" hostname: "cp-vm-1" loadBalancer: vips: controlPlaneVIP: "USER_CONTROL_PLANE_VIP" ingressVIP: "USER_INGRESS_VIP" kind: "MetalLB" metalLB: addressPools: - name: "uc-address-pool" addresses: - "USER_INGRESS_VIP/32" - "SERVICE_VIP_1/32" - "SERVICE_VIP_2/32" enableDataplaneV2: true nodePools: - name: "uc-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 enableLoadBalancer: true antiAffinityGroups: enabled: false gkeConnect: projectID: "PROJECT_ID" registerServiceAccountKeyPath: "CONNECT_REGISTER_SA_KEY" stackdriver: projectID: "PROJECT_ID" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "LOG_MON_SA_KEY" disableVsphereResourceMetrics: false autoRepair: enabled: true
구성 확인 및 클러스터 만들기
사용자 클러스터 구성 파일이 유효하고 클러스터 생성에 사용될 수 있는지 확인합니다.
gkectl check-config --kubeconfig kubeconfig --config user-cluster.yaml
사용자 클러스터 만들기:
gkectl create cluster --kubeconfig kubeconfig --config user-cluster.yaml
클러스터를 만드는 데 약 30분 정도 걸립니다.
사용자 클러스터 kubeconfig 파일 찾기
gkectl create cluster
명령어는 현재 디렉터리에 USER_CLUSTER_NAME-kubeconfig
라는 kubeconfig 파일을 만듭니다. 나중에 사용자 클러스터와 상호 작용하려면 이 kubeconfig 파일이 필요합니다.
사용자 클러스터 실행 여부 확인
사용자 클러스터 실행 여부 확인:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
USER_CLUSTER_KUBECONFIG를 사용자 클러스터 kubeconfig 파일 경로로 바꿉니다.
출력에 사용자 클러스터 노드가 표시됩니다. 예를 들면 다음과 같습니다.
cp-vm-1 Ready control-plane,master user-vm-1 Ready user-vm-2 Ready user-vm-3 Ready
RBAC 승인 사용 설정
클러스터에서 사용자 계정에 Kubernetes clusterrole/cluster-admin
역할을 부여하려면 다음 명령어를 실행합니다.
gcloud container fleet memberships generate-gateway-rbac \ --membership=minimal-installation-user-cluster \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=USER_CLUSTER_KUBECONFIG \ --context=minimal-installation-user-cluster \ --apply
이 명령어의 출력은 가독성을 위해 잘려서 표시된 다음과 비슷합니다.
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: kubeconfig, context: minimal-installation-admin-cluster Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
무엇보다도 RBAC 정책을 사용하면 Google ID를 사용하여 Google Cloud 콘솔에서 클러스터에 로그인하여 더 많은 클러스터 세부정보를 볼 수 있습니다.
GKE On-Prem API에 자동 등록
GKE On-Prem API가 프로젝트에 사용 설정되었으므로 클러스터가 GKE On-Prem API에 자동으로 등록됩니다. 이렇게 하면 콘솔이나 gcloud CLI를 사용하여 클러스터 세부정보를 보고 클러스터 수명 주기를 관리할 수 있습니다. 예를 들어 gcloud
명령어를 실행하여 사용자 클러스터에 대한 정보를 가져올 수 있습니다.
Console
Google Cloud 콘솔에서 VMware용 GKE 클러스터 만들기 페이지로 이동합니다.
클러스터를 만들 Google Cloud 프로젝트를 선택합니다. 선택한 프로젝트는 Fleet 호스트 프로젝트로도 사용됩니다. 이 프로젝트는 관리자 클러스터가 등록된 프로젝트와 같아야 합니다. 사용자 클러스터가 생성되면 선택한 프로젝트의 Fleet에 자동으로 등록됩니다.
다음 섹션에서는 사용자 클러스터를 구성하는 방법을 안내합니다.
기본 요건
기본 요건 페이지의 정보를 숙지합니다.
페이지 하단에서 다음을 클릭합니다.
클러스터 기본사항
이름에 사용자 클러스터 이름을 입력합니다(예:
minimal-installation-user-cluster
).관리자 클러스터에 minimal-installation-admin-cluster를 선택합니다.
GCP API 위치 필드에서 us-central1을 선택합니다.
버전에서 1.29.100-gke.248을 선택합니다.
승인 섹션이나 vCenter 구성 섹션을 열 필요는 없습니다.
다음을 클릭합니다.
제어 영역
제어 영역 노드 IP에서 게이트웨이에 DEFAULT_GATEWAY_IP를 입력합니다.
서브넷 마스크에 NETMASK를 입력합니다.
IP 주소에서 IP 주소 1에 USER_CONTROL_PLANE_NODE_IP를 입력합니다. 호스트 이름 1을 비워 둡니다.
다음을 클릭합니다.
네트워킹
이 섹션에서는 클러스터의 노드, 포드, 서비스의 IP 주소를 지정합니다. 사용자 클러스터에는 노드마다 IP 주소 하나가 있어야 하고 클러스터 업그레이드, 업데이트, 자동 복구 중에 필요한 임시 노드용 추가 IP 주소가 있어야 합니다. 자세한 내용은 사용자 클러스터에 필요한 IP 주소 수를 참조하세요.
워커 노드 IP에서 IP 모드에 고정이 선택되어 있는지 확인합니다.
게이트웨이에 DEFAULT_GATEWAY_IP를 입력합니다.
서브넷 마스크에 NETMASK를 입력합니다.
IP 주소에서 다음 주소를 입력합니다.
- USER_NODE_IP_1
- USER_NODE_IP_2
- USER_NODE_IP_3
- USER_NODE_IP_4
호스트 이름 필드를 비워둡니다.
서비스 CIDR에 10.96.0.0/20을 입력합니다. 포드 CIDR에 192.168.0.0/16을 입력합니다.
DNS 서버 1에 DNS_SERVER_IP를 입력합니다.
NTP 서버 1에 NTP_SERVER_IP를 입력합니다.
DNS 검색 도메인을 비워둡니다.
다음을 클릭합니다.
부하 분산기
부하 분산기 유형에 MetalLB와 함께 번들로 제공을 선택합니다.
주소 풀에서 기본 이름을 사용합니다.
IP 주소에서 IP 주소 범위 1에 USER_INGRESS_VIP/32를 입력합니다.
IP 주소 범위 추가를 클릭합니다. IP 주소 범위 1에 SERVICE_VIP_1/32를 입력합니다.
IP 주소 범위 추가를 클릭합니다. IP 주소 범위 2에 SERVICE_VIP_2/32를 입력합니다.
IP 주소 할당에 자동을 선택합니다.
버그가 있는 IP 주소 방지를 선택 해제한 채로 둡니다.
가상 IP에서 제어 영역 VIP에 USER_CONTROL_PLANE_VIP를 입력합니다. 인그레스 VIP는 이미 입력되어 있습니다.
계속을 클릭합니다.
기능
모든 기본값을 그대로 둡니다.
다음을 클릭합니다.
노드 풀
모든 기본값을 그대로 둡니다.
확인 및 완료를 클릭하여 사용자 클러스터를 만듭니다. 사용자 클러스터를 만드는 데 15분 이상 걸립니다. 콘솔은 설정을 확인하고 데이터 센터에 클러스터를 만들 때 상태 메시지를 표시합니다.
설정 확인 중에 오류가 발생하면 콘솔에 오류 메시지가 표시됩니다. 오류 메시지는 구성 문제를 해결하고 클러스터를 만들려고 시도할 수 있도록 아주 명확해야 합니다.
발생 가능한 오류와 해결 방법에 대한 자세한 내용은 GKE On-Prem API에 등록된 클러스터 문제 해결을 참조하세요.
Terraform
이 섹션에서는 Terraform을 사용하여 사용자 클러스터와 노드 풀을 만드는 방법을 보여줍니다. 자세한 정보 및 기타 예시는 다음을 참조하세요.
디렉터리를 만들고 해당 디렉터리 내에 새 파일을 만듭니다. 파일 이름에
.tf
확장자가 있어야 합니다. 이 가이드에서는 파일을main.tf
로 지정합니다.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
사용자 클러스터 Terraform 리소스를 확인합니다.
다음 Terraform 리소스 예시는 이전 섹션에서 계획 테이블에 입력한 값으로 채워집니다.
resource "google_gkeonprem_vmware_cluster" "cluster-basic" { name = "minimal-installation-user-cluster" project = "PROJECT_ID" location = "us-central1" admin_cluster_membership = "projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster" description = "User cluster config with MetalLB, static IPs, and Controlplane V2" enable_control_plane_v2 = "true" on_prem_version = "1.29.100-gke.248" control_plane_node { cpus = 4 memory = 8192 replicas = 1 } network_config { service_address_cidr_blocks = ["10.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] host_config { dns_servers = ["DNS_SERVER_IP"] ntp_servers = ["NTP_SERVER_IP"] } static_ip_config { ip_blocks { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_NODE_IP_1" hostname = "user-vm-1" } ips { ip = "USER_NODE_IP_2" hostname = "user-vm-2" } ips { ip = "USER_NODE_IP_3" hostname = "user-vm-3" } ips { ip = "USER_NODE_IP_4" hostname = "user-vm-4" } } } control_plane_v2_config { control_plane_ip_block { netmask = "NETMASK" gateway = "DEFAULT_GATEWAY_IP" ips { ip = "USER_CONTROL_PLANE_NODE_IP" hostname = "cp-vm-1" } } } } load_balancer { vip_config { control_plane_vip = "USER_CONTROL_PLANE_VIP" ingress_vip = "USER_INGRESS_VIP" } metal_lb_config { address_pools { pool = "uc-address-pool" manual_assign = "true" addresses = ["USER_INGRESS_VIP/32", "SERVICE_VIP_1/32", "SERVICE_VIP_2/32"] } } } authorization { admin_users { username = "GOOGLE_ACCOUNT_EMAIL" } } provider = google-beta } resource "google_gkeonprem_vmware_node_pool" "my-node-pool-1" { name = "uc-node-pool" project = "PROJECT_ID" vmware_cluster = "minimal-installation-user-cluster" location = "us-central1" config { replicas = 3 image_type = "ubuntu_containerd" enable_load_balancer = "true" } depends_on = [ google_gkeonprem_vmware_cluster.cluster-basic ] provider = google-beta }
Terraform 리소스를
main.tf
에 복사하고 파일을 저장합니다.Terraform 계획을 초기화하고 만듭니다.
terraform init
Terraform은 Google Cloud 제공업체와 같은 필요한 라이브러리를 설치합니다.
구성을 검토하고 필요한 경우 변경합니다.
terraform plan
Terraform 계획을 적용하여 사용자 클러스터를 만듭니다.
terraform apply
메시지가 표시되면
yes
를 입력합니다.기본 사용자 클러스터와 노드 풀을 만드는 데 약 15분 정도(또는 네트워크에 따라 그 이상) 소요됩니다.
gcloud
클러스터를 만듭니다.
gcloud container vmware clusters create minimal-installation-user-cluster \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/minimal-installation-admin-cluster \ --location=us-central1 \ --version=1.29.100-gke.248 \ --admin-users=GOOGLE_ACCOUNT_EMAIL \ --service-address-cidr-blocks=10.96.0.0/20 \ --pod-address-cidr-blocks=192.168.0.0/16 \ --metal-lb-config-address-pools='pool=uc-address-pool,avoid-buggy-ips=False,manual-assign=False,addresses=USER_INGRESS_VIP/32;SERVICE_VIP_1/32;SERVICE_VIP_2/32' \ --control-plane-vip=USER_CONTROL_PLANE_VIP \ --ingress-vip=USER_INGRESS_VIP \ --static-ip-config-ip-blocks='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_NODE_IP_1;USER_NODE_IP_2;USER_NODE_IP_3;USER_NODE_IP_4' \ --dns-servers=DNS_SERVER_IP \ --ntp-servers=NTP_SERVER_IP \ --enable-control-plane-v2 \ --enable-dataplane-v2 \ --control-plane-ip-block='gateway=DEFAULT_GATEWAY_IP,netmask=NETMASK,ips=USER_CONTROL_PLANE_NODE_IP'
명령어 출력은 다음과 비슷합니다.
Waiting for operation [projects/example-project-12345/locations/us-central1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
예시 출력에서 operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
문자열은 장기 실행 작업의 OPERATION_ID
입니다. 다음 명령어를 실행하여 작업 상태를 확인할 수 있습니다.
gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=us-central1
자세한 내용은 gcloud container vmware operations를 참조하세요.
사용자 클러스터를 만드는 데 15분 이상 걸립니다. Google Kubernetes Engine 클러스터 개요 페이지의 콘솔에서 클러스터를 볼 수 있습니다.
노드 풀 만들기:
gcloud container vmware node-pools create uc-node-pool \ --cluster=minimal-installation-user-cluster \ --project=PROJECT_ID \ --location=us-central1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=4 \ --memory=8192 \ --replicas=3 \ --enable-load-balancer
다음 단계
이제 Google Distributed Cloud의 최소 설치가 완료되었습니다. 원하는 경우 후속 작업으로 애플리케이션을 배포하여 설치의 실제 작동 방식을 확인할 수 있습니다.