관리 워크스테이션 만들기

이 페이지에서는 최신 버전의 관리자 워크스테이션 가상 머신(VM)을 만드는 방법을 설명합니다.

기존 관리자 워크스테이션을 업그레이드하려면 GKE On-Prem 업그레이드를 참조하세요.

개요

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

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

시작하기 전에

  1. 관리자 워크스테이션 개요 읽기
  2. 설치 준비의 단계를 완료합니다.
  3. govc를 설치했는지 확인합니다.
  4. Terraform 버전 0.11을 설치했는지 확인합니다.

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

다운로드 항목에서 관리자 워크스테이션 OVA의 최신 버전을 다운로드합니다. 최신 버전의 OVA 파일은 다음과 같습니다.

gke-on-prem-admin-appliance-vsphere-1.1.2-gke.0.ova

여기서 1.1.2-gke.0은 최신 버전의 GKE On-Prem입니다. OVA에는 GKE On-Prem 클러스터를 설치하고 관리하는 데 필요한 모든 클러스터 구성요소, 명령줄 도구 및 기타 항목이 포함됩니다. 최신 버전의 OVA에는 이러한 항목의 최신 버전이 포함됩니다.

이 파일을 관리자 워크스테이션을 만드는 데 사용중인 컴퓨터의 다른 위치에 저장합니다.

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 환경에 구성한 리소스 풀의 이름입니다.

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

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

govc import.ova -options - ~/gke-on-prem-admin-appliance-vsphere-1.1.2-gke.0.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.1.2-gke.0.ova <<EOF
{
  "DiskProvisioning": "thin",
  "MarkAsTemplate": true,
  "NetworkMapping": [
      {
          "Name": "VM Network",
          "Network": "[YOUR_DISTRIBUTED_PORT_GROUP_NAME]"
      }
  ]
}
EOF

Terraform 구성 파일 복사

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

    mkdir "[TERRAFORM_DIR]"
    

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

  2. 관리 워크스테이션에 고정 IP 주소를 지정할지 아니면 DHCP 서버를 사용하여 IP 주소를 가져올 지에 따라 다음 Terraform 구성 중 하나를 복사합니다.

    TF 및 TFVARS 파일을 모두 복사해야 합니다. TF 파일은 VM을 만드는 Terraform HCL 구성입니다.

  3. 구성을 각각 [TERRAFORM_DIR]/terraform.tf[TERRAFORM_DIR]/terraform.tfvars에 저장합니다.

DHCP

고정 IP

SSH 공개 키 만들기

로컬 노트북 또는 워크스테이션에서 관리자 워크스테이션에 SSH로 연결할 수 있도록 SSH 공개 키를 만듭니다. Linux 기반 운영체제에서는 ssh-keygen을 사용할 수 있습니다.

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

TFVARS 파일 수정

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

vcenter_user

vCenter Server 사용자 계정을 문자열로 제공합니다. 사용자 계정에는 관리자 역할 또는 이에 상응하는 권한이 있어야 합니다(시스템 요구 사항 참조). 예를 들면 다음과 같습니다.

vcenter_user = "administrator@vsphere.local"

vcenter_password

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

vcenter_password = "#STyZ2T#Ko2o"

vcenter_server

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

vcenter_server = "198.51.100.0"

ssh_public_key_path

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

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

vm_name

관리자 워크스테이션에 대해 선택한 이름을 제공합니다.

vm_name = "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"

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

network

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

network = "VM Network"

vm_template

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

vm_template = "gke-on-prem-admin-appliance-vsphere-[VERSION]"

관리자 워크스테이션에 고정 IP 주소 사용

관리자 워크스테이션에 고정 IP를 사용하려면 고정 IP TF 및 TFVARS 파일을 복사합니다. TFVARs 파일에서 다음 변수의 값을 입력합니다.

ipv4_address

관리자 워크스테이션의 IPv4 고정 IP 주소를 제공합니다. 예를 들면 다음과 같습니다.

ipv4_address = "203.0.113.0"

ipv4_netmask_prefix_length

관리자 워크스테이션을 만들려는 네트워크의 서브넷 마스크에 비트 수를 입력합니다. 예를 들면 다음과 같습니다.

ipv4_netmask_prefix_length = "22"

ipv4_gateway

관리자 워크스테이션을 만들 서브넷의 게이트웨이를 입력합니다. VMware의 vSphere 가상 머신 문서를 참조하세요.

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

ipv4_gateway = "198.51.100.0

dns_nameservers

관리자 워크스테이션에서 사용할 DNS 네임서버를 쉼표로 구분하여 제공합니다. 예를 들면 다음과 같습니다.

dns_nameservers = "8.8.8.8,8.8.4.4"

관리자 워크스테이션 만들기

이전 단계를 완료하면 관리자 워크스테이션 VM을 만들 수 있습니다.

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

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

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

관리자 워크스테이션에 SSH로 연결

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

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

    terraform output ip_address

    관리자 워크스테이션의 IP 주소를 기록하거나 셸에서 변수로 내보냅니다.

  3. 생성된 키와 IP 주소를 사용하여 관리자 워크스테이션에 SSH로 접속합니다.

    ssh -i ~/.ssh/vsphere_workstation ubuntu@$(terraform output ip_address)

    또는 주소를 사용하려면 다음을 실행하세요.

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

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

gkectldocker가 설치되었는지 확인합니다.

gkectl version
docker version

관리자 워크스테이션용 프록시 구성

환경이 프록시를 이면에 있는 경우 다음 섹션을 수행하여 Google Cloud CLI와 Docker에서 프록시를 사용하도록 구성합니다.

프록시를 사용하도록 Google Cloud CLI 구성

관리자 워크스테이션 VM에서 다음 단계를 완료합니다.

노트북이나 워크스테이션에서 인터넷에 연결하도록 프록시를 사용하는 경우 gcloudgsutil 명령어를 실행할 수 있도록 프록시용 Google Cloud CLI를 구성해야 합니다. 자세한 내용은 gcloud CLI를 프록시/방화벽 뒤에서 사용할 수 있도록 구성을 참조하세요.

프록시를 가져오도록 Docker 레지스트리 구성

관리자 워크스테이션 VM에서 다음 단계를 완료합니다.

Docker 레지스트리를 사용하고 네트워크가 프록시 뒤에서 실행되도록 하려면 프록시를 통해 이미지를 가져오도록 관리자 워크스테이션에서 실행되는 Docker 데몬을 구성해야 합니다.

  1. HTTP 및 HTTPS 프록시의 주소를 수집합니다.

  2. 다음을 포함하여 프록시 없이 연락해야 하는 모든 호스트의 IP 주소와 호스트 이름을 수집합니다.

    • vCenter Server IP 주소
    • 모든 ESXi 호스트의 IP 주소
    • 부하 분산기에서 구성하려는 IP 주소
    • 192.168.0.0/16 범위

    관리자 워크스테이션에서 이 주소를 no_proxy 변수에 추가합니다.

    printf -v no_proxy '%s,' [ADDRESSES];
    

    원하는 경우 나중에 참조할 수 있도록 환경 변수로 범위를 내보낼 수 있습니다. 애플리케이션과 프로세스에서 다음 변수를 사용할 수 있습니다.

    export no_proxy="${no_proxy%,}";
  3. 설정에 따라 /root/.docker/config.json, /home/ [USER]/.docker/config.json 또는 다른 곳에 저장된 Docker의 구성 파일을 엽니다.

  4. config.json 내에 다음 줄을 추가합니다.

    "proxies": {
    
    "default": {
           "httpProxy": "[HTTP_PROXY]",
           "httpsProxy": "[HTTPS_PROXY]",
           "noProxy": "[ADDRESSES]"
               }
    }

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

    • [HTTP_PROXY]는 HTTP 프록시(있는 경우)입니다.
    • [HTTPS_PROXY]는 HTTPS 프록시(있는 경우)입니다.
    • [ADDRESSES]는 프록시 없이 연락해야 하는 주소 및 호스트 이름을 쉼표로 구분한 목록입니다.
  5. Docker를 다시 시작하여 변경사항을 적용합니다.

    sudo systemctl restart docker

문제해결

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

Terraform vSphere 제공업체 세션 한도

GKE On-Prem은 Terraform의 vSphere 제공업체를 이용하여 vSphere 환경에 VM을 가져옵니다. 제공업체의 세션 한도는 1,000개입니다. 현재 구현은 사용 후 활성 세션을 닫지 않습니다. 실행 중인 세션이 너무 많으면 503 오류가 발생할 수 있습니다.

세션은 300초 후 자동으로 닫힙니다.

증상

실행 중인 세션이 너무 많으면 다음과 같은 오류가 발생할 수 있습니다.

Error connecting to CIS REST endpoint: Login failed: body:
  {"type":"com.vmware.vapi.std.errors.service_unavailable","value":
  {"messages":[{"args":["1000","1000"],"default_message":"Sessions count is
  limited to 1000. Existing sessions are 1000.",
  "id":"com.vmware.vapi.endpoint.failedToLoginMaxSessionCountReached"}]}},
  status: 503 Service Unavailable
가능한 원인

환경에서 실행 중인 Terraform 제공업체 세션이 너무 많습니다.

해결 방법

이는 현재 정상적인 작동입니다. 세션은 300초 후 자동으로 닫힙니다. 자세한 내용은 GitHub 문제 #618을 참조하세요.

Docker용 프록시 사용: oauth2: cannot fetch token

증상

프록시를 사용하는 동안 다음 오류가 발생할 수 있습니다.

oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: proxyconnect tcp: tls: oversized record received with length 20527
가능한 원인

HTTP 대신 HTTPS 프록시를 제공했을 수 있습니다.

해결 방법

Docker 구성에서 프록시 주소를 https:// 대신 http://로 변경합니다.

라이선스가 올바른지 확인

특히 평가판 라이선스를 사용할 때는 해당 라이선스가 올바른지 확인해야 합니다. F5, ESXi 호스트, vCenter 라이선스가 만료되면 예기치 않은 오류가 발생할 수 있습니다.

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

증상

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

가능한 원인

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

해결 방법

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

다음 단계