관리 워크스테이션 만들기

이 페이지에서는 관리 워크스테이션 가상 머신(VM)을 처음 만드는 방법을 설명합니다. 이 페이지에서는 워크스테이션의 Docker 데몬을 프록시에서 사용하도록 구성하는 방법도 설명합니다.

기존 관리 워크스테이션 업그레이드도 참조하세요.

개요

HashiCorp Terraform 버전 0.11을 사용하여 vSphere에서 관리 워크스테이션 가상 머신(VM)을 프로비저닝하고 관리 워크스테이션을 사용하여 GKE On-Prem을 설치합니다. 관리 워크스테이션 Open Virtual Appliance(OVA) 파일을 다운로드하고 Terraform을 사용하여 VM을 vSphere에 배포합니다.

시작하기 전에

  1. 관리 워크스테이션 OVA 다운로드
  2. 관리 워크스테이션 개요 읽기

관리 워크스테이션 OVA 배포

OVA를 배포하려면 다음 단계를 수행하세요.

  1. DHCP 또는 고정 IP를 사용하는지에 따라 다음 Terraform 구성 중 하나를 저장합니다. TF 및 TFVARS 파일을 모두 저장해야 합니다. TF 파일은 Terraform HCL 구성이고 TFVARS 파일이 구성에 사용할 변수를 선언합니다.

    dhcp.tf

    #########################
    ####### VARIABLES #######
    #########################
    
    # vSphere username
    variable "vsphere_user" { }
    # vSphere password
    variable "vsphere_password" { }
    # vSphere server address
    variable "vsphere_server" { }
    # Install this public key in the created VM
    variable "ssh_public_key_path" { default = "~/.ssh/vsphere_workstation.pub" }
    # vSphere network to use for the VM
    variable "network" { default = "VM Network"}
    # Hostname for the VM
    variable "vm_name" { default = "vsphere-workstation" }
    # vSphere datacenter to create this VM in
    variable "datacenter" { }
    # vSphere datastore to create this VM in
    variable "datastore" { }
    # vSphere cluster to create this VM in
    variable "cluster" { }
    # vSphere resource pool to create this VM in
    variable "resource_pool" { }
    # Number of CPUs for this VM. Recommended minimum 4.
    variable "num_cpus" { default = 4 }
    # Memory in MB for this VM. Recommended minimum 8192.
    variable "memory" { default = 8192 }
    # The VM template to clone
    variable "vm_template" { }
    # Enable the provided Docker registry. If you use your own registry, set to "false"
    variable "registry_enable" { default = "true" }
    # Username to set for the Docker registry
    variable "registry_username" { default = "gke" }
    # Password to set for the Docker registry
    variable "registry_password" { default = "password" }
    # Optional DNS hostname for the registry's certificate
    variable "registry_dns_hostname" { default = "" }
    
    #########################
    ##### FOR UPGRADING #####
    #########################
    # Path on disk to the htpasswd file
    variable "registry_htpasswd" { default = "" } // filepath
    # Path on disk to the certificate for the Docker registry in the admin workstation
    variable "registry_cert" { default = "" } // filepath
    # Path on disk to the registry's CA
    variable "registry_ca" { default = "" } // filepath
    # Path on disk to the registry's private key
    variable "registry_private_key" { default = "" } // filepath
    
    ##########################
    ##########################
    
    provider "vsphere" {
      version        = "~> 1.5"
      user           = "${var.vsphere_user}"
      password       = "${var.vsphere_password}"
      vsphere_server = "${var.vsphere_server}"
    
      # if you have a self-signed cert
      allow_unverified_ssl = true
    }
    
    ### vSphere Data ###
    
    data "vsphere_datastore" "datastore" {
      name          = "${var.datastore}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_datacenter" "dc" {
      name = "${var.datacenter}"
    }
    
    data "vsphere_compute_cluster" "cluster" {
      name          = "${var.cluster}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_resource_pool" "pool" {
      name          = "${var.resource_pool}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_network" "network" {
      name          = "${var.network}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_virtual_machine" "template_from_ovf" {
      name          = "${var.vm_template}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "template_file" "dhcp_ip_config" {
      template = <<EOF
    network:
      version: 2
      ethernets:
        ens192:
          dhcp4: true
    EOF
    }
    
    data "template_file" "user_data" {
      template = <<EOF
    #cloud-config
    apt:
      primary:
        - arches: [default]
          uri: http://us-west1.gce.archive.ubuntu.com/ubuntu/
    write_files:
      - path: /etc/netplan/99-dhcp.yaml
        permissions: '0644'
        encoding: base64
        content: |
          $${dhcp_ip_config}
    runcmd:
      - netplan apply
      - /var/lib/gke/guest-startup.sh $${reg_enable} $${reg_username} $${reg_password} $${reg_dns_hostname} $${reg_htpasswd} $${reg_cert} $${reg_private_key} $${reg_ca}
    EOF
      vars = {
        dhcp_ip_config = "${base64encode(data.template_file.dhcp_ip_config.rendered)}"
    
        reg_enable = "${var.registry_enable}"
        reg_username = "${var.registry_username}"
        reg_password = "${var.registry_password}"
        reg_dns_hostname = "${var.registry_dns_hostname}"
    
        reg_htpasswd = ""
        reg_cert = ""
        reg_private_key = ""
        reg_ca = ""
    
        #########################
        ##### FOR UPGRADING #####
        # reg_htpasswd = "${file(var.registry_htpasswd)}"
        # reg_cert = "${file(var.registry_cert)}"
        # reg_private_key = "${file(var.registry_private_key)}"
        # reg_ca = "${file(var.registry_ca)}"
        #########################
      }
    }
    
    ### vSphere Resources ###
    
    resource "vsphere_virtual_machine" "vm" {
      name             = "${var.vm_name}"
      resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
      datastore_id     = "${data.vsphere_datastore.datastore.id}"
      num_cpus         = "${var.num_cpus}"
      memory           = "${var.memory}"
      guest_id         = "${data.vsphere_virtual_machine.template_from_ovf.guest_id}"
      enable_disk_uuid = "true"
      scsi_type = "${data.vsphere_virtual_machine.template_from_ovf.scsi_type}"
      network_interface {
        network_id   = "${data.vsphere_network.network.id}"
        adapter_type = "${data.vsphere_virtual_machine.template_from_ovf.network_interface_types[0]}"
      }
    
      wait_for_guest_net_timeout = 15
    
      nested_hv_enabled = false
      cpu_performance_counters_enabled = false
    
      disk {
        label            = "disk0"
        size             = "${max(50, data.vsphere_virtual_machine.template_from_ovf.disks.0.size)}"
        eagerly_scrub    = "${data.vsphere_virtual_machine.template_from_ovf.disks.0.eagerly_scrub}"
        thin_provisioned = "${data.vsphere_virtual_machine.template_from_ovf.disks.0.thin_provisioned}"
      }
    
      cdrom {
        client_device = true
      }
    
      vapp {
        properties = {
          hostname    = "${var.vm_name}"
          public-keys = "${file(var.ssh_public_key_path)}"
          user-data   = "${base64encode(data.template_file.user_data.rendered)}"
        }
      }
    
      clone {
        template_uuid = "${data.vsphere_virtual_machine.template_from_ovf.id}"
      }
    }
    
    output "ip_address" {
      value = "${vsphere_virtual_machine.vm.default_ip_address}"
    }

    dhcp.tfvars

    vsphere_user = "administrator@vsphere.local"
    vsphere_password = ""
    # vSphere server IP or DNS name
    vsphere_server = ""
    ssh_public_key_path = "~/.ssh/vsphere_workstation.pub"
    
    vm_name = "admin-workstation"
    
    datastore = ""
    datacenter = ""
    cluster = ""
    resource_pool = ""
    network = "VM Network"
    
    num_cpus = 4
    memory = 8192
    vm_template = "gke-on-prem-admin-appliance-vsphere-1.0.2-gke.3"
    
    # docker registry credentials
    registry_enable = "true"
    registry_username = "gke"
    registry_password = "password"
    registry_dns_hostname = ""
    
    # only needed when re-creating the workstation and you want to
    # reuse registry certs. Each value is a filepath relative to this file.
    # registry_htpasswd=""
    # registry_cert=""
    # registry_ca=""
    # registry_private_key=""

    static-ip.tf

    #########################
    ####### VARIABLES #######
    #########################
    
    # vSphere username
    variable "vsphere_user" { }
    # vSphere password
    variable "vsphere_password" { }
    # vSphere server address
    variable "vsphere_server" { }
    # Install this public key in the created VM
    variable "ssh_public_key_path" { default = "~/.ssh/vsphere_workstation.pub" }
    # vSphere network to use for the VM
    variable "network" { default = "VM Network"}
    # Hostname for the VM
    variable "vm_name" { default = "vsphere-workstation" }
    # vSphere datacenter to create this VM in
    variable "datacenter" { }
    # vSphere datastore to create this VM in
    variable "datastore" { }
    # vSphere cluster to create this VM in
    variable "cluster" { }
    # vSphere resource pool to create this VM in
    variable "resource_pool" { }
    # Number of CPUs for this VM. Recommended minimum 4.
    variable "num_cpus" { default = 4 }
    # Memory in MB for this VM. Recommended minimum 8192.
    variable "memory" { default = 8192 }
    # The VM template to clone
    variable "vm_template" { }
    # The IP address to assign this this VM
    variable "ipv4_address" { }
    # Netmask prefix length
    variable "ipv4_netmask_prefix_length" { }
    # Default gateway to use
    variable "ipv4_gateway" { }
    # DNS resolvers to use
    variable "dns_nameservers" { }
    # Enable the provided Docker registry. If you use your own registry, set to "false"
    variable "registry_enable" { default = "true" }
    # Username to set for the Docker registry
    variable "registry_username" { default = "gke" }
    # Password to set for the Docker registry
    variable "registry_password" { default = "password" }
    # Optional DNS hostname for the registry's certificate
    variable "registry_dns_hostname" { default = "" }
    
    #########################
    ##### FOR UPGRADING #####
    #########################
    # Path on disk to the htpasswd file
    variable "registry_htpasswd" { default = "" } // filepath
    # Path on disk to the certificate for the Docker registry in the admin workstation
    variable "registry_cert" { default = "" } // filepath
    # Path on disk to the registry's CA
    variable "registry_ca" { default = "" } // filepath
    # Path on disk to the registry's private key
    variable "registry_private_key" { default = "" } // filepath
    
    ##########################
    ##########################
    
    provider "vsphere" {
      version        = "~> 1.5"
      user           = "${var.vsphere_user}"
      password       = "${var.vsphere_password}"
      vsphere_server = "${var.vsphere_server}"
    
      # if you have a self-signed cert
      allow_unverified_ssl = true
    }
    
    ### vSphere Data ###
    
    data "vsphere_datastore" "datastore" {
      name          = "${var.datastore}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_datacenter" "dc" {
      name = "${var.datacenter}"
    }
    
    data "vsphere_compute_cluster" "cluster" {
      name          = "${var.cluster}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_resource_pool" "pool" {
      name          = "${var.resource_pool}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_network" "network" {
      name          = "${var.network}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    data "vsphere_virtual_machine" "template_from_ovf" {
      name          = "${var.vm_template}"
      datacenter_id = "${data.vsphere_datacenter.dc.id}"
    }
    
    ##########################
    ### IF USING STATIC IP ###
    ##########################
    data "template_file" "static_ip_config" {
      template = <<EOF
    network:
      version: 2
      ethernets:
        ens192:
          dhcp4: no
          dhcp6: no
          addresses: ["${var.ipv4_address}/${var.ipv4_netmask_prefix_length}"]
          gateway4: ${var.ipv4_gateway}
          nameservers:
            addresses: [${var.dns_nameservers}]
    EOF
    }
    
    data "template_file" "user_data" {
      template = <<EOF
    #cloud-config
    apt:
      primary:
        - arches: [default]
          uri: http://us-west1.gce.archive.ubuntu.com/ubuntu/
    write_files:
      - path: /tmp/static-ip.yaml
        permissions: '0644'
        encoding: base64
        content: |
          $${static_ip_config}
    runcmd:
      - /var/lib/gke/guest-startup.sh $${reg_enable} $${reg_username} $${reg_password} $${reg_dns_hostname} $${reg_htpasswd} $${reg_cert} $${reg_private_key} $${reg_ca}
    EOF
      vars = {
        static_ip_config = "${base64encode(data.template_file.static_ip_config.rendered)}"
    
        reg_enable = "${var.registry_enable}"
        reg_username = "${var.registry_username}"
        reg_password = "${var.registry_password}"
        reg_dns_hostname = "${var.registry_dns_hostname}"
    
        reg_htpasswd = ""
        reg_cert = ""
        reg_private_key = ""
        reg_ca = ""
    
        ########################
        #### FOR UPGRADING #####
        # reg_htpasswd = "${file(var.registry_htpasswd)}"
        # reg_cert = "${file(var.registry_cert)}"
        # reg_private_key = "${file(var.registry_private_key)}"
        # reg_ca = "${file(var.registry_ca)}"
        ########################
      }
    }
    ##########################
    ### IF USING STATIC IP ###
    ##########################
    
    ### vSphere Resources ###
    
    resource "vsphere_virtual_machine" "vm" {
      name             = "${var.vm_name}"
      resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
      datastore_id     = "${data.vsphere_datastore.datastore.id}"
      num_cpus         = "${var.num_cpus}"
      memory           = "${var.memory}"
      guest_id         = "${data.vsphere_virtual_machine.template_from_ovf.guest_id}"
      enable_disk_uuid = "true"
      scsi_type = "${data.vsphere_virtual_machine.template_from_ovf.scsi_type}"
      network_interface {
        network_id   = "${data.vsphere_network.network.id}"
        adapter_type = "${data.vsphere_virtual_machine.template_from_ovf.network_interface_types[0]}"
      }
    
      wait_for_guest_net_timeout = 15
    
      nested_hv_enabled = false
      cpu_performance_counters_enabled = false
    
      disk {
        label            = "disk0"
        size             = "${max(50, data.vsphere_virtual_machine.template_from_ovf.disks.0.size)}"
        eagerly_scrub    = "${data.vsphere_virtual_machine.template_from_ovf.disks.0.eagerly_scrub}"
        thin_provisioned = "${data.vsphere_virtual_machine.template_from_ovf.disks.0.thin_provisioned}"
      }
    
      cdrom {
        client_device = true
      }
    
      vapp {
        properties = {
          hostname    = "${var.vm_name}"
          public-keys = "${file(var.ssh_public_key_path)}"
          user-data   = "${base64encode(data.template_file.user_data.rendered)}"
        }
      }
    
      clone {
        template_uuid = "${data.vsphere_virtual_machine.template_from_ovf.id}"
      }
    }
    
    output "ip_address" {
      value = "${vsphere_virtual_machine.vm.default_ip_address}"
    }

    static-ip.tfvars

    vsphere_user = "administrator@vsphere.local"
    vsphere_password = ""
    # vSphere server IP or DNS name
    vsphere_server = ""
    ssh_public_key_path = "~/.ssh/vsphere_workstation.pub"
    
    vm_name = "admin-workstation"
    
    datastore = ""
    datacenter = ""
    cluster = ""
    resource_pool = ""
    network = "VM Network"
    
    num_cpus = 4
    memory = 8192
    vm_template = "gke-on-prem-admin-appliance-vsphere-1.0.2-gke.3"
    
    # XXX.XXX.XXX.XXX
    ipv4_address = "100.115.250.100"
    # Eg 22
    ipv4_netmask_prefix_length = "22"
    # XXX.XXX.XXX.XXX
    ipv4_gateway = "100.115.251.254"
    # comma separated DNS servers
    dns_nameservers = "8.8.8.8,8.8.4.4"
    
    # docker registry credentials
    registry_enable = "true"
    registry_username = "gke"
    registry_password = "password"
    registry_dns_hostname = ""
    
    # only needed when re-creating the workstation and you want to
    # reuse registry certs. Each value is a filepath relative to this file.
    # registry_htpasswd=""
    # registry_cert=""
    # registry_ca=""
    # registry_private_key=""
  2. 관리 워크스테이션 VM에 인증할 수 있도록 SSH 키-값 쌍을 만듭니다.

    ssh-keygen -t rsa -f ~/.ssh/vsphere_workstation -N ""
  3. Terraform 파일의 디렉터리를 만듭니다.

    mkdir [TERRAFORM_DIR]

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

  4. 호스트 네트워크 구성을 [TERRAFORM_DIR]/terraform.tf[TERRAFORM_DIR]/terraform.tfvars에 맞추어 Terraform 구성을 복사합니다.

  5. terraform.tfvars에서 vSphere 환경의 요소를 지정하는 다음 변수의 값을 입력합니다.

    • vsphere_server
    • vspher_user
    • vsphere_password
    • datastore
    • datacenter
    • cluster
    • resource_pool
    • network
    • vm_template(이전 단계에서 govc markastemplate을 실행하여 생성했습니다.)

    vm_name의 값을 입력합니다. 생성하려는 관리 워크스테이션의 이름입니다. 원하는 이름을 지정할 수 있습니다.

    고정 IP 주소를 사용하는 경우 다음 변수의 값을 입력합니다.

    • ipv4_address
    • ipv4_netmask_prefix_length
    • ipv4_gateway
    • dns_nameservers

    관리자 워크스테이션 VM에서 실행되는 Docker 레지스트리를 사용하려면 registry_enable을 'true'로 설정합니다. 또한 다음 변수의 값을 입력합니다.

    • registry_username
    • registry_password

    관리 워크스테이션 VM에서 실행되는 Docker 레지스트리의 DNS 호스트 이름을 사용하려면 registry_dns_hostname의 값을 입력합니다. 이는 관리 워크스테이션 VM에 고정 IP 주소가 없는 경우에 유용합니다.

    자체 비공개 Docker 레지스트리를 사용하려면 registry_enable을 'false'로 설정합니다.

  6. 관리 워크스테이션 VM을 만듭니다. 이 작업은 몇 분 정도 소요될 수 있습니다.

    cd [TERRAFORM_DIR]
    terraform init && terraform apply -auto-approve -input=false

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

  1. Terraform 구성이 포함된 디렉터리로 변경합니다.

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

    terraform output ip_address
  3. 생성된 키와 IP 주소를 사용하여 SSH를 통해 관리 워크스테이션 VM에 연결합니다.

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

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

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

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

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

gkectl version
docker version

registry_enable을 'true'로 설정하면 GKE On-Prem 구성요소의 Docker 이미지가 관리 워크스테이션 VM의 Docker 데몬에 로드되었는지 확인할 수 있습니다.

docker images

모든 Docker 이미지를 로드하는 데 15분 이상 걸릴 수 있습니다.

결국 관리 워크스테이션 VM이 Docker 레지스트리를 실행 중인지 확인할 수 있습니다.

docker ps

결과에 Docker 레지스트리를 실행 중인 컨테이너가 표시됩니다.

IMAGE ...                      COMMAND ...              NAMES
docker-registry:v2.7.1-gke.0   "registry serve /e..."   registry2

프록시를 가져오도록 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에 도움을 요청하세요.

다음 단계

다음은 GKE On-Prem을 설치하기 전에 살펴보면 좋은 몇 가지 선택적 구성 옵션입니다.