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.

Die Schritte in diesem Dokument verwenden das gkeadm-Befehlszeilentool, das für Linux, Windows 10, Windows Server 2019 und macOS Catalina verfügbar ist.

gkeadm herunterladen

Linux

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

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

Windows

gkeadm-Befehlszeilentool herunterladen

gsutil cp gs://gke-on-prem-release-public/gkeadm/1.5.2-gke.3/windows/gkeadm.exe ./

macOS

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

gsutil cp gs://gke-on-prem-release-public/gkeadm/1.5.2-gke.3/darwin/gkeadm ./
chmod +x gkeadm

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.

Eingefügte Werte

In die folgenden Felder Ihrer Konfigurationsdatei werden automatisch Standardwerte oder generierte Werte eingefügt: Beispiel:

adminWorkstation:
  name: gke-admin-ws-200617-113711
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk
  dataDiskMB: 512
  ntpServer: ntp.ubuntu.com

Übernehmen Sie alle Standardwerte und generierten Werte.

Beachten Sie den generierten Wert von dataDiskName. Dieses Laufwerk für virtuelle Maschinen (Virtual Machine Disk, VMDK) wird für Sie erstellt. Wenn Sie Ihre Administrator-Workstation später manuell löschen, wird das VMDK ebenfalls gelöscht.

Werte für die übrigen Felder der Konfigurationsdatei eintragen

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 für den Komponentenzugriff. Dieses Konto verwendet GKE On-Prem zum Herunterladen von Komponenten aus Container Registry. Informationen zum Erstellen einer JSON-Schlüsseldatei finden Sie unter Dienstkonten und Schlüssel.

Wenn gkeadm Ihre Administrator-Workstation erstellt, wird das Dienstkonto für den Komponentenzugriff auf der Administrator-Workstation aktiviert.

Beispiel:

gcp:
  whitelistedServiceAccountKeyPath: "my-key-folder/component-access-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:

vCenter:
  credentials:
    username: "administrator@vsphere.local"

vCenter.credentials.password

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

vCenter:
  credentials:
    password: "#STyZ2T#Ko2o"

vCenter.datacenter

String. Der Name Ihres vSphere-Rechenzentrums. Beispiel:

vCenter:
  datacenter: "MY-DATACENTER"

vCenter.datastore

String. Der Name Ihres vSphere-Datenspeichers. Beispiel:

vCenter:
  datastore: "MY-DATASTORE"

vCenter.cluster

String. Der Name Ihres vSphere-Clusters. Beispiel:

vCenter:
  cluster: "MY-CLUSTER"

vCenter.network

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

Wenn der Name ein Sonderzeichen enthält, müssen Sie dafür eine Escapesequenz verwenden.

Sonderzeichen Escapesequenz
Schrägstrich (/) %2f
Umgekehrter Schrägstrich (\) %5c
Prozentzeichen (%) %25

Wenn der Netzwerkname nicht eindeutig ist, kann ein Pfad zum Netzwerk angegeben werden, z. B. /DATACENTER/network/NETWORK_NAME.

Beispiel:

vCenter:
  network: "MY-VM-NETWORK"

vCenter.resourcePool

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

vCenter:
  resourcePool: "MY-POOL"

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

vCenter:
  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:

vCenter:
  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 "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.network.ipAllocationMode

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

adminWorkstation:
  network:
    ipAllocationMode: "static"

adminWorkstation.network.hostConfig.ip

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

adminWorkstation:
  network:
    hostconfig:
      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:

adminWorkstation:
  network:
    hostconfig:
      gateway: "172.16.6.254"

adminWorkstation.network.hostConfig.netmask

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

adminWorkstation:
  network:
    hostconfig:
      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:

adminWorkstation:
  network:
    hostconfig:
      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:

adminWorkstation:
  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/component-access-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: "gke-admin-ws-200617-113711"
  cpus: 4
  memoryMB: 8192
  diskGB: 50
  dataDiskName: "gke-on-prem-admin-workstation-data-disk/gke-admin-ws-200617-113711-data-disk.vmdk"
  dataDiskMB: 512
  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: "ntp.ubuntu.com"

Administrator-Workstation erstellen

Das Google-Konto, das als SDK-Attribut account festgelegt ist, muss diese IAM-Rollen haben, damit gkeadm Dienstkonten für Sie erstellen und verwalten kann:

  • resourcemanager.projectIamAdmin
  • serviceusage.serviceUsageAdmin
  • iam.serviceAccountCreator
  • iam.serviceAccountKeyAdmin

So rufen Sie den Wert Ihres SDK-Attributs account auf:

gcloud config get-value account

Zum Gewähren von Rollen müssen Sie für Ihr Google Cloud-Projekt bestimmte Berechtigungen haben. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Wenn Sie die erforderlichen Berechtigungen haben, können Sie die Rollen selbst zuweisen. Andernfalls muss eine andere Person in Ihrer Organisation die Rollen für Sie zuweisen.

So weisen Sie die Rollen zu:

Linux und macOS

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

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

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="user:ACCOUNT" \
    --role="roles/iam.serviceAccountKeyAdmin"

Windows

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

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

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountCreator"

gcloud projects add-iam-policy-binding PROJECT_ID ^
    --member="user:ACCOUNT" ^
    --role="roles/iam.serviceAccountKeyAdmin"

Ersetzen Sie Folgendes:

  • PROJECT_ID: Wert Ihres SDK-project-Attributs
  • ACCOUNT: Wert Ihres SDK-account-Attributs.

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 für den Komponentenzugriff übergeordnet ist.

  • Den Dienstkonten wurden die entsprechenden IAM-Rollen zugewiesen. Diese Rollen werden für das Projekt gewährt, das dem Dienstkonto für den Komponentenzugriff ü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.

  • admin-cluster.yaml und user-cluster.yaml auf der Administrator-Workstation vorbereitet. Später nutzen Sie diese Konfigurationsdateien, um Cluster zu erstellen.

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

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.4.0-gke.13 (git-b39331512)

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 ... service account...<

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

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

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

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

Preparing "admin-cluster.yaml" for gkectl...
Preparing "user-cluster.yaml" for gkectl...

********************************************************************
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.5.1
********************************************************************

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 sehen Sie zwei Clusterkonfigurationsdateien, Ihre CA-Zertifikatsdatei und die JSON-Schlüsseldateien für Ihre Dienstkonten:

admin-cluster.yaml
connect-agent-sa-2007081316.json
connect-register-sa-2007081316.json
log-mon-sa-2007081316.json
user-cluster.yaml
vcenter-ca-cert.pem
component-access-key.json

Clusterkonfigurationsdateien prüfen

Auf Ihrer Administrator-Workstation hat gkeadm zwei Clusterkonfigurationsdateien erstellt: admin-cluster.yaml und user-cluster.yaml. Sie verwenden diese Dateien später, um Ihre Administrator- und Nutzercluster zu erstellen.

Öffnen Sie admin-cluster.yaml in einem Texteditor. Beachten Sie, dass viele Felder bereits Werte enthalten, die Sie in der Datei admin-ws-config.yaml angegeben haben. Beispiel:

apiVersion: v1
kind: AdminCluster
bundlePath: /var/lib/gke/bundles/gke-onprem-vsphere-1.4.0-gke.13-full.tgz
vCenter:
  address: 203.0.113.1
  datacenter: MY-DATACENTER
  cluster: MY-CLUSTER
  resourcePool: MY-POOL
  datastore: MY-DATASTORE
  caCertPath: vcenter-ca-cert.pem
  credentials:
    username: administrator@vsphere.local
    password: STyZ2T#Ko2o
...
gcrKeyPath: component-access-key.json
stackdriver:
  projectID: my-project-id
  serviceAccountKeyPath: log-mon-sa-2007081316.json

Öffnen Sie user-cluster.yaml. Beachten Sie, dass viele Felder bereits Werte enthalten, die Sie in der Datei admin-ws-config.yaml angegeben haben. Beispiel:

apiVersion: v1
kind: UserCluster
gkeOnPremVersion: 1.4.0-gke.13
...
stackdriver:
  projectID: my-project-id
  serviceAccountKeyPath: log-mon-sa-2007081316.json
gkeConnect:
  projectID: my-project-id
  registerServiceAccountKeyPath: connect-register-sa-2007081316.json
  agentServiceAccountKeyPath: connect-agent-sa-2007081316.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 für den Komponentenzugriff übergeordnet ist. Außerdem hat gkeadm Ihren Dienstkonten Rollen für das Projekt zugewiesen, das Ihrem Dienstkonto ü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.