버전 1.4. 이 버전은 완전히 지원되며 GKE On-Prem에 영향을 미치는 보안 취약점, 노출, 문제에 대한 최신 패치와 업데이트를 제공합니다. 자세한 내용은 출시 노트를 참조하세요. 이 버전은 최신 버전이 아닙니다.

DHCP를 사용하여 관리 워크스테이션 만들기

이 페이지에서는 동적 호스트 구성 프로토콜(DHCP)을 사용하여 IP 주소를 가져오는 관리 워크스테이션을 만드는 방법을 설명합니다.

고정 IP 주소가 있는 관리 워크스테이션을 만들려면 관리 워크스테이션 만들기를 참조하세요.

개요

관리자 워크스테이션은 GKE On-Prem 클러스터를 만들고 관리하는 데 필요한 모든 도구를 포함하는 vSphere VM입니다. 관리 워크스테이션을 만들려면 이 주제에 설명된 다음 단계를 수행합니다.

  • 관리 워크스테이션 VM의 압축 이미지인 관리 워크스테이션 Open Virtual Appliance(OVA)를 다운로드합니다.
  • vSphere에 대한 명령줄 인터페이스인 govc를 사용하여 OVA를 vSphere로 VM 템플릿으로 가져옵니다.
  • HashiCorp Terraform 구성 파일을 복사하고 채웁니다.
  • Terraform 버전 0.11을 사용하여 관리자 워크스테이션 VM을 만듭니다.

허용 목록에 포함된 서비스 계정의 키 만들기

허용 목록에 포함된 서비스 계정에 대한 JSON 키 파일이 아직 없는 경우 지금 만듭니다.

  1. gcloud auth login
  2. gcloud iam service-accounts keys create whitelisted-key.json \
    --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]
    

여기서 [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]은 허용 목록에 포함된 서비스 계정의 이메일 주소입니다.

관리자 워크스테이션 OVA 다운로드

관리자 워크스테이션 OVA에는 GKE On-Prem 클러스터를 설치 및 관리하는 데 필요한 모든 클러스터 구성요소, 명령줄 도구, 기타 항목이 포함되어 있습니다.

허용 목록에 포함된 서비스 계정을 활성화하려면 다음을 실행합니다.

gcloud auth activate-service-account --key-file [KEY_ALLOWLISTED_ACCOUNT]

여기서 [KEY_ALLOWLISTED_ACCOUNT]는 허용 목록에 포함된 서비스 계정의 JSON 키 파일 경로입니다.

최신 버전의 관리자 워크스테이션 OVA와 서명 파일을 다운로드합니다.

gsutil cp gs://gke-on-prem-release/admin-appliance/1.4.3-gke.3/gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3.{ova,ova.1.sig} ./

openssl을 사용하여 OVA 확인

openssl을 사용하여 공개 키에 대해 다운로드한 OVA 파일을 확인합니다.

openssl dgst -verify - -signature gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3.ova.1.sig gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3.ova <<'EOF'
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
-----END PUBLIC KEY-----
EOF

이 명령어 예상 출력은 Verified OK입니다.

govc를 사용하여 OVA를 vSphere로 가져와 VM 템플릿으로 표시

다음 섹션에서는 다음을 수행합니다.

  1. vCenter Server와 vSphere 환경의 요소를 선언하는 일부 변수를 만듭니다.
  2. 관리자 워크스테이션 OVA를 vSphere로 가져와 VM 템플릿으로 표시합니다.

govc용 변수 만들기

관리자 워크스테이션 OVA를 vSphere로 가져오기 전에 vCenter Server와 vSphere 환경의 요소를 선언하는 일부 govc 변수를 제공해야 합니다.

export GOVC_URL=https://[VCENTER_SERVER_ADDRESS]/sdk
export GOVC_USERNAME=[VCENTER_SERVER_USERNAME]
export GOVC_PASSWORD=[VCENTER_SERVER_PASSWORD]
export GOVC_DATASTORE=[VSPHERE_DATASTORE]
export GOVC_DATACENTER=[VSPHERE_DATACENTER]
export GOVC_INSECURE=true

vSphere의 기본 리소스 풀을 사용하거나 자체 리소스 풀을 만들 수 있습니다.

# If you want to use a resource pool you've configured yourself, export this variable:
export GOVC_RESOURCE_POOL=[VSPHERE_CLUSTER]/Resources/[VSPHERE_RESOURCE_POOL]
# If you want to use vSphere's default resource pool, export this variable instead:
export GOVC_RESOURCE_POOL=[VSPHERE_CLUSTER]/Resources

각 항목의 의미는 다음과 같습니다.

  • [VCENTER_SERVER_ADDRESS]는 vCenter Server의 IP 주소 또는 호스트 이름입니다.
  • [VCENTER_SERVER_USERNAME]은 vCenter Server의 관리자 역할 또는 동등한 권한을 보유한 계정의 사용자 이름입니다.
  • [VCENTER_SERVER_PASSWORD]는 vCenter Server 계정의 비밀번호입니다.
  • [VSPHERE_DATASTORE]는 vSphere 환경에서 구성한 Datastore의 이름입니다.
  • [VSPHERE_DATACENTER]는 vSphere 환경에서 구성한 데이터센터의 이름입니다.
  • [VSPHERE_CLUSTER]는 vSphere 환경에서 구성한 클러스터의 이름입니다.
  • 기본이 아닌 리소스 풀을 사용하는 경우 각 항목의 의미는 다음과 같습니다.
  • [VSPHERE_RESOURCE_POOL]은 vSphere 환경에 구성한 리소스 풀의 이름입니다.

프록시 변수 만들기

프록시를 사용하는 경우 HTTP 및 HTTPS 주소의 변수를 내보냅니다. 여기서 [PROXY_ADDRESS]는 프록시의 IP 주소 또는 호스트 이름입니다.

export HTTP_PROXY=http://[PROXY_ADDRESS]
export HTTPS_PROXY=https://[PROXY_ADDRESS]

OVA를 vSphere로 가져오기: 표준 스위치

vSphere 표준 스위치를 사용하는 경우 다음 명령어를 사용하여 OVA를 vSphere로 가져옵니다.

govc import.ova -options - gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3.ova <<EOF
{
  "DiskProvisioning": "thin",
  "MarkAsTemplate": true
}
EOF

OVA를 vSphere로 가져오기: 분산 스위치

vSphere 분산 스위치를 사용하는 경우 이 명령어를 사용하여 OVA를 vSphere로 가져옵니다. 여기서 [YOUR_DISTRIBUTED_PORT_GROUP_NAME]분산 포트 그룹의 이름입니다.

govc import.ova -options - gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3.ova <<EOF
{
  "DiskProvisioning": "thin",
  "MarkAsTemplate": true,
  "NetworkMapping": [
      {
          "Name": "VM Network",
          "Network": "[YOUR_DISTRIBUTED_PORT_GROUP_NAME]"
      }
  ]
}
EOF

Terraform 구성 파일 복사

Terraform 파일의 디렉터리를 만듭니다.

mkdir [TERRAFORM_DIR]

여기서 [TERRAFORM_DIR]은 Terraform 파일을 보관할 디렉터리의 경로입니다.

다음 TF 파일과 TFVARS 파일을 복사하여 각각 [TERRAFORM_DIR]/terraform.tf[TERRAFORM_DIR]/terraform.tfvars에 저장합니다.

TF 파일은 VM을 만드는 Terraform HCL 구성입니다.

SSH 키 만들기

SSH 키를 만들어 로컬 노트북이나 워크스테이션에서 SSH를 통해 관리자 워크스테이션에 연결할 수 있습니다. Linux 기반 운영체제에서는 ssh-keygen을 사용할 수 있습니다.

ssh-keygen -t rsa -f ~/.ssh/vsphere_workstation -N ""

TFVARS 파일 수정

텍스트 편집기에서 terraform.tfvars를 열고 다음 변수 값을 제공합니다. vCenter 클라이언트에 로그인하면 여러 값을 찾을 수 있습니다.

vcenter_user

vCenter Server 사용자 계정을 문자열로 제공합니다. 사용자 계정에는 관리자 역할 또는 이에 상응하는 권한이 있어야 합니다(vSphere 요구 사항 참조).

예를 들면 다음과 같습니다.

vcenter_user = "administrator@vsphere.local"

vcenter_password

vCenter Server 사용자 계정의 비밀번호를 문자열로 제공합니다. 예를 들면 다음과 같습니다.

vcenter_password = "#STyZ2T#Ko2o"

vcenter_server

vCenter Server의 주소(IP 또는 호스트 이름)를 문자열로 제공합니다. 예를 들면 다음과 같습니다.

vcenter_server = "198.51.100.2"

ssh_public_key_path

SSH 공개 키의 경로를 제공합니다. 이전 단계에서 만들었습니다.

ssh_public_key_path = "~/.ssh/vsphere_workstation.pub"

vm_name

선택한 관리자 워크스테이션 이름을 제공합니다. 예를 들면 다음과 같습니다.

vm_name = "my-admin-workstation"

datastore

vSphere Datastore 이름을 문자열로 제공합니다. 예를 들면 다음과 같습니다.

datastore = "MY-DATASTORE"

datacenter

vSphere 데이터센터 이름을 문자열로 제공합니다. 예를 들면 다음과 같습니다.

datacenter = "MY-DATACENTER"

cluster

vSphere 클러스터 이름을 문자열로 제공합니다. 예를 들면 다음과 같습니다.

cluster = "MY-CLUSTER"

resource_pool

기본이 아닌 리소스 풀을 사용하는 경우 vSphere 리소스 풀 이름을 문자열로 제공합니다. 예를 들면 다음과 같습니다.

resource_pool = "MY-POOL"

기본 리소스 풀을 사용하는 경우 다음 값을 제공합니다.

resource_pool = "[MY_CLUSTER]/Resources"

여기서 [MY_CLUSTER]는 vSphere 클러스터 이름입니다.

독립형 호스트의 루트 리소스 풀 지정을 참조하세요.

network

관리자 워크스테이션을 만들려는 vSphere 네트워크를 문자열로 제공합니다. 예를 들면 다음과 같습니다.

network = "MY-VM-NETWORK"

vm_template

VM 템플릿 이름을 문자열로 제공합니다. 이전 단계에서 OVA를 만들고 가져와 템플릿으로 표시했습니다. 템플릿 이름에는 .ova 확장자가 없습니다.

vm_template = "gke-on-prem-admin-appliance-vsphere-1.4.3-gke.3"

관리 워크스테이션 만들기

이제 관리자 워크스테이션 VM을 만들 수 있습니다. 이 섹션의 단계에서는 Terraform 버전 0.11을 사용합니다.

  1. Terraform 구성 파일(TF 및 TFVARS)이 포함된 디렉터리로 이동합니다.

  2. 디렉터리에서 Terraform을 초기화하고 구성을 적용합니다. 이 작업은 몇 분 정도 소요될 수 있습니다.

    terraform init && terraform apply -auto-approve -input=false

관리자 워크스테이션에 SSH를 통해 연결

  1. Terraform 구성 파일이 있는 디렉터리로 이동합니다.

  2. 관리자 워크스테이션의 IP 주소를 검색합니다.

    terraform output ip_address

    관리자 워크스테이션의 IP 주소를 기록합니다.

  3. SSH 키와 IP 주소를 사용하여 SSH를 통해 관리자 워크스테이션에 연결합니다.

    ssh -i ~/.ssh/vsphere_workstation ubuntu@[ADMIN_WORKSTATION_IP_ADDRESS]
    

관리자 워크스테이션이 올바르게 설정되었는지 확인

관리자 워크스테이션에 gkectldocker가 설치되어 있는지 확인합니다.

gkectl version
docker version

관리자 워크스테이션에서 NTP 서버 구성

기본적으로 관리자 워크스테이션은 ntp.ubuntu.com을 네트워크 시간 프로토콜(NTP) 서버로 사용합니다. 조직에서 다른 시간 서버를 사용하는 경우 다른 조직과 동일한 NTP 서버를 사용하도록 관리자 워크스테이션을 구성합니다.

관리자 워크스테이션에서 NTP 서버를 구성하려면 다음 명령어를 입력합니다.

sudo mkdir -p /etc/systemd/timesyncd.conf.d/

sudo bash -c "cat >> /etc/systemd/timesyncd.conf.d/cloud-init.conf" << EOF
[Time]
NTP=[NTP_SERVER]
EOF

sudo systemctl restart systemd-timesyncd
timedatectl status

여기서 [NTP_SERVER]는 NTP 서버의 호스트 이름이나 IP 주소입니다.

NTP 서버가 작동하는지 확인하려면 다음 명령어를 입력합니다.

timedatectl

출력은 다음과 비슷합니다.

                      Local time: Tue 2019-12-17 00:21:50 UTC
                  Universal time: Tue 2019-12-17 00:21:50 UTC
                        RTC time: Tue 2019-12-17 00:21:50
                       Time zone: Etc/UTC (UTC, +0000)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

문제 해결

OVA 다운로드 중 AccessDeniedException

증상

관리자 워크스테이션 OVA와 서명을 다운로드하려고 하면 다음 오류가 반환됩니다.

AccessDeniedException: 403 whitelisted-service-account@project.iam.gserviceaccount.com does not have storage.objects.list access to gke-on-prem-release
가능한 원인

허용 목록에 포함된 서비스 계정이 활성화되지 않았습니다.

해결 방법

허용 목록에 포함된 서비스 계정이 활성화되었는지 확인합니다. 문제가 계속되면 Google에 도움을 요청하세요.

openssl이 관리자 워크스테이션 OVA를 검사할 수 없음

증상

관리자 워크스테이션 OVA 파일에 openssl dgst를 실행하면 Verified OK가 반환되지 않습니다.

가능한 원인

OVA 파일에 검사 성공을 방해하는 문제가 있습니다.

해결 방법

관리자 워크스테이션 OVA 다운로드의 설명대로 관리자 워크스테이션 OVA를 다시 다운로드하고 배포하세요. 문제가 계속되면 Google에 도움을 요청하세요.

자세한 내용은 문제 해결을 참조하세요.