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
-AttributsACCOUNT
: 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
unduser-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.