Admin-Workstation erstellen

In diesem Dokument wird gezeigt, wie Sie eine Administrator-Workstation erstellen, mit der Sie GKE On-Prem-Cluster erstellen können.

In diesem Dokument erstellen Sie eine Administrator-Workstation mit einer statischen IP-Adresse. Dies entspricht dem grundlegenden Installationsvorgang, bei dem Cluster angelegt werden, die statische IP-Adressen nutzen.

Wenn Sie eine Administrator-Workstation erstellen möchten, die ihre IP-Adresse mit Dynamic Host Configuration Protocol (DHCP) abruft, finden Sie Informationen dazu im Abschnitt Administrator-Workstation mit DHCP erstellen.

In den Schritten in diesem Dokument wird das gkeadm-Befehlszeilentool verwendet, das nur für Linux verfügbar ist. In einer zukünftigen Version von GKE On-Prem steht gkeadm auch für Windows und MAC OS zur Verfügung. Wenn Sie eine Administrator-Workstation mit einem Computer mit Windows- oder MAC-Betriebssystem erstellen möchten, finden Sie die entsprechenden Informationen unter Administrator-Workstation mit einer statischen IP-Adresse erstellen und Administrator-Workstation mit DHCP erstellen.

gkeadm herunterladen

Laden Sie das gkeadm-Befehlszeilentool herunter und machen Sie es ausführbar:

gsutil cp gs://gke-on-prem-release-public/gkeadm/1.3.2-gke.1/linux/gkeadm ./
chmod +x gkeadm

Eine Vorlage für Ihre Konfigurationsdatei erstellen

Zum Erstellen einer Administrator-Workstation ist für das gkeadm-Tool eine Konfigurationsdatei erforderlich. So generieren Sie eine Vorlage für Ihre Konfigurationsdatei:

./gkeadm create config

Die Ausgabe ist eine Datei mit dem Namen admin-ws-config.yaml:

gcp:
  # Path of the allowlisted service account's JSON key file
  whitelistedServiceAccountKeyPath: ""
# Specify which vCenter resources to use
vCenter:
  # The credentials and address GKE On-Prem should use to connect to vCenter
  credentials:
    address: ""
    username: ""
    ...
adminWorkstation:
  ...
  network:
    # The IP allocation mode: 'dhcp' or 'static'
    ipAllocationMode: ""
    # # The host config in static IP mode. Do not include if using DHCP
    # hostConfig:
    #   # The IPv4 static IP address for the admin workstation
    ...

Konfigurationsdatei ausfüllen

Geben Sie in Ihrer Konfigurationsdatei Feldwerte ein, wie in diesem Abschnitt erläutert.

gcp.whitelistedServiceAccountKeyPath

String. Der Pfad der JSON-Schlüsseldatei für Ihr Dienstkonto auf der Zulassungsliste. Informationen zum Erstellen einer JSON-Schlüsseldatei finden Sie unter Dienstkonto auf der Zulassungsliste. Beispiel:

whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"

vCenter.credentials.address

String. Die IP-Adresse oder der Hostname Ihres vCenter-Servers.

Bevor Sie das Feld address ausfüllen, laden Sie das bereitgestellte Zertifikat Ihres vCenter-Servers herunter und prüfen Sie es. Geben Sie den folgenden Befehl ein, um das Zertifikat herunterzuladen und in einer Datei namens vcenter.pem zu speichern:

true | openssl s_client -connect VCENTER_IPVCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem

Ersetzen Sie VCENTER_IP durch die IP-Adresse Ihres vCenter-Servers.

Öffnen Sie die Zertifikatsdatei, um den "Subject Common Name" und den "Subject Alternative Name" zu ermitteln:

openssl x509 -in vcenter.pem -text -noout

Die Ausgabe enthält den Subject Common Name (CN). Dies kann eine IP-Adresse oder ein Hostname sein. Beispiel:

Subject: ... CN = 203.0.113.100
Subject: ... CN = my-host.my-domain.example

Die Ausgabe kann auch unter Subject Alternative Name einen oder mehrere DNS-Namen enthalten:

X509v3 Subject Alternative Name:
    DNS:vcenter.my-domain.example

Wählen Sie den Common Name Subject oder einen der DNS-Namen unter Subject Alternative Name als Wert für vcenter.credentials.address in Ihrer Konfigurationsdatei aus. Beispiel:

vcenter:
  credentials:
    address: "203.0.113.1"
    ...
vcenter:
  credentials:
    address: "my-host.my-domain.example"
    ...

vCenter.credentials.username

String. Ein vCenter-Server-Nutzerkonto. Das Nutzerkonto sollte die Administratorrolle oder entsprechende Berechtigungen haben. Weitere Informationen finden Sie unter vSphere-Anforderungen.

Beispiel:

username: "administrator@vsphere.local"

vCenter.credentials.password

String. Das Passwort für das vCenter-Server-Nutzerkonto. Beispiel:

password: "#STyZ2T#Ko2o"

vCenter.datacenter

String. Der Name Ihres vSphere-Rechenzentrums. Beispiel:

datacenter: "MY-DATACENTER"

vCenter.datastore

String. Der Name Ihres vSphere-Datenspeichers. Beispiel:

datastore: "MY-DATASTORE"

vCenter.cluster

String. Der Name Ihres vSphere-Clusters. Beispiel:

cluster: "MY-CLUSTER"

vCenter.network

String. Der Name des vSphere-Netzwerks, in dem Sie Ihre Administrator-Workstation erstellen möchten. Beispiel:

network: "MY-VM-NETWORK"

vCenter.resourcePool

String. Wenn Sie einen nicht standardmäßigen Ressourcenpool verwenden, geben Sie den Namen Ihres vSphere-Ressourcenpools an. Beispiel:

resourcePool: "MY-POOL"

Wenn Sie den Standardressourcenpool verwenden, geben Sie den folgenden Wert an:

resourcePool: "MY_CLUSTER/Resources"

Ersetzen Sie MY_CLUSTER durch den Namen Ihres vSphere-Clusters.

Weitere Informationen finden Sie unter Specifying the root resource pool for a standalone host.

vCenter.caCertPath

String. Wenn ein Client wie GKE On-Prem eine Anfrage an vCenter-Server sendet, muss der Server seine Identität gegenüber dem Client durch Vorlage eines Zertifikats oder eines Zertifikatspakets bestätigen. Um das Zertifikat oder Paket zu prüfen, muss GKE On-Prem das Root-Zertifikat in der Vertrauenskette haben.

Legen Sie für vCenter.caCertPath den Pfad des Root-Zertifikats fest. Beispiel:

caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"

Ihre VM-Installation hat eine Zertifizierungsstelle (Certificate Authority, CA), die ein Zertifikat für Ihren vCenter-Server ausstellt. Das Root-Zertifikat in der Vertrauenskette ist ein selbst signiertes Zertifikat, das von VMware erstellt wurde.

Wenn Sie nicht die VMware-Standardzertifizierungsstelle verwenden möchten, können Sie VMware so konfigurieren, dass eine andere Zertifizierungsstelle genutzt wird.

Wenn Ihr vCenter-Server ein von der VMware-Standardzertifizierungsstelle ausgestelltes Zertifikat verwendet, laden Sie es so herunter:

curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip

Ersetzen Sie SERVER_ADDRESS durch die Adresse Ihres vCenter-Servers.

Installieren Sie den Befehl unzip und entpacken Sie die Zertifikatsdatei:

sudo apt-get install unzip
unzip downloads.zip

Wenn der Befehl zum Entpacken beim ersten Mal nicht funktioniert, geben Sie den Befehl noch einmal ein.

Ermitteln Sie die Zertifikatsdatei in certs/lin.

proxyUrl

String. Wenn der Computer, auf dem Sie gkeadm ausführen, einen Proxyserver für den Zugriff auf das Internet verwendet, geben Sie für dieses Feld die URL des Proxyservers an. Beispiel:

proxyUrl: "https://my-proxy.example.local"

adminWorkstation.name

String. Ein Name Ihrer Wahl für Ihre Administrator-Workstation. Beispiel:

name: "my-admin-workstation"

adminWorkstation.cpus

Ganzzahl. Die Anzahl der virtuellen CPUs für Ihre Administrator-Workstation. Beispiel:

cpus: 4

adminWorkstation.memoryMB

Ganzzahl. Der Umfang an Arbeitsspeicher in Megabyte für Ihre Administrator-Workstation. Beispiel:

memoryMB: 8192

adminWorkstation.diskGB

Ganzzahl. Der Umfang des virtuellen Speicherplatzes für Ihre Administrator-Workstation in Gigabyte. Dieser muss mindestens 50 GB betragen. Beispiel:

diskGB: 50

adminWorkstation.network.ipAllocationMode

String. Legen Sie für dieses Feld "static" fest. Beispiel:

ipAllocationMode: "static"

adminWorkstation.network.hostConfig.ip

String. Eine IP-Adresse Ihrer Wahl für Ihre Administrator-Workstation. Beispiel:

ip: "172.16.5.1"

adminWorkstation.network.hostConfig.gateway

String. Die IP-Adresse des Standardgateways für das Netzwerk, das Ihre Administrator-Workstation enthält. Beispiel:

gateway: "172.16.6.254"

adminWorkstation.network.hostConfig.netmask

String. Die Netzmaske für das Netzwerk, das Ihre Administrator-Workstation enthält. Beispiel:

netmask: "255.255.248.0"

adminWorkstation.network.hostConfig.dns

String-Array. Ein Array von IP-Adressen für DNS-Server, die Ihre Administrator-Workstation nutzen kann. Beispiel:

dns:
- "172.16.255.1"
- "172.16.255.2"

adminWorkstation.proxyUrl

String. Wenn sich Ihr Netzwerk hinter einem Proxyserver befindet und Sie möchten, dass sowohl Ihre Administrator-Workstation als auch Ihre GKE On-Prem-Cluster denselben Proxyserver verwenden, legen Sie für adminworkstation.proxyURL die URL des Proxyservers fest. Beispiel:

adminworkstation:
  proxyUrl: "http://aw-proxy.example"

adminWorkstation.ntpServer

String. Der Hostname oder die IP-Adresse des Network Time Protocol-Servers, den Ihre Administrator-Workstation verwenden soll. Beispiel:

ntpServer: "216.239.35.0"

Wenn Sie dieses Feld leer lassen, verwendet GKE On-Prem "ntp.ubuntu.com".

Im Folgenden sehen Sie das Beispiel für eine Datei admin-ws-config.yaml mit Werten:

gcp:
  whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter:
  credentials:
    address: "203.0.113.1"
    username: "administrator.vsphere.local"
    password: "#STyZ2T#Ko2o"
  datacenter: "MY-DATACENTER"
  datastore: "MY-DATASTORE"
  cluster: "MY-CLUSTER"
  network: "MY-VM-NETWORK"
  resourcePool: "MY-POOL"
  caCertPath: "/usr/local/google/home/me/certs/the-root.cert"
proxyUrl: ""
adminWorkstation:
  name: "my-admin-workstation"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  network:
    ipAllocationMode: "static"
    hostConfig:
      ip: "172.16.5.1"
      gateway: "172.16.6.254"
      netmask: "255.255.248.0"
      dns:
      - "172.16.255.1"
      - "172.16.255.2
  proxyUrl: ""
  ntpServer: "216.239.35.0"

Administrator-Workstation erstellen

Wenn Sie mit gkeadm eine Administrator-Workstation und eine Reihe von Dienstkonten erstellen möchten, müssen Sie dem standardmäßigen Cloud-Rechnungskonto die IAM-Rollen resourcemanager.projectIamAdmin und serviceusage.serviceUsageAdmin zuweisen. So rufen Sie das Standardkonto auf:

gcloud config get-value account

So erteilen Sie die erforderlichen Rollen:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:DEFAULT_ACCOUNT" \
    --role="roles/resourcemanager.projectIamAdmin"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:DEFAULT_ACCOUNT" \
    --role="roles/serviceusage.serviceUsageAdmin"

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die ID Ihres Connect-Projekts.
  • DEFAULT_ACCOUNT: Das standardmäßige Cloud-Rechnungskonto.

Erstellen Sie Ihre Administrator-Workstation und eine Reihe von Dienstkonten: Wenn Sie Ihre Dienstkonten manuell anlegen und konfigurieren möchten, lassen Sie das Flag --auto-create-service-accounts weg.

./gkeadm create admin-workstation --auto-create-service-accounts

Die Ausgabe enthält detaillierte Informationen zur Erstellung Ihrer Administrator-Workstation. Beispielsweise können Sie darin sehen, dass gkeadm die folgenden Aufgaben ausgeführt hat:

  • Es wurden Vorabprüfungen ausgeführt.

  • Ein OVA-Image wurde heruntergeladen und als vSphere-Vorlage hochgeladen.

  • Ein SSH-Schlüssel wurde erstellt.

  • Eine VM für die Administrator-Workstation wurde erstellt.

  • Die auf der Administrator-Workstation installierten gkectl- und Docker-Versionen wurden ausgegeben.

  • Es wurden Informationen zum NTP-Server auf der Administrator-Workstation ausgegeben.

  • Dienstkonten und deren JSON-Schlüsseldateien wurden erstellt. Diese Dienstkonten sind Mitglieder des Projekts, das dem Dienstkonto auf der Zulassungsliste übergeordnet ist.

  • Den Dienstkonten wurden die entsprechenden IAM-Rollen zugewiesen. Diese Rollen werden für das Projekt gewährt, das dem Dienstkonto auf der Zulassungsliste übergeordnet ist.

  • JSON-Schlüsseldateien für die Dienstkonten wurden auf die Administrator-Workstation kopiert.

  • Die CA-Zertifikatsdatei für Ihren vCenter-Server wurde auf die Administrator-Workstation kopiert.

  • config.yaml auf der Administrator-Workstation wurde vorbereitet. Sie verwenden config.yaml später zum Erstellen von Clustern.

...
- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network

All validation results were SUCCESS.

******************************************
Admin workstation VM successfully created:
- Name:    my-admin-workstation
- IP:      172.16.5.1
- SSH Key: /usr/local/google/home/me/.ssh/gke-admin-workstation
******************************************

Printing gkectl and docker versions on admin workstation...
gkectl version
gkectl 1.3.1-gke.0 (git-3aaf91927)

docker version
Client:
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.9
 Git commit:        6a30dfca03
 Built:             Mon Sep 30 22:47:02 2019
 OS/Arch:           linux/amd64
 Experimental:      false

...

Getting allowlisted service account...

Creating other service accounts and JSON key files...
    - log-mon-sa-2004211642
    - connect-agent-sa-2004211642
    - connect-register-sa-2004211642

Enabling APIs...
    - project my-project
        - serviceusage.googleapis.com
        - iam.googleapis.com
        - cloudresourcemanager.googleapis.com

Configuring IAM roles for service accounts...
    - my-allowlisted-sa for project my-project
        - roles/serviceusage.serviceUsageViewer
        - roles/iam.serviceAccountCreator
        - roles/iam.roleViewer
    - log-mon-sa-2004211642 for project my-project
        - roles/stackdriver.resourceMetadata.writer
        - roles/logging.logWriter
        - roles/monitoring.metricWriter
    - connect-agent-sa-2004211642 for project my-project
        - roles/gkehub.connect
    - connect-register-sa-2004211642 for project my-project
        - roles/gkehub.admin
        - roles/serviceusage.serviceUsageViewer

Copying files to admin workstation...
    - /usr/local/google/home/me/certs/vcenter-ca-cert.pem
    - /usr/local/google/home/me/service-account-keys/whitelisted-key.json
    - log-mon-sa-2004211642.json
    - connect-agent-sa-2004211642.json
    - connect-register-sa-2004211642.json

Preparing config.yaml for gkectl...

********************************************************************
Admin workstation is ready to use.

SSH into the admin workstation with the following command:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
********************************************************************

Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation

SSH-Verbindung zu Ihrer Administrator-Workstation abrufen

Gegen Ende der vorherigen Ausgabe finden Sie einen Befehl, mit dem Sie eine SSH-Verbindung zu Ihrer Administrator-Workstation herstellen können. Geben Sie diesen Befehl jetzt ein. Beispiel:

ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1

Rufen Sie eine Liste der Dateien auf Ihrer Administrator-Workstation auf:

ls -1

In der Ausgabe finden Sie eine GKE On-Prem-Konfigurationsdatei, Ihre CA-Zertifikatsdatei und die JSON-Schlüsseldateien für Ihre Dienstkonten:

config.yaml
connect-agent-sa-200303-143027.json
connect-register-sa-200303-143027.json
log-mon-sa-200303-143027.json
the-root.crt
whitelisted-key.json

GKE On-Prem-Konfigurationsdatei prüfen

Auf Ihrer Administrator-Workstation wurde Ihre Konfigurationsdatei mit dem Namen config.yaml erstellt. Sie verwenden diese Datei später zum Erstellen Ihrer Administrator- und Nutzercluster. Öffnen Sie config.yaml mit einem Texteditor. Beachten Sie, dass viele Felder bereits Werte enthalten, die Sie in der Datei admin-ws-config.yaml angegeben haben. Beispiel:

vcenter:
  credentials:
    address: 203.0.113.1
    username: administrator@vsphere.local
    password: STyZ2T#Ko2o
  datacenter: MY-DATACENTER
  datastore: MY-DATASTORE
  cluster: MY-CLUSTER
  network: MY-VM-NETWORK
…
gkeconnect:
  projectid: my-project-id
  registerserviceaccountkeypath: /home/ubuntu/connect-register-sa-xxx.json
  agentserviceaccountkeypath: /home/ubuntu/connect-agent-sa-xxx.json
stackdriver:
  projectid: my-project-id
  clusterlocation: ""
  enablevpc: false
  serviceaccountkeypath: /home/ubuntu/log-mon-sa-xxx.json

Ein einzelnes Google Cloud-Projekt verwenden

Die GKE On-Prem-Konfigurationsdatei enthält mehrere Felder, in denen Sie eine Google Cloud-Projekt-ID angeben können. Beispielsweise haben Sie die Möglichkeit, eine Projekt-ID für gkeconnect und eine andere Projekt-ID für stackdriver festzulegen:

gkeconnect:
  projectid: ""
...
stackdriver:
  projectid: ""

Wenn gkeadm Ihre GKE On-Prem-Konfigurationsdatei vorbereitet hat, werden alle projectid-Felder auf das Projekt festgelegt, das dem Dienstkonto auf der Zulassungsliste übergeordnet ist. Außerdem hat gkeadm Ihren Dienstkonten Rollen für das Projekt zugewiesen, das dem Dienstkonto auf der Zulassungsliste übergeordnet ist. Kurz gesagt: gkeadm hat ein einzelnes Google Cloud-Projekt verwendet.

Wenn Sie die erhöhte Flexibilität durch Verwendung mehrerer Google Cloud-Projekte nutzen möchten, müssen Sie die projectid-Felder manuell ausfüllen und Ihren Dienstkonten manuell Rollen zuweisen. Weitere Informationen dazu finden Sie unter Mehrere Google Cloud-Projekte verwenden.