Kompetenzprofil: Bereitstellungsingenieur
Als Betreiber können Sie eine Organisation erstellen, um Kunden Zugriff auf die Infrastruktur der Plattform zu gewähren. Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolle „Organisationsadministrator“ zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Organisation benötigen.
Die Organization-Ressource ist der Stammknoten der Google Distributed Cloud (GDC) Air-Gap-Ressourcenhierarchie. Alle Ressourcen, die zu einer Organisationsgruppe gehören, werden unter dem Organisationsknoten gruppiert. Dies ermöglicht die zentralisierte Sichtbarkeit und Steuerung aller Ressourcen einer Organisation.
Weitere Informationen zu Organisationen finden Sie unter Organisationen.
1.1 Hinweise
Prüfen Sie, ob Folgendes installiert ist:
Ein Browser auf Ihrem System.
Die Git-Befehlszeile.
Die kubectl-Befehlszeile.
Die gcloud CLI.
1.2 OIDC-Client in OC IT ADFS erstellen
Folgen Sie der Anleitung zur ADFS-OIDC-Konfiguration, um einen OpenID Connect-Client (OIDC) in ADFS für den Operator zu erstellen, damit er auf die Organisation zugreifen kann, die Sie erstellen möchten. Notieren Sie sich die Client-ID und den Clientschlüssel des OIDC-Clients. Sie dürfen den Client nicht für Verbindungen zu anderen Clustern wie dem Administrator-Root-Cluster und anderen Administratorclustern der Organisation oder zu Diensten wie ServiceNow wiederverwenden.
Fügen Sie die folgende GKE Identity Service-Callback-URL der Zulassungsliste im ADFS-OIDC-Client hinzu, den Sie für die Organisation erstellen möchten:
https://ais-core.ORG_NAME.GDC_URL.GDC_DOMAIN/finish-loginBeispiel:
- Name der Organisation:
operations - Name der Distributed Cloud-Instanz:
google - Domainname der Distributed Cloud:
gdch.test
Die GKE Identity Service-Callback-URL ist in diesem Fall
https://ais-core.operations.google.gdch.test/finish-login.- Name der Organisation:
Fügen Sie die folgende GKE Identity Service-Callback-URL der Zulassungsliste im ADFS-OIDC-Client hinzu, den Sie für jede Zone in Ihrem GDC-Universum erstellt haben:
https://ais-core.ORG_NAME.ZONE.GDC_URL.GDC_DOMAIN/finish-loginBeispiel:
- Name der Organisation:
operations - Zonenname:
zone-1 - Name der Distributed Cloud-Instanz:
google - Domainname der Distributed Cloud:
gdch.test
Die GKE Identity Service-Callback-URL ist in diesem Fall
https://ais-core.operations.zone-1.google.gdch.test/finish-login.- Name der Organisation:
Legen Sie die folgenden Variablen für die Verwendung in den nächsten Abschnitten fest:
export ADFS_CERT_BASE64=ADFS_CERT_BASE64 export ADFS_CLIENT_ID=ADFS_CLIENT_ID export ADFS_CLIENT_SECRET=ADFS_CLIENT_SECRET export ADFS_ISSUER_URI=ADFS_ISSUER_URIErsetzen Sie die Variablen durch die folgenden Werte:
Variable Definition ADFS_CERT_BASE64Die base64-codierte adfs.pem-Datei.ADFS_CLIENT_IDDie ADFS-Client-ID. ADFS_CLIENT_SECRETDas gemeinsame Secret des ADFS-Clients. ADFS_ISSUER_URIDer ADFS-Aussteller-URI. Den URI finden Sie im Pfad /adfs/.well-known/openid-configurationdes ADFS-Servers:
curl -s https://fs.opscenter.local/adfs/.well-known/openid-configuration | jq '.issuer' "https://fs.opscenter.local/adfs"
Der Wert ist in der Regelhttps://adfs.domain.com/adfs.
1.3 Globale Subnetze erstellen und für jede Zone aufteilen
Bevor Sie eine Organisation erstellen, müssen Sie die globalen Stamm-Subnetze erstellen und sie mit dem IPAM-Subnetz (IP Address Management) für jede Zone aufteilen. Wenn Sie eine neue V2-Organisation in einer Zone erstellen, in der zuvor eine V1-Organisation vorhanden war, sollten Sie sich vor dem Erstellen Ihrer globalen Subnetze die Seite mit den zusätzlichen Voraussetzungen ansehen.
Globale Root-Subnetze hosten den Root-IP-Adressbereich (CIDR), der in jede Zone aufgeteilt wird, um alle Cluster in der Mandantenorganisation zu booten, einschließlich des Infrastrukturclusters der Organisation und der Arbeitslast-VMs. Ein kleiner Teil des IP-Adressbereichs wird auch als Anycast-IP-Adresspool für Stamm-Subnetze zur Verfügung gestellt. Sie können jeder Zone automatisch dedizierte CIDRs zuweisen lassen, indem Sie einen Controller verwenden, oder Sie können jeder Zone manuell CIDRs zuweisen.
Um eine Organisation zu initialisieren, benötigen Sie den internen IP-Adressbereich aus dem OIQ (Organization Input Questionnaire). Sie müssen diese IP-Adressbereiche verwenden, um das globale Stamm-Subnetz auf dem globalen API-Server zu erstellen.
Sie müssen für jeden globalen API-Server unterschiedliche Stamm-Subnetze erstellen. Die Zuordnung des OIQ-Felds, des globalen Stamm-Subnetzwerk-Namens und des globalen API-Servers finden Sie im nächsten Abschnitt.
1.3.1 CIDR-Bereich für OIQ definieren
CIDR-Bereiche dürfen sich nicht überschneiden und nicht mit dem zone-infra-cidr.
Die zone-infra-cidr ist in jeder Zone vorhanden und kann aus dem Customer Intake Questionnaire (CIQ) abgerufen werden, sofern der Kunde sie definiert hat.
Führen Sie Folgendes aus, um die zone-infra-cidr abzurufen:
kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidr
Hier ein Beispiel für die YAML-Ausgabe:
apiVersion: system.private.gdc.goog/v1alpha1
kind: CIDRClaim
metadata:
name: zone-infra-cidr
namespace: gpc-system
spec:
ipv4Spec:
staticCidrBlocks:
- 192.0.2.0/24
ipv6Spec:
staticCidrBlocks:
- 2001:db8::/32
status:
ipv4AllocationStatus:
cidrBlocks:
- 192.0.2.0/24
ipv6AllocationStatus:
cidrBlocks:
- 2001:db8::/32
In diesem Beispiel ist zone-infra-cidr gleich 192.0.2.0/24. Daher dürfen sich keine Felder im OIQ mit 192.0.2.0/24 überschneiden.
In der folgenden Tabelle sind die OIQ-Felder und die entsprechenden Standardmindestwerte aufgeführt:
| OIQ-Feld | Beschreibung | Erforderliche Mindestgröße | Mindestgröße pro Zone für die Organisation | Name des globalen Root-Subnetzes | Globaler API-Server |
|---|---|---|---|---|---|
infraVPCCIDR |
Systemarbeitslasten, einschließlich der Organisationskonsole, Management-APIs und Dienste von Google. | \( 15 - \lceil \log_2(ZoneNumber) \rceil \) | 16 | infra-vpc-root-cidr |
Globale Root |
defaultVPCCIDR |
Nutzerarbeitslasten und Endpunkte in der Standard-VPC über Zonen hinweg. | \( 16 - \lceil \log_2(ZoneNumber) \rceil \) | 16 | default-vpc-root-cidr |
Globale Organisation |
orgAdminExternalCIDR |
Arbeitslasten und Endpunkte im Perimeter-Cluster, die den administrativen Traffic zwischen dem externen Netzwerk und der Organisation verarbeiten. | \( 22 - \lceil \log_2(ZoneNumber) \rceil \) | 23 | admin-external-root-cidr |
Globale Root |
orgDataExternalCIDR |
Arbeitslasten und Endpunkte, die für Nutzer extern erreichbar sind, z. B. externe Load-Balancer und Egress-NATs. | \( 22 - \lceil \log_2(ZoneNumber) \rceil \) | 23 | data-external-root-cidr |
Globale Root |
Wenn Sie nicht genügend IP-Adressen für das empfohlene Standardminimum haben, müssen Sie die Subnetze für jede Zone manuell aufteilen.
Für IPv4-Subnetzbereiche gelten die folgenden Einschränkungen:
orgDataExternalCIDR,orgAdminExternalCIDR,infraVPCCIDRunddefaultVPCCIDRdürfen sich nicht überschneiden, nicht mit anderen zugewiesenen Bereichen innerhalb der Organisation und nicht mit IPv4-Bereichen in Peering-Netzwerken. Die CIDRs für diese stammen aus dem privaten Adressbereich von RFC 1918.Peering-Netzwerke: Das können beliebige Subnetze sein, die mit externen Netzwerken über Interconnect-Anhänge beworben werden, oder Subnetze, die mit anderen VPCs in derselben Organisation verbunden sind.
Wenn Organisationen dieselben
AttachmentGroup-Ressourcen für die Verbindung nutzen, müssen die Werte fürorgDataExternalCIDRundorgAdminExternalCIDReindeutig sein. Andernfalls ist eine Überschneidung mit anderen Organisationen zulässig.
1.3.2 Globale Subnetze auf dem globalen API-Server für den Administrator erstellen
Sie müssen die folgenden Subnetze auf dem globalen Root-Admin-API-Server erstellen, bevor Sie eine Organisation erstellen:
infra-vpc-root-cidradmin-external-root-cidrdata-external-root-cidr
Diese Subnetze sind erforderlich, um den Infrastrukturcluster der Organisation in jeder Zone zu starten.
Sie benötigen einen Namespace mit einem Namen, der mit dem Namen der Organisation übereinstimmt, den Sie Ihrer Organisation zuweisen. Prüfen Sie, ob dieser Namespace vorhanden ist:
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespaceWenn dieser Namespace nicht vorhanden ist, erstellen Sie ihn:
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG create namespace ORG_NAMEErstellen Sie die YAML-Datei für das
infra-vpc-root-cidr-Subnetz, z. B.ORG_NAME-infra-vpc-root-cidr.yaml:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: INFRA_VPC_CIDR type: RootErstellen Sie die YAML-Datei für das
admin-external-root-cidr-Subnetz, z. B.ORG_NAME-admin-external-root-cidr.yaml:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: admin ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: admin-external-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ORG_ADMIN_EXTERNAL_CIDR type: RootErstellen Sie die YAML-Datei für das
data-external-root-cidr-Subnetz, z. B.ORG_NAME-data-external-root-cidr.yaml:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: data-external-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ORG_DATA_EXTERNAL_CIDR type: RootKopieren Sie die YAML-Dateien für die Subnetze
infra-vpc-root-cidr,admin-external-root-cidrunddata-external-root-cidrin das IAC-Repository für die Stammorganisation:cp YAML_FILE_PATH/ORG_NAME-infra-vpc-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-admin-external-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-data-external-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/Prüfen Sie, ob die Datei
kustomization.yamlim Stammverzeichnis der Organisation die neu hinzugefügtenSubnet-Definitionen enthält. Prüfen SieIAC_REPO_PATH/iac/infrastructure/global/orgs/root/kustomization.yaml:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME-admin-external-root-cidr.yaml - ORG_NAME-data-external-root-cidr.yaml - ORG_NAME-infra-vpc-root-cidr.yamlStellen Sie die YAML-Dateien für das Subnetz bereit und übertragen Sie sie:
git add "IAC_REPO_PATH/iac/infrastructure" git commitZusammenführungsanfrage erstellen:
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchWarten Sie auf die Codeüberprüfung und das Zusammenführen.
1.3.3 Stamm-Subnetze für Zonen aufteilen
Globale Stamm-Subnetze enthalten den Stamm-IP-Adressbereich (CIDR) für alle Zonen. Damit der IP-Adressbereich in der Zone verwendet werden kann, müssen die globalen Stamm-Subnetze zuerst in kleinere Subnetze aufgeteilt werden. Jede Zone muss mindestens einen Root-IP-Adressbereich haben.
IPAM hat einen globalen Controller, der das globale Stamm-Subnetz automatisch in kleinere Subnetze für vorhandene Zonen aufteilt. Administratoren können IPAM-Controllern die Aufgabe übertragen, das Subnetz der Zone automatisch aufzuteilen, wenn sie sich nicht für den genauen CIDR-Block interessieren, den eine bestimmte Zone verwendet. Der Controller überwacht die Erstellung des globalen Stamm-Subnetzes und erstellt für jede Zone ein Subnetz mit einer festen Standardpräfixlänge.
| Subnetz des Zonen-Roots | Standardlänge des festen Präfixes |
|---|---|
defaultZoneInfraVPCSubnetSize |
16 |
defaultZoneAdminVRFSubnetSize |
23 |
defaultZoneDataVRFSubnetSize |
23 |
defaultZoneDefaultVPCSubnetSize |
16 |
defaultAnycastSubnetSize |
26 |
Die globalen Stamm-Subnetze müssen feste Namen haben, wenn die IPAM-Controller das Subnetz der Zone automatisch aufteilen sollen:
infra-vpc-root-cidradmin-external-root-cidrdata-external-root-cidrdefault-vpc-root-cidr
Wenn Sie die Annotation ipam.gdc.goog/pause-auto-division: true für Ihre Subnet-Ressourcen festlegen, müssen Sie den genauen CIDR-Block, der von einer bestimmten Zone verwendet wird, manuell definieren. Wenn Sie die globalen Stamm-Subnetze mit unterschiedlichen Namen erstellen, hat die Annotation ipam.gdc.goog/pause-auto-division keine Auswirkungen und die globalen Subnetze werden nicht automatisch aufgeteilt.
1.3.3.1. Root-Subnetze für Zonen automatisch aufteilen
Der globale Controller teilt das globale Stamm-Subnetz automatisch in kleinere Subnetze für vorhandene Zonen auf. Sehen Sie sich beispielsweise den folgenden Workflow an, um zu verstehen, wie der Controller das globale Stamm-Subnetz in kleinere Subnetze für vorhandene Zonen aufteilt:
Wenn es zwei Zonen mit den Namen zone1 und zone2 gibt, sieht ein Beispiel für ein globales Stamm-Subnetz infra-vpc-root-cidr mit dem infraVPCCIDR, z. B. 10.0.0.0/16, aus dem OIQ im Namespace org-1 so aus:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/14
type: Root
Wenn der Controller auf der GDC-Plattform bereitgestellt wird, erstellt er automatisch zwei untergeordnete Subnetze mit den Namen infra-vpc-zone1-root-cidr und infra-vpc-zone2-root-cidr mit der Präfixlänge /16:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
prefixLength: 16
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
prefixLength: 16
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
1.3.3.2. Stamm-Subnetze für Zonen manuell aufteilen
In diesem Abschnitt wird davon ausgegangen, dass Sie die Anmerkung ipam.gdc.goog/pause-auto-division: true beim Erstellen der globalen Stamm-Subnetze auf dem globalen Stamm-Admin-API-Server festgelegt haben.
Durch diese Annotation wird der Controller angehalten, um diese globalen Root-Subnetze abzugleichen. So können Sie das Root-Subnetz und das Anycast-Subnetz einer Zone manuell erstellen.
So teilen Sie das globale Root-Subnetz manuell in kleinere Subnetze für Zonen auf:
Listen Sie die Zonen in Ihrem Universum auf:
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -ABestätigen Sie den dedizierten CIDR-Bereich aus dem Stamm-Subnetz, den Sie auf Ihre Zone anwenden möchten. Wiederholen Sie diesen Schritt für jede Zone in Ihrem Universum.
Weisen Sie dem Subnetz für Ihre Zone in einer YAML-Datei, z. B.
ORG_NAME-infra-vpc-zone1-root-cidr.yaml, den dedizierten CIDR zu:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc ipam.gdc.goog/usage: zone-network-root-range annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-zone1-root-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ZONAL_CIDR zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: infra-vpc-root-cidr namespace: ORG_NAMEWiederholen Sie diesen Schritt für jede Zone in Ihrem GDC-Universum.
Bestätigen Sie den dedizierten CIDR-Bereich des Stamm-Subnetzes, den Sie auf das Anycast-Subnetz anwenden möchten.
Weisen Sie das dedizierte CIDR dem Anycast-Subnetz in einer YAML-Datei wie
ORG_NAME-infra-vpc-anycast-cidr.yamlzu:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: infra-vpc annotations: ipam.gdc.goog/pivot-destination: global-org name: infra-vpc-anycast-cidr namespace: ORG_NAME spec: ipv4Request: cidr: ANYCAST_CIDR propagationStrategy: None type: Branch parentReference: name: infra-vpc-root-cidr namespace: ORG_NAMEKopieren Sie die YAML-Dateien für zonale Subnetze in das IAC-Repository für die Stammorganisation. Angenommen, Sie haben zwei zonale Subnetz-YAML-Dateien:
cp YAML_FILE_PATH/ORG_NAME-infra-vpc-zone1-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-infra-vpc-zone2-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ cp YAML_FILE_PATH/ORG_NAME-infra-vpc-anycast-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/root/Prüfen Sie, ob die Datei
kustomization.yamlim Stammverzeichnis der Organisation die neu hinzugefügtenSubnet-Definitionen enthält. Prüfen SieIAC_REPO_PATH/iac/infrastructure/global/orgs/root/kustomization.yaml:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME-infra-vpc-zone1-root-cidr.yaml - ORG_NAME-infra-vpc-zone2-root-cidr.yaml - ORG_NAME-infra-vpc-anycast-cidr.yamlStellen Sie die YAML-Dateien für das Subnetz bereit und übertragen Sie sie:
git add "IAC_REPO_PATH/iac/infrastructure" git commitZusammenführungsanfrage erstellen:
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchWarten Sie auf die Codeüberprüfung und das Zusammenführen.
1.3.3.2.1. Beispiel für das manuelle Aufteilen von Stamm-Subnetzen für Zonen für infra-vpc
Wenn es zwei Zonen mit den Namen zone1 und zone2 gibt, sieht ein globales Stamm-Subnetz infra-vpc-root-cidr mit dem infraVPCCIDR, z. B. 192.0.2.0/24, aus dem OIQ im Namespace org-1 so aus:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: infra-vpc-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.0/24
type: Root
Erstellen Sie das Subnetz für jede Zone mit den Namen infra-vpc-zone1-root-cidr und infra-vpc-zone2-root-cidr sowie das Anycast-Subnetz infra-vpc-anycast-cidr mit dem von Ihnen gewählten dedizierten CIDR manuell:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/vpc: infra-vpc
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: infra-vpc-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.0.2.128/26
propagationStrategy: None
type: Branch
parentReference:
name: infra-vpc-root-cidr
namespace: org-1
Fügen Sie dem IAC-Repository alle YAML-Dateien für Subnetze hinzu.
1.3.3.2.2. Manuelle Aufteilung von Stamm-Subnetzen für Zonen – Beispiel für das Datensicherheitssegment
Wenn es zwei Zonen mit den Namen zone1 und zone2 gibt, sieht ein globales Stamm-Subnetz data-external-root-cidr mit dem orgDataExternalCIDR, z. B. 10.0.0.0/24, aus dem OIQ im Namespace org-1 so aus:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: data-external-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/24
type: Root
Erstellen Sie das Subnetz für jede Zone mit den Namen data-external-zone1-root-cidr und data-external-zone2-root-cidr sowie das Anycast-Subnetz data-global-anycast-cidr mit dem von Ihnen gewählten dedizierten CIDR manuell:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-external-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-external-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: data-global-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 10.0.0.128/26
propagationStrategy: None
type: Branch
parentReference:
name: data-external-root-cidr
namespace: org-1
Fügen Sie dem IAC-Repository alle YAML-Dateien für Subnetze hinzu.
1.3.3.2.3. Beispiel für das manuelle Aufteilen von Stamm-Subnetzen für Zonen für das Administratornetzwerksegment
Wenn es zwei Zonen mit den Namen zone1 und zone2 gibt, sieht ein globales Stamm-Subnetz admin-external-root-cidr mit dem orgAdminExternalCIDR, z. B. 192.168.1.0/24, aus dem OIQ im Namespace org-1 so aus:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
ipam.gdc.goog/pause-auto-division: "true"
name: admin-external-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.0/24
type: Root
Erstellen Sie das Subnetz für jede Zone mit den Namen admin-external-zone1-root-cidr und admin-external-zone2-root-cidr sowie das Anycast-Subnetz admin-global-anycast-cidr mit dem von Ihnen ausgewählten dedizierten CIDR-Bereich manuell:
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-external-zone1-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.0/26
zone: zone1
propagationStrategy: SingleZone
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: admin
ipam.gdc.goog/usage: zone-network-root-range
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-external-zone2-root-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.64/26
zone: zone2
propagationStrategy: SingleZone
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
annotations:
ipam.gdc.goog/pivot-destination: global-org
name: admin-global-anycast-cidr
namespace: org-1
spec:
ipv4Request:
cidr: 192.168.1.128/26
propagationStrategy: None
type: Branch
parentReference:
name: admin-external-root-cidr
namespace: org-1
Fügen Sie dem IAC-Repository alle YAML-Dateien für Subnetze hinzu.
1.4 Organisation mit IAC erstellen
So erstellen Sie eine Organisation mit IAC:
So generieren Sie eine Liste der verfügbaren Server und Servertypen:
kubectl get servers -n gpc-system -o jsonpath='{range .items[?(@.status.bareMetalHostStatus.provisionState=="available")]}{.metadata.name}{"\t"}{.spec.serverHardware.machineClassName}{"\t"}{.status.bareMetalHostStatus.provisionState}{"\n"}{end}'Die Beispielausgabe sieht etwa so aus:
ag-aa-bm04 o1-standard1-64-gdc-metal available ag-ab-bm07 o1-standard1-64-gdc-metal available ag-ab-bm11 o1-highmem1-96-gdc-metal available ag-ab-bm12 o1-highmem1-96-gdc-metal available ag-ab-bm13 o1-highmem1-96-gdc-metal available ag-ab-bm14 o1-highgpu1-48-gdc-metal available ag-ab-bm15 o1-highgpu1-48-gdc-metal available ag-ab-bm16 o1-highgpu1-48-gdc-metal availableWenn Sie
--server-quotaund--admin-serverspäter angeben, müssen Sie darauf achten, dass Sie genügendavailable-Server haben, um die Anfrage zu erfüllen.Rufen Sie das
iac-Repository auf und fügen Sie die Verzeichnisstruktur für die neue Organisation hinzu:mkdir -p infrastructure/global/orgs/root/ORG_NAME/Benutzerdefinierte
Organization-Ressource erstellen:gdcloud organizations config create --name ORG_NAME \ --log-retention-policy LOG_RETENTION_POLICY \ --kms-root-key-type KMS_ROOT_KEY_TYPEBeispiel:
gdcloud organizations config create --name org-1 \ --log-retention-policy paAuditLogsRetentionTime=400,ioAuditLogsRetentionTime=2000,operationalLogsRetentionTime=90,metricsRetentionTime=90 \ --kms-root-key-type ctm-rootErsetzen Sie die folgenden Variablen:
Variable Definition ORG_NAMEDer Name der Organisation. Der Name einer Organisation muss die folgenden Kriterien erfüllen:
- 3 bis 19 ASCII-Kleinbuchstaben, Ziffern oder Bindestriche enthalten.
- Muss mit einem Buchstaben beginnen.
- Am Ende darf kein Bindestrich stehen.
- Darf nicht mit der Zeichenfolge
-systemenden.
LOG_RETENTION_POLICYDie Konfiguration der Aufbewahrungszeiten für Audit-Logs, Betriebslogs und Messwerte in Tagen. KMS_ROOT_KEY_TYPEDiese Konfiguration enthält den für das KMS einer Organisation ausgewählten Stammschlüsseltyp. Jeder KMS-Dienst hat einen Root-Schlüssel zum Verschlüsseln der vom KMS generierten Schlüssel. Standardmäßig generiert der KMS einen CTM-Root-Schlüssel, einen Root-Schlüssel, der in Thales CipherTrust Manager gespeichert und durch ein physisches HSM gesichert wird. Sie können auch einen Software-Root-Schlüssel auswählen, der als Kubernetes-Secret gespeichert ist. Übergeben Sie entweder ctm-rootoderlocal-rootfürkmsRootKeyType.Ein Beispiel für die generierte YAML-Datei für die benutzerdefinierte Ressource
Organizationsieht in etwa so aus:apiVersion: resourcemanager.global.private.gdc.goog/v1alpha1 kind: Organization metadata: namespace: gpc-system name: org-1 spec: type: Tenant logRetentionPolicy: paAuditLogsRetentionTime: 400 ioAuditLogsRetentionTime: 2000 operationalLogsRetentionTime: 90 metricsRetentionTime: 90 securityConfig: kmsRootKeyType: "ctm-root"Optional: In Version 1.14.2 und höher ist die IPsec-Verschlüsselung zwischen Knoten standardmäßig deaktiviert. Wenn diese IPsec-Verschlüsselung erforderlich ist, können Sie die Node-to-Node-IPsec-Verschlüsselung aktivieren, indem Sie die YAML-Datei der benutzerdefinierten Ressource
Organizationbearbeiten und eine Annotation hinzufügen:metadata: annotations: n2n.security.private.gdc.goog/node-to-node-encryption-disabled: "false"Ein Wert von
"false"für diese Annotation aktiviert die Verschlüsselung.Erstellen Sie für jede Zone im Deployment eine benutzerdefinierte
OrganizationZonalConfig-Ressource:gdcloud organizations zonal-configs create --name ORG_NAME \ --zones=ZONES \ --version GDC_VERSION \ --server-quota SERVER_QUOTA \ --storage-sku STORAGE_SIZE \ --admin-server ADMIN_SERVERBeispiel:
gdcloud organizations zonal-configs create --name org-1 \ --zones=us-central1-a,us-central1-b \ --version 1.9.2-gdch.153 \ --server-quota o1-highmem1-40-gdc-metal=1,o1-standard1-64-gdc-metal=2,o1-highmem1-96-gdc-metal=3,o1-highmem1-104-gdc-metal=4,o1-highmem1-448-gdc-metal=5,o1-highgpu1-48-gdc-metal=6 \ --storage-sku block-standard=100Ti,file-standard=100Ti,object-standard=100Ti \ --admin-server o1-standard1-64-gdc-metal=3Ersetzen Sie die folgenden Variablen:
Variable Definition ORG_NAMEDer Name der Organisation. Der Name einer Organisation muss die folgenden Kriterien erfüllen:
- 3 bis 30 ASCII-Kleinbuchstaben, Ziffern oder Bindestriche enthalten.
- Muss mit einem Buchstaben beginnen.
- Am Ende darf kein Bindestrich stehen.
- Darf nicht mit der Zeichenfolge
-systemenden.
ZONESDie Namen der Zonen in der Bereitstellung. GDC_VERSIONDie Version des GDC-Systems, für die die Organisation erstellt werden soll. SERVER_QUOTADie Server, die für den Administratorcluster der Organisation und den Systemcluster zugewiesen werden sollen, wenn sie automatisch generiert werden. Wenn Sie GPU-Ressourcen (Graphics Processing Unit) ausführen möchten, die VM-basierte Arbeitslasten sind, z. B. vortrainierte APIs für künstliche Intelligenz und maschinelles Lernen (KI/ML), müssen Sie beim Erstellen einer Organisation GPU-Maschinen bereitstellen. Weitere Informationen finden Sie im Abschnitt GPU-Unterstützung für Systemcluster aktivieren. ADMIN_SERVEREin Schlüssel/Wert-Paar aus dem Servertyp und der Anzahl der Organisationsadministrator-Server, die für diesen Servertyp zugewiesen werden sollen. Gemischte Typen werden für Server nicht unterstützt. Der Standardwert ist o1-standard1-64-gdc-metal: 3.STORAGE_SIZEDie Größe der verschiedenen Speichertypen, die der Organisation zugewiesen werden sollen. Die Mindestgröße für Blockspeicher für eine Organisation beträgt 250 GiB. Sie wird mit dem Flag BlockStandardfestgelegt.Ein Beispiel für die generierte YAML-Datei für die benutzerdefinierte Ressource
OrganizationZonalConfigsieht in etwa so aus:apiVersion: resourcemanager.global.private.gdc.goog/v1alpha1 kind: OrganizationZonalConfig metadata: namespace: gpc-system name: org-1-zone1-config spec: organizationRef: name: org-1 zone: zone1 version: 1.5.0-gdch.11 capacities: storage: block-standard: 10Ti file-standard: 10Ti object-nearline: 10Ti object-standard: 10Ti workloadServers: o1-highmem1-40-gdc-metal: 1Überprüfen Sie die generierten YAML-Dateien. Die Dateien befinden sich im Verzeichnis
HOME.Bestätigen Sie den Organisationstyp. Es gibt zwei Arten von Organisationen, die Sie bereitstellen können:
- Org v1-Architektur (v1-Organisation)
- Architektur von Organisation v2 (Organisation v2)
Neue Organisationen werden standardmäßig basierend auf Ihrem Bereitstellungstyp bereitgestellt, der durch Ihre Feature-Gate-Einstellungen festgelegt wird:
- Bei
PRODUCTION-Bereitstellungen werden standardmäßig V2-Organisationen erstellt. - Bei
ACCREDITED-Bereitstellungen werden standardmäßig Organisationen der Version 1 erstellt.
In dem seltenen Fall, dass Sie den Standardorganisationstyp für Ihren Bereitstellungstyp überschreiben müssen, aktualisieren Sie das Feld
spec.compatibilityOptions.architectureOverridePolicyin Ihrer generierten benutzerdefinierten RessourceOrganizationaufForceV1oderForceV2, je nachdem, welchen Organisationstyp Sie verwenden möchten. Das folgende Snippet erzwingt beispielsweise die Erstellung einer v2-Organisation in einerACCREDITED-Bereitstellung:... spec: ... compatibilityOptions: architectureOverridePolicy: ForceV2 ...Prüfen Sie die verbleibenden Einstellungen, um sicherzustellen, dass Komponenten wie Speicher und Rechenleistung für die Anforderungen Ihres Unternehmens ausreichen.
Kopieren Sie die benutzerdefinierten Ressourcen
OrganizationundOrganizationZonalConfigin das Repository im Verzeichnis der neuen Organisation:cp YAML_FILE_PATH/ORG_NAME.yaml IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/cp YAML_FILE_PATH/ORG_NAME-ZONE.yaml IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/Ersetzen Sie Folgendes:
ORG_NAME: Der Organisationsname, den Sie im Befehlgdcloud organizations config createmit dem Parameter--namedefiniert haben.ZONE: Der Name jeder Zone in der Bereitstellung. Der Zonenname wird im folgenden Format abgeleitet:{generalRegion}-{regionQualifier}{regionCounter}-{zoneLetter}. Beispiel:us-central1-bBeschreibungen der Attributwerte für Zonen finden Sie im Abschnitt „Zone“ im Fragebogen zur Kundenaufnahme.
Fügen Sie die Datei
kustomization.yamlfür die neue Organisation hinzu:cat > IAC_REPO_PATH/iac/infrastructure/global/orgs/root/ORG_NAME/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - ORG_NAME.yaml - ORG_NAME-ZONE.yaml EOFFügen Sie die neue Organisation als Ressource der Stammorganisation hinzu:
Öffnen Sie die globale Stammdatei
kustomization.yaml:vim /iac/infrastructure/global/orgs/root/kustomization.yamlFügen Sie die neue
Organizationals Ressource am Ende der vorhandenen Ressourcenliste hinzu:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: global-root-kustomization resources: - ... # existing resource items - ORG_NAME
Stellen Sie die YAML-Datei der Organisation und die Kustomize-Dateien bereit und committen Sie sie:
git add "IAC_REPO_PATH/iac/infrastructure" git commitZusammenführungsanfrage erstellen:
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchWarten Sie auf die Codeüberprüfung und das Zusammenführen.
Prüfen Sie, ob die globale Organisation und die zonalen Konfigurationen verfügbar sind:
Prüfen Sie, ob die globale Organisation in Ihrem GDC-Universum verfügbar ist:
kubectl get organization -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system org 34s gpc-system root 14hGlobalen Organisationsstatus prüfen:
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG \ get organization/ORG_NAME -n gpc-system -o yamlPrüfen Sie, ob die
status-Bedingungen in der YAML-AusgabeTruesind.Prüfen Sie den Status der Organisationskonfiguration in jeder Zone:
kubeconfig --kubeconfig ROOT_ADMIN_KUBECONFIG \ get organization/ORG_NAME -n gpc-system -o yamlWenn Sie zonale Kontexte wechseln möchten, melden Sie sich mit der gcloud CLI in jeder Zone an, bevor Sie den Organisationsstatus prüfen. Die
status-Bedingungen in der YAML-Ausgabe für jede Zone müssenTruesein.
1.5 Globale Subnetze auf dem globalen API-Server der Organisation erstellen
Sie müssen die default-vpc-root-cidr auf dem globalen API-Server der Organisation im Namespace platform erstellen, nachdem der globale API-Server ausgeführt wird.
In diesem Stamm-Subnetz wird die IP-Adresse für Cluster innerhalb der Mandantenorganisation, z. B. Nutzercluster, sowie IP-Adressen für VM-Arbeitslasten zugewiesen.
Erstellen Sie die YAML-Datei für das
default-vpc-root-cidr-Subnetz, z. B.default-vpc-root-cidr.yaml:apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/allocation-preference: default ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: network-root-range name: default-vpc-root-cidr # don't change the name if you want IPAM controller to automatically divide the zone's subnet. namespace: platform spec: type: Root ipv4Request: cidr: DEFAULT_VPC_CIDRWechseln Sie zum Repository
iacund fügen Sie die Verzeichnisstruktur für die globale Organisation hinzu:cd iac; mkdir -p infrastructure/global/orgs/ORG_NAME/Kopieren Sie die YAML-Datei für das
default-vpc-root-cidr-Subnetz in das IAC-Repository im Verzeichnis der neuen Organisation:cp YAML_FILE_PATH/default-vpc-root-cidr.yaml \ IAC_REPO_PATH/iac/infrastructure/global/orgs/ORG_NAME/Erstellen Sie die Datei
kustomization.yamlim Organisationsordner mit den neu hinzugefügtenSubnet-Definitionen. Prüfen SieIAC_REPO_PATH /iac/infrastructure/global/orgs/ORG_NAME/kustomization.yaml:cat > infrastructure/global/orgs/ORG_NAME/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - default-vpc-root-cidr.yaml EOFStellen Sie die YAML-Datei der Organisation und die Kustomize-Dateien bereit und committen Sie sie:
git add "IAC_REPO_PATH/iac/infrastructure" git commitZusammenführungsanfrage erstellen:
git checkout -b ${USERNAME1}-branch git -c http.sslVerify=false push -o merge_request.create origin {USERNAME1}-branchWarten Sie auf die Codeüberprüfung und das Zusammenführen.
Ähnlich wie die globalen Subnetze im globalen Administratorcluster auf oberster Ebene aufgeteilt werden, wird auch default-vpc-root-cidr aufgeteilt und an jede Zone weitergegeben, damit die zonale Organisation IP-Adressen nutzen kann.
1.7. NTPRelay für Organisationsadministrator konfigurieren
Sie müssen die Authentifizierung zwischen den NTPRelays des Root-Administrators und des Organisationsadministrators manuell konfigurieren.
Folgen Sie NTP-P0001.3 (Root Admin -> Org Admin NTPRelay Encryption), um die Verschlüsselung für diese Organisation zu konfigurieren.
1.8. IO-Identitätsanbieter mit IAC mit der Organisation verbinden
Erstellen Sie einen OIDC-Client in ADFS für die neue Organisation und notieren Sie sich die Client-ID und den Clientschlüssel des OIDC-Clients.
Legen Sie den Namen Ihrer Organisation als Umgebungsvariable fest:
export ORG_NAME=ORG_NAMEPrüfen Sie, ob
ORG_NAMEgenau mit dem Namen der Organisation übereinstimmt.Exportieren Sie die kubeconfig-Datei des Administratorclusters auf Stammebene und führen Sie die folgenden
kubectl-Befehle aus, um die Cluster- und Zonennamen abzurufen:export KUBECONFIG=ROOT_ADMIN_KUBECONFIG kubectl get clusters -A kubectl get zones -n mz-systemFügen Sie die Datei
ioauthmethod.yamlfür die Organisation hinzu:cat > infrastructure/global/orgs/${ORG_NAME}/ioauthmethod.yaml << EOF apiVersion: iam.global.private.gdc.goog/v1alpha1 kind: IOAuthMethod metadata: name: io-idp-authmethod namespace: gpc-system oidc: certificateAuthorityData: ADFS_CERT_BASE64 clientID: ADFS_ORG_CLIENT_ID clientSecret: ADFS_ORG_CLIENT_SECRET groupPrefix: gdch-infra-operator- groupsClaim: groups issuerURI: ADFS_ISSUER_URI scopes: openid email offline_access userClaim: email userPrefix: gdch-infra-operator- cloudConsoleRedirectURI: http://cloud.console.not.enabled kubectlRedirectURI: http://localhost:9879/callback EOFErsetzen Sie die folgenden Variablen:
Variable Definition ADFS_CERT_BASE64Die Base64-Codierung des Zertifikats, das ADFS zum Selbstsignieren verwendet und das GKE Identity Service benötigt, um eine sichere Verbindung mit einer internen ADFS-Instanz herzustellen. ADFS_ORG_CLIENT_IDDie OpenID Connect-ID für den Client der Organisation in ADFS. ADFS_ORG_CLIENT_SECRETDer OpenID Connect-Schlüssel für den Client der Organisation, der in ADFS registriert ist. ADFS_ISSUER_URIEin gültiger Aussteller-URI, der vom GKE Identity Service benötigt wird, um Weiterleitungsanmeldungsanfragen an ADFS zuzulassen. Fügen Sie die Datei
initial-admin.yamlfür die Organisation hinzu:cat > infrastructure/global/orgs/${ORG_NAME}/initial-admin.yaml << EOF apiVersion: iam.private.gdc.goog/v1alpha1 kind: ExpirationClusterRoleBinding metadata: name: iac-binding-USER-org-iam-admin spec: expirationTimestamp: EXPIRATION roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: organization-iam-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: gdch-infra-operator-USER@opscenter.local EOFErsetzen Sie die folgenden Variablen:
Variable Definition USERDer Nutzername mit dem Präfix des IO, mit dem Sie sich zuerst im Cluster anmelden. Denken Sie daran, das Präfix an den Nutzernamen anzuhängen. EXPIRATIONDer Zeitstempel im RFC 3339-Format, zu dem das System den Zugriff widerruft. Beispiel: "2020-11-14T00:20:12+00:00".Hängen Sie neu erstellte Dateien an die Datei
kustomization.yamlunterIAC_REPO_PATH /iac/infrastructure/global/orgs/ORG_NAME/kustomization.yamlan:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization metadata: name: ORG_NAME-kustomization resources: - ... # existing resource items - ioauthmethod.yaml - initial-admin.yamlStellen Sie die YAML-Datei der Organisation und die Kustomize-Dateien bereit und committen Sie sie:
git add "infrastructure/global" git add "infrastructure/zonal" git commitÜbertragen Sie die Aktualisierung per Push an GitLab:
git -c http.sslVerify=false pushWarten Sie auf die Codeüberprüfung und das Zusammenführen.
Um zu bestätigen, dass der Operator auf die Organisation zugreifen kann, melden Sie sich in der generierten Organisation an und führen Sie den folgenden Befehl aus, um zu prüfen, ob in der
ClientConfigder Organisation ein Identitätsanbieter (IdP) vorhanden ist:Legen Sie die kubeconfig-Datei des Administratorclusters entsprechend der Architektur Ihrer Organisation fest:
Führen Sie für eine v1-Organisation Folgendes aus:
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGErsetzen Sie ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad zur kubeconfig des Administratorclusters der Organisation, z. B.
/tmp/${ORG}-admin-kubeconfig.Führen Sie für eine v2-Organisation Folgendes aus:
export KUBECONFIG=ORG_INFRA_CLUSTER_KUBECONFIGErsetzen Sie ORG_INFRA_CLUSTER_KUBECONFIG durch den Pfad zur kubeconfig des Infrastrukturclusters der Organisation, z. B.
/tmp/${ORG}-infra-kubeconfig.
Prüfen Sie, ob in der
ClientConfigder Organisation ein IdP vorhanden ist:kubectl get ClientConfig default -n kube-public -o yaml
Bei Version 1.14.3 müssen Sie die Rolle
global-zone-viewermanuell anwenden, damit alle authentifizierten Nutzer die Zonen in einem Universum mit der gcloud CLI ansehen können. Wenden Sie die Ressourcen für Rolle und Rollenbindung an:kubectl --kubeconfig ORG_GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: global-zone-viewer namespace: mz-system rules: - apiGroups: - location.mz.global.private.gdc.goog resources: - zones verbs: - get - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: global-zone-viewer-binding namespace: mz-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: global-zone-viewer subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:authenticated EOFErsetzen Sie
ORG_GLOBAL_API_SERVER_KUBECONFIGdurch die kubeconfig-Datei des globalen API-Servers der Organisation. Weitere Informationen finden Sie unter kubeconfig-Datei manuell generieren.
1.9. Identitätsanbieter des Kunden mit der Organisation verbinden
So verbinden Sie einen Kundenidentitätsanbieter (IdP) mit der Organisation und melden sich mit den Identitäten des Kunden in der Organisation an:
Melden Sie sich über die CLI mit dem ursprünglichen IO-Administratorkonto an, das bei der Organisationseinrichtung festgelegt wurde. Dieses Konto ist automatisch an
org-iam-adminim Administratorcluster der Organisation gebunden.Bitte den Kunden, die folgende globale AIS-Callback-URL auf die Zulassungsliste im OIDC- oder SAML-Client zu setzen, den er für die Organisation erstellt hat, die Sie erstellen werden:
https://ais-core.ORG_NAME.GDC_URL/finish-loginWenn die Stamm-URL von GDC beispielsweise
.google.gdch.testlautet und der Name der Organisationoperationsist, lautet die globale AIS-Callback-URLhttps://ais-core.operations.google.gdch.test/finish-login.Wenn Sie einen SAML-Client verwenden, müssen Sie auch die folgende globale AIS-SAML-Callback-URL zur Zulassungsliste hinzufügen:
https://ais-core.ORG_NAME.GDC_URL/saml-callbackBitte den Kunden, die folgende AIS-Callback-URL in der Zulassungsliste des OIDC- oder SAML-Clients hinzuzufügen, den er für jede Zone erstellt hat. Für ein Universum mit drei Zonen sehen die zonalen AIS-Callback-URLs beispielsweise so aus:
https://ais-core.ORG_NAME.ZONE_1.GDC_URL/finish-login https://ais-core.ORG_NAME.ZONE_2.GDC_URL/finish-login https://ais-core.ORG_NAME.ZONE_3.GDC_URL/finish-loginWenn die Stamm-URL von GDC
.google.gdch.test, der Zonennamezone-1und der Name der Organisationoperationsist, lautet die AIS-Callback-URLhttps://ais-core.operations.zone-1.google.gdch.test/finish-login.Wenn Sie einen SAML-Client verwenden, müssen Sie auch die folgenden AIS-SAML-Callback-URLs für jede Zone zur Zulassungsliste hinzufügen:
https://ais-core.ORG_NAME.ZONE_1.GDC_URL/saml-callback https://ais-core.ORG_NAME.ZONE_2.GDC_URL/saml-callback https://ais-core.ORG_NAME.ZONE_3.GDC_URL/saml-callbackLegen Sie die kubeconfig-Datei des Administratorclusters entsprechend der Architektur Ihrer Organisation fest. Wenn Sie die kubeconfig-Variable bereits festgelegt haben, überspringen Sie diesen Schritt.
Führen Sie für eine v1-Organisation Folgendes aus:
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGErsetzen Sie ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad zur kubeconfig des Administratorclusters der Organisation, z. B.
/tmp/${ORG}-admin-kubeconfig.Führen Sie für eine v2-Organisation Folgendes aus:
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIGErsetzen Sie MANAGEMENT_API_SERVER_KUBECONFIG durch den Pfad zur kubeconfig des Management API-Servers, z. B.
/tmp/${ORG}-management-kubeconfig.
Entscheiden Sie anhand des Kundensupporttickets für eine neue Organisation, ob der IdP OIDC oder SAML verwendet. Folgen Sie der Anleitung für den entsprechenden Identitätsanbietertyp:
Einrichtung mit OIDC
Erstellen Sie eine
identity-provider-config.yaml-Datei und füllen Sie sie aus. Verwenden Sie dazu die Tickets zur Organisationserstellung, um die Werte für den Account-IdP des primären Administrators zu ermitteln:cat << EOF > identity-provider-config.yaml apiVersion: iam.global.gdc.goog/v1 kind: IdentityProviderConfig metadata: name: pa-idp-oidc namespace: platform spec: oidc: certificateAuthorityData: "PA_IDP_BASE64_ENCODED_CERTIFICATE" clientID: PA_IDP_CLIENT_ID clientSecret: PA_IDP_CLIENT_SECRET groupPrefix: PA_IDP_GROUP_CLAIM groupsClaim: PA_IDP_PREFIX issuerURI: PA_IDP_ISSUER_URI scopes: openid email profile userClaim: PA_IDP_USER_CLAIM userPrefix: PA_IDP_PREFIX EOFHier finden Sie die detaillierten Beschreibungen der Felder:
Attribut Attributtyp Beschreibung certificateAuthorityDataVerbindlich Ein standardmäßig base64-codiertes, PEM-formatiertes Zertifizierungsstellen-Zertifikat für den OIDC-Anbieter. clientIDVerbindlich Die ID für die Clientanwendung, die Authentifizierungsanfragen an den OpenID-Anbieter sendet. clientSecretVerbindlich Das gemeinsame Secret zwischen der OIDC-Clientanwendung und dem OIDC-Anbieter. extraParamsOptional Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, die abfragecodiert und mit der Authentifizierungsendpunktanfrage gesendet werden. groupPrefixOptional Das Präfix, das der Gruppenanforderung vorangestellt werden soll, um Konflikte mit vorhandenen Gruppen zu vermeiden. Es wird in der Regel verwendet, wenn mehrere Identitätsanbieter konfiguriert werden.
Sie müssen das Gruppenpräfix vor allen Gruppennamen einfügen. Wenn Sie beispielsweisemyprefix-als Gruppenpräfix und eine Gruppe mit dem NamengroupAin Ihrem Identitätsanbieter haben, müssen Sie beim Hinzufügen einer Richtlinie oder Bindungmyprefix-groupAbinden. Der Gruppenname wird im FeldgroupsClaimfestgelegt.groupsClaimOptional Der Name des Anspruchs im OIDC-ID-Token, das die Informationen der Nutzergruppe enthält. Dieser Name muss mit dem Namen des Anspruchs übereinstimmen, der Informationen zur Gruppenmitgliedschaft in Ihrem OIDC-Anbieter enthält. issuerURIVerbindlich Die URL, über die Autorisierungsanfragen an Ihren OIDC-Anbieter gesendet werden. Dieser URI muss auf die Ebene innerhalb von .well-known/openid-configurationverweisen.scopesOptional Eine durch Kommas getrennte Liste von Kennungen, die angeben, welche Zugriffsrechte zusätzlich zum openid-Bereich angefordert werden.userClaimVerbindlich Der Name der Anforderung im OIDC-ID-Token, das den Nutzernamen enthält. Wenn die Nutzeranforderung beispielsweise emaillautet, werden die Nutzer durch das Nutzerfeld im OIDC-Token identifiziert.
Wenn dies im ID-Token fehlt, schlägt die Authentifizierung fehl.userPrefixOptional Das Präfix, das den Nutzeranforderungen vorangestellt werden soll, um Konflikte mit vorhandenen Nutzernamen zu vermeiden. Es wird in der Regel verwendet, wenn mehrere Identitätsanbieter konfiguriert werden.
Wenn die Nutzeranforderung beispielsweiseemailund das Nutzerpräfixprefix-lautet, werden Nutzer alsprefix-sally@example.comidentifiziert. Der Nutzer istsally@example.comund das Präfixprefix-wird dem Nutzer vorangestellt, um zwischen verschiedenen Identitätsanbietern zu unterscheiden.
Wir empfehlen, am Ende des Präfixes ein Trennzeichen einzufügen, wie oben in dieser Tabelle für die Einstellung vongroupPrefixbeschrieben.Optional: Wenn Ihr Identitätsanbieter benutzerdefinierte Attribute verwendet, konfigurieren Sie die Attribute zuerst in Ihrem IdP. Fügen Sie dann die entsprechenden Schlüssel/Wert-Paare im Abschnitt
oidcder Dateiidentity-provider-config.yamlfür zusätzliche Behauptungen über Nutzer oder Gruppen hinzu, z. B. ihre Abteilung oder ihr Geburtstag. Wenn Sie die Änderungen an der Konfiguration des Identitätsanbieters anwenden, erkennt GKE Identity Service die benutzerdefinierten Attribute. Hier ein Beispiel für benutzerdefinierte Attribute:"attributeMapping": { "attribute.birthday": "assertion.birthday", "attribute.department": "assertion.department" }Konfigurieren Sie die Konfiguration des Identitätsanbieters:
kubectl apply -f identity-provider-config.yamlWarten Sie, bis die verschiedenen Systemkomponenten neu konfiguriert wurden.
Überprüfen Sie die Konfiguration, indem Sie die Platform Admin UI-Konsole in einem Webbrowser öffnen. Wählen Sie auf der Weiterleitungsseite Mit pa-idp-oidc anmelden aus. Wenn Sie zur IdP-Instanz des PA-Kontos weitergeleitet und nach der Anmeldung mit der IdP-Instanz des PA-Kontos wieder zur Seite der Plattformadministrator-UI-Konsole weitergeleitet werden, ist die Konfiguration erfolgreich. Prüfen Sie andernfalls die Werte in
identity-provider-config.yamlund wiederholen Sie den vorherigen Schritt.
Einrichtung mit SAML
Erstellen Sie eine
identity-provider-config.yaml-Datei und füllen Sie sie aus. Verwenden Sie dazu die Tickets zur Erstellung der Organisation, um die Werte für den Account-IdP des PA zu ermitteln:cat << EOF > identity-provider-config.yaml apiVersion: iam.global.gdc.goog/v1 kind: IdentityProviderConfig metadata: name: pa-idp-saml namespace: platform spec: saml: idpEntityID: PA_IDP_ISSUER_URI idpSingleSignOnURI: PA_IDP_SSO_URI groupPrefix: PA_IDP_PREFIX groupsAttribute: PA_IDP_GROUPS_ATTRIBUTE idpCertificateDataList: [PA_IDP_SAML_CERT] userAttribute: PA_IDP_USER_ATTRIBUTE userPrefix: PA_IDP_PREFIX EOFHier finden Sie die detaillierten Beschreibungen der Felder:
.Attribut Attributtyp Beschreibung idpCertificateDataListVerbindlich Die Zertifikate des Identitätsanbieters, die zur Überprüfung der SAML-Antwort verwendet werden. Diese Zertifikate müssen standardmäßig Base64-codiert und im PEM-Format vorliegen. Es werden nur maximal zwei Zertifikate unterstützt, um die Zertifikatsrotation des Identitätsanbieters zu ermöglichen. idpEntityIDVerbindlich Die SAML-Entitäts-ID für den SAML-Anbieter im URI-Format. Beispiel: https://www.idp.com/saml. idpSingleSignOnURIVerbindlich Der URI zum SSO-Endpunkt des SAML-Anbieters. Beispiel: `https://www.idp.com/saml/sso`. groupPrefixOptional Das optionale Präfix, das jedem Gruppennamen vorangestellt werden soll. userPrefixOptional Das optionale Präfix, das dem Nutzernamen vorangestellt werden soll. userAttributeOptional Der Name des Attributs in der SAML-Antwort, das den Nutzernamen enthält. Wenn dieses Attribut in der SAML-Antwort fehlt, schlägt die Authentifizierung fehl. groupsAttributeOptional Der Name des Attributs in der SAML-Antwort, das die Gruppen des Nutzers enthält. Optional: Wenn Ihr Identitätsanbieter benutzerdefinierte Attribute verwendet, konfigurieren Sie die Attribute zuerst in Ihrem IdP. Fügen Sie dann die entsprechenden Schlüssel/Wert-Paare im Abschnitt
samlder Dateiidentity-provider-config.yamlfür zusätzliche Behauptungen über Nutzer oder Gruppen hinzu, z. B. ihre Abteilung oder ihr Geburtstag. Wenn Sie die Änderungen an der Konfiguration des Identitätsanbieters anwenden, erkennt GKE Identity Service die benutzerdefinierten Attribute. Hier ein Beispiel für benutzerdefinierte Attribute:"attributeMapping": { "attribute.birthday": "assertion.birthday", "attribute.department": "assertion.department" }Konfigurieren Sie den Patch für die Konfiguration des Identitätsanbieters:
kubectl apply -f identity-provider-config.yamlWarten Sie, bis die verschiedenen Systemkomponenten neu konfiguriert wurden.
Überprüfen Sie die Konfiguration, indem Sie die Platform Admin UI-Konsole in einem Webbrowser öffnen. Wählen Sie auf der Weiterleitungsseite Mit pa-idp-oidc anmelden aus. Wenn Sie zur IdP-Instanz des PA-Kontos weitergeleitet und nach der Anmeldung mit der IdP-Instanz des PA-Kontos wieder zur Seite der Plattformadministrator-UI-Konsole weitergeleitet werden, ist die Konfiguration erfolgreich. Prüfen Sie andernfalls die Werte in
identity-provider-config.yamlund wiederholen Sie den vorherigen Schritt.
Nutzer- und Gruppenpräfix
Nutzer- und Gruppenpräfixe müssen für jeden Identitätsanbieter in Distributed Cloud festgelegt werden, um Namenskonflikte zwischen Konten verschiedener Identitätsanbieter zu vermeiden. Das Präfix wird mit dem Nutzer- und Gruppennamen verwendet, um den Betreffnamen in den Rollenbindungen im Cluster zu verketten. Wenn beispielsweise ein Nutzer den Namen jack@example.com hat und das Nutzerpräfix des IdP example-org-idp- ist, lautet der Betreffname im Cluster example-org-idp-jack@example.com.
So legen Sie den Wert des Präfixes fest:
- Geben Sie die Hierarchieebene an (Stamm, Organisation, Projekt).
- Geben Sie den Namen des Identitätsanbieters (IdP) an (adfs, keycloak).
- Es wird empfohlen, ein Trennzeichen wie
-als Suffix hinzuzufügen, da zwischen dem Präfix und dem Nutzernamen kein Trennzeichen eingefügt wird.
Ersten Administrator zuweisen
Damit die PA den ersten Zugriff auf die Organisation erhält, muss sie als Administrator für die Organisation zugewiesen werden. Um die PA als ersten Administrator zuzuweisen, erstellen Sie ein IAMRoleBinding auf dem globalen API-Server:
kubectl apply -f --kubeconfig=GLOBAL_API_SERVER_KUBECONFIG - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: IAMRoleBinding
metadata:
name: PA_INITIAL_ADMIN_EMAIL-binding
namespace: platform
spec:
roleRef:
apiGroup: iam.global.gdc.goog
kind: IAMRole
name: organization-iam-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: PA_IDP_PREFIXPA_INITIAL_ADMIN_EMAIL
EOF
1.10 Netzwerkverbindung für die Organisation herstellen
Eine neu erstellte Organisation ist isoliert und kann nicht über ein externes Netzwerk aufgerufen werden. Damit die Organisation betriebsbereit ist, müssen Sie sie über den Interconnect-Dienst mit einem oder mehreren externen Netzwerken verbinden.
Dazu müssen Sie eine Reihe von benutzerdefinierten Ressourcen konfigurieren, die die logische Verbindung definieren. Im Folgenden werden zwei gängige Szenarien für die Bereitstellung von Konnektivität für eine neue Organisation beschrieben.
Szenario 1: Organisation an eine vorhandene gemeinsame Interconnect-Verbindung anhängen
Wenn Sie bereits eine Interconnect-Verbindung für ein gemeinsames Netzwerk haben, müssen Sie nur die AttachmentGroup und RoutePolicy aktualisieren, um die neue Organisation einzubeziehen.
AttachmentGroupaktualisieren:Mit einemAttachmentGroupwird angegeben, welche Organisationen eine Gruppe von VLAN-Anhängen verwenden können. Bearbeiten Sie die YAML-DateiAttachmentGroupund fügen Sie die neue Organisation der Listespec.entitieshinzu. Bei einer V2-Organisation müssen Sie das NetzwerkdomainType(OrgAdmin,OrgDataoderOrgMixed) angeben, mit dem eine Verbindung hergestellt werden soll.Beispiel für die Aktualisierung von
AttachmentGroup:apiVersion: system.private.gdc.goog/v1alpha1 kind: AttachmentGroup metadata: name: attachment-group-shared namespace: gpc-system spec: identifier: shared-network entities: - orgName: existing-org-1 # Existing organization domainType: OrgMixed - orgName: new-customer-org # Add the new organization domainType: OrgMixedRoutePolicyaktualisieren:EinRoutePolicydefiniert, welche IP-Präfixe beworben werden. Bearbeiten Sie die Richtlinie und fügen Sie die externen IP-Subnetze für die neue Organisation demspec.out.ipPrefixListhinzu. Dadurch kann eingehender Traffic die Organisation erreichen.Beispiel für die Aktualisierung von
RoutePolicy:apiVersion: system.private.gdc.goog/v1alpha1 kind: RoutePolicy metadata: name: shared-routepolicy namespace: gpc-system spec: # ... other fields ... out: asPathAccessList: - action: Permit asPathRegex: ".*" ipPrefixList: - action: Permit ipPrefix: EXTERNAL_SUBNET_OF_EXISTING_ORG_1 - action: Permit ipPrefix: EXTERNAL_SUBNET_OF_NEW_CUSTOMER_ORG # Add new prefix # ... deny rules ...Änderungen anwenden: Verwenden Sie
kubectl applymit Ihrem Infrastruktur-als-Code-Prozess (IaC).
Szenario 2: Neue Dedicated Interconnect-Verbindung erstellen
Für eine dedizierte Verbindung müssen Sie einen neuen Satz von Interconnect-Ressourcen erstellen. Dazu müssen Sie fünf benutzerdefinierte Ressourcen in der richtigen Reihenfolge erstellen.
- Erstellen Sie für jede neue physische Verbindung ein
InterconnectLink. - Erstellen Sie eine
InterconnectGroup, um die physischen Links zu bündeln und die neue Organisation zu genehmigen. - Erstellen Sie eine
AttachmentGroupund geben Sie die neue Organisation in der Listeentitiesan. - Erstellen Sie eine
RoutePolicy, die die eingehenden und ausgehenden IP-Präfixe für diese dedizierte Verbindung zulässt. - Erstellen Sie eine oder mehrere
InterconnectAttachment-Ressourcen, um die VLANs und BGP-Sitzungen zu definieren.
Umfassende Beispiele und detaillierte Schritte für jede dieser Ressourcen finden Sie in der Dokumentation Interconnect konfigurieren.
1.11 Alertmanager-Webhook für die Verbindung zu ServiceNow einrichten
Folgen Sie der Anleitung unter MON-T0016, um den Alertmanager-Webhook mit ServiceNow zu verbinden und Vorfälle zu erstellen.
1.12 Abrechnungspreisliste für die Organisation konfigurieren
Für die Abrechnungskomponente einer Organisation muss das Produkt oder die abzurechnenden Dienste mit der benutzerdefinierten Ressource SKUDescription konfiguriert werden. Ein einzelnes SKUDescription beschreibt ein einzelnes Produkt oder eine einzelne Dienstleistung, die zusammen mit dem Preis in Rechnung gestellt werden soll. Eine Sammlung von SKUDescription-Objekten kann daher als Preisliste für eine Organisation betrachtet werden. Mit den folgenden Schritten wird das Preisblatt für die Organisation in IAC konfiguriert.
1.12.1 Preisliste abrufen
Wenn Sie die SKUDescription-Preislistenressourcen für eine Organisation noch nicht haben, wenden Sie sich an das Program Management Office (PMO), um die Preisliste zu erhalten. Die Preisliste muss eine Reihe von YAML-Dateien mit SKUDescription-Ressourcen sein.
1.12.2 Feststellen, ob die Preistabelle freigegeben ist
Die Preisliste kann entweder für alle Organisationen freigegeben oder für jede Organisation einzeln konfiguriert werden. Das PMO kann Ihnen mitteilen, ob die Preisliste freigegeben ist.
1.12.2.1 Freigegebenes Preisblatt
Wenn die Preistabelle freigegeben ist, legen Sie sie im freigegebenen IAC-Ordner common-data ab.
Wenn diese Organisation nicht die allererste ist, die erstellt wird, ist das Preisblatt möglicherweise bereits im freigegebenen Ordner
common-datavorhanden. Wenn die Preistabelle vorhanden ist, prüfen Sie, ob die Schritte 2 bis 4 ausgeführt wurden, und fahren Sie mit Schritt 5 fort.Erstellen Sie den freigegebenen Ordner für die Preistabelle.
mkdir -p IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/Ersetzen Sie IAC_REPO_PATH durch den Pfad zum IAC-Repository.
Speichern Sie die YAML-Ressourcen für die
SKUDescription-Preistabelle in diesem Ordner. Danach muss der OrdnerskudescriptionsYAML-Dateien enthalten, die nach Bereich getrennt sind. Konfigurieren Sie die Ordnerstruktur und die YAML-Dateien entsprechend Ihrem Abrechnungsanwendungsfall:Partnerabrechnung: Google stellt dem Partner die Kosten in Rechnung. Platzieren Sie die
SKUDescription-Ressourcen im Namespacepartner-billing-system.Kundenabrechnung: Der Partner stellt dem Endnutzer die Kosten in Rechnung. Platzieren Sie die
SKUDescription-Ressourcen im Namespacebilling-system.
Die folgenden Beispiele zeigen sowohl die Dateistrukturen für die Kundenabrechnung als auch für das Abrechnungsmodell, das vom Partner betrieben wird. Für jedes Modell werden zwei Dienste angezeigt: „compute“ und „storage“. Jeder Dienst hat zwei YAML-Dateien:
Kundenabrechnung:
├── customer ├── compute │ ├── compute-sku1.yaml │ └── compute-sku2.yaml └── storage ├── storage-sku1.yaml └── storage-sku2.yamlPartnerabrechnung:
├── partner ├── compute │ ├── partner-compute-sku1.yaml │ └── partner-compute-sku2.yaml └── storage ├── partner-storage-sku1.yaml └── partner-storage-sku2.yamlPrüfen Sie, ob sich im Verzeichnis eine
kustomization.yaml-Datei befindet, die alle YAML-Dateien für dieSKUDescription-Preistabelle enthält.touch IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/common-data/bil/skudescriptions/ kustomize edit add resource */*.yamlExportieren Sie die Umgebungsvariable
ORG_CLUSTER:Führen Sie für eine v1-Organisation Folgendes aus:
export ORG_CLUSTER=ORG_ADMIN_CLUSTER_NAMEFühren Sie für eine v2-Organisation Folgendes aus:
export ORG_CLUSTER=ORG_INFRA_CLUSTER_NAME
Erstellen Sie das Abrechnungsverzeichnis
skudescriptionsin der Organisation:Für eine v1-Organisation:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptionsFür eine v2-Organisation:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions
Ersetzen Sie ORG_CLUSTER_NAME durch den Namen des Administratorclusters der Organisation, je nach Versionstyp Ihrer Organisation.
Fügen Sie die gemeinsame Preistabelle in die Organisation ein:
Für eine v1-Organisation:
cat > IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../../../../common-data/bil/skudescriptions EOFFür eine v2-Organisation:
cat > IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/kustomization.yaml << EOF apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../../../../common-data/bil/skudescriptions EOF
Stellen Sie die YAML-Datei bereit und committen Sie sie. Passen Sie die Dateien an:
cd IAC_REPO_PATH git add "iac" git commitÜbertragen Sie die Aktualisierung per Push an GitLab:
git -c http.sslVerify=false pushWarten Sie auf die Codeüberprüfung und das Zusammenführen.
Prüfen Sie, ob die
SKUDescription-Objekte für Ihr entsprechendes Abrechnungsmodell im angegebenen Cluster vorhanden sind.Exportieren Sie den Wert
KUBECONFIGentsprechend dem Organisationstyp.Führen Sie für eine v1-Organisation Folgendes aus:
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIGErsetzen Sie ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad zur kubeconfig des Administratorclusters der Organisation, z. B.
/tmp/${ORG}-admin-kubeconfig.Führen Sie für eine v2-Organisation Folgendes aus:
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIGErsetzen Sie MANAGEMENT_API_SERVER_KUBECONFIG durch den Pfad zur kubeconfig des Management API-Servers, z. B.
/tmp/${ORG}-management-kubeconfig.
Führen Sie die
kubectl-Befehlszeile aus:Für die Kundenabrechnung:
kubectl get SKUDescription -n billing-systemPartnerabrechnung:
kubectl get SKUDescription -n partner-billing-system
1.12.2.2 Organisationsspezifische Preisliste
Wenn die Preistabelle für eine bestimmte Organisation gilt, müssen Sie sie im Ordner des Organisationsclusters platzieren.
Erstellen Sie das Abrechnungsverzeichnis
skudescriptionsim Organisationscluster:Für eine v1-Organisation:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptionsFür eine v2-Organisation:
mkdir -p IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions
Speichern Sie die YAML-Ressourcen der
SKUDescription-Preisliste in diesem Ordner. Danach muss der OrdnerskudescriptionsYAML-Dateien enthalten, die nach Bereich getrennt sind. Im folgenden Beispiel sehen Sie zwei Dienste, „compute“ und „storage“, mit jeweils zwei YAML-Dateien:. ├── compute │ ├── compute-sku1.yaml │ └── compute-sku2.yaml └── storage ├── storage-sku1.yaml └── storage-sku2.yamlAchten Sie darauf, dass sich im Verzeichnis eine
kustomization.yaml-Datei befindet, die alleSKUDescription-Preislisten-YAML-Dateien enthält.Für eine v1-Organisation:
touch IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/bil/skudescriptions/ kustomize edit add resource */*.yamlFür eine v2-Organisation:
touch IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/kustomization.yaml cd IAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/bil/skudescriptions/ kustomize edit add resource */*.yaml
Prüfen Sie, ob die Datei
kustomization.yamlim Stammverzeichnis der Organisation den neu hinzugefügten Ordnerbil/skudescriptionsenthält. Prüfen SieIAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME/kustomization.yamlfür eine V1-Organisation undIAC_REPO_PATH/iac/infrastructure/zonal/zones/ZONE_NAME/ORG_CLUSTER_NAME-management/kustomization.yamlfür eine V2-Organisation :apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ... # existing resource items - bil/skudescriptionsStellen Sie die YAML-Datei und die Kustomize-Dateien bereit und committen Sie sie:
cd IAC_REPO_PATH git add "iac" git commitÜbertragen Sie die Aktualisierung per Push an GitLab:
git -c http.sslVerify=false pushWarten Sie auf die Codeüberprüfung und das Zusammenführen.
Prüfen Sie, ob die
SKUDescription-Objekte im angegebenen Cluster vorhanden sind:Führen Sie für eine v1-Organisation Folgendes aus:
export KUBECONFIG=ORG_ADMIN_CLUSTER_KUBECONFIG kubectl get SKUDescription -n billing-systemErsetzen Sie ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad zur kubeconfig des Administratorclusters der Organisation, z. B.
/tmp/${ORG}-admin-kubeconfig.Führen Sie für eine v2-Organisation Folgendes aus:
export KUBECONFIG=MANAGEMENT_API_SERVER_KUBECONFIG kubectl get SKUDescription -n billing-systemErsetzen Sie MANAGEMENT_API_SERVER_KUBECONFIG durch den Pfad zur kubeconfig des Management API-Servers, z. B.
/tmp/${ORG}-management-kubeconfig. .
1.13 Wiederkehrende Abrechnungsnutzungen erstellen
Distributed Cloud bietet Artikelnummern (Stock Keeping Units, SKUs) an, für die wiederkehrende Gebühren anfallen. Distributed Cloud erfasst jedoch nicht Ihre Nutzungskosten für bestimmte SKUs. Verwenden Sie die Ressource RecurringUsage, um solche Informationen zu verwalten. Weitere Informationen und Anleitungen zum Erstellen wiederkehrender Verwendungen finden Sie unter Wiederkehrende Verwendungen erstellen.
1.14 Abrechnung für eine Organisation konfigurieren
Die Abrechnungskomponente beginnt erst mit der Berechnung der Kosten für eine Organisation, wenn die Abrechnungsstartzeit erreicht ist. Die Startzeit für die Abrechnung hat den Standardwert 9999-01-01T00:00:00-07:00. Wenn eine Organisation als bereit gilt, wird die Abrechnungsstartzeit im IO überschrieben, um den Abrechnungsworkflow zu starten.
1.14.1 Abrechnungsbeginn abrufen
Der Abrechnungsbeginn muss am Anfang des Leistungszeitraums liegen, der in Ihrem Vertrag angegeben ist. Wenn Sie die Abrechnungsstartzeit für eine Organisation noch nicht haben, wenden Sie sich an das Program Management Office (PMO), um die Informationen zu erhalten.
1.14.2 Rechnungszahlungskonto einer Organisation zuordnen
Für Google Distributed Cloud-Umgebungen (GDC) ohne Internetverbindung ist ein Rechnungskonto erforderlich, um die Kosten für Projekte und Organisationen zu erfassen. Wenn Sie kein Rechnungskonto mit einer Organisation oder einem Projekt verknüpfen, gehen die Kostendaten für die Ressource verloren.
Wenn die Dienstnutzung dem Kunden in Rechnung gestellt werden soll, wird für alle Rechnungskonten innerhalb einer Organisation eine einzige Preistabelle verwendet.
1.14.2.1 Vorbereitung
Bitten Sie Ihren Sicherheitsadministrator, Ihnen die folgenden erforderlichen Rollen zuzuweisen, bevor Sie fortfahren. Diese Rollen sind entweder an den Projektnamespace für die Abrechnung auf Projektebene oder an den Plattformnamespace für die Abrechnung auf Organisationsebene gebunden:
Administrator des Abrechnungskontos der Organisation: Er kann die
BillingAccount-Ressource erstellen, verwalten und binden. Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolleorganization-billing-account-adminzuzuweisen.Nutzer des Abrechnungskontos der Organisation: Die
BillingAccount-Ressource kann gelesen, aufgelistet und gebunden werden. Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolleorganization-billing-account-userzuzuweisen.Organization Billing Account Manager: Berechtigung zum Lesen, Auflisten, Erstellen und Aktualisieren der
BillingAccountBinding-Ressource. Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolleorganization-billing-managerzuzuweisen.
1.14.2.2 Neues Rechnungskonto erstellen
Ein Abrechnungskonto wird eindeutig durch seine name und namespace identifiziert. Wenn Sie ein Rechnungskonto erstellen möchten, verwenden Sie eine benutzerdefinierte Ressource, um name und namespace festzulegen:
Erstellen Sie eine YAML-Datei und fügen Sie die benutzerdefinierte Ressource
BillingAccountund den folgenden Inhalt hinzu:apiVersion: billing.gdc.goog/v1 kind: BillingAccount metadata: namespace: platform name: BIL_ACCOUNT_NAME spec: displayName: BIL_DISPLAY_NAME paymentSystemConfig: cloudBillingConfig: accountID: "012345-6789AB-CDEF01"Ersetzen Sie die folgenden Variablen:
- BIL_ACCOUNT_NAME: der Name des Rechnungskontos. Beispiel:
test-billing-account. - BIL_DISPLAY_NAME: der Anzeigename des Abrechnungskontos. Beispiel:
"Test Billing Account".
- BIL_ACCOUNT_NAME: der Name des Rechnungskontos. Beispiel:
Prüfen Sie den Typ Ihrer Zahlungskonfiguration. Für Distributed Cloud-Rechnungskonten muss eine der folgenden Zahlungskonfigurationen festgelegt sein:
cloudBillingConfig: die Standardkonfiguration für die Zahlung. In dieser Konfiguration wird eine Cloud-Rechnungskonto-ID gespeichert.customConfig: Eine benutzerdefinierte Konfiguration für Partner zum Speichern ihrer Zahlungskonfiguration für die Abrechnung der Organisation.customConfigunterstützt ein Dictionary mit Schlüssel/Wert-Strings und dem obligatorischen Schlüsselpayment-config-type.
Die folgenden Beispiele zeigen
BillingAccount-YAML-Dateischnipsel für verschiedene Zahlungskonfigurationen:cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDErsetzen Sie
CLOUD_BILLING_ACCOUNT_IDdurch IhreGoogle Cloud Abrechnungskonto-ID.customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPEErsetzen Sie
PAYMENT_CONFIG_TYPEdurch den von Ihnen ausgewählten Zahlungskonfigurationstyp für Ihre benutzerdefinierte Abrechnungskonfiguration.Wenn Sie die Informationen für die
customConfig-Konfiguration Ihrer Organisation nicht haben, geben Sie die folgenden Details ein:spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"Die folgende YAML-Datei zeigt eine vollständige
BillingAccount-Ressource mit dercloudBillingConfig-Konfiguration:apiVersion: billing.gdc.goog/v1 kind: BillingAccount metadata: namespace: platform name: test-billing-account spec: displayName: "Test Billing Account" paymentSystemConfig: cloudBillingConfig: accountID: "012345-6789AB-CDEF01"Speichern Sie die YAML-Datei der benutzerdefinierten Ressource. Führen Sie die
kubectl-Befehlszeile aus, um die Ressource im Organisationscluster für die jeweilige Organisation oder das Projekt anzuwenden, die bzw. das Sie abrechnen möchten:kubectl --kubeconfig $ORG_KUBECONFIG apply -f billingaccount.yaml
1.14.2.3 Rechnungskonto mit einer Organisation verknüpfen
So verknüpfen Sie eine Organisation mit einer BillingAccount:
Fügen Sie der YAML-Datei
billingaccountbinding.yamlden folgenden Inhalt hinzu:- Füllen Sie im Bereich
billingAccountRefdas Feldnamemit dem Inhalt des Feldsnamein derBillingAccountaus, die Sie verknüpfen möchten. - Füllen Sie im Abschnitt
metadatadas Feldnamespacemit dem Inhalt des identischen Felds in der RessourceBillingAccountaus. In diesem Beispiel lautet der Organisations-Namespaceplatform:
apiVersion: billing.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform- Füllen Sie im Bereich
Wenden Sie die Datei
billingaccountbinding.yamlan:kubectl --kubeconfig $ORG_KUBECONFIG apply -f billingaccountbinding.yaml
1.14.3 Vorbereitung
Bitten Sie Ihren Sicherheitsadministrator, Ihnen die Rolle „Bil Monitor“ (bil-monitor) im Organisationsadministratorcluster für den Namespace billing-system zuzuweisen, bevor Sie fortfahren.
Mit dieser Berechtigung können Sie zugehörige Ressourcen zur Validierung lesen.
1.14.4 Startzeit der Abrechnung überschreiben
Erstellen Sie zwei YAML-Dateien mit den folgenden Pfaden:
infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAME/bil-monetizer-override.yaml.infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAME/bil-invoice-override.yaml.- Erstellen Sie die erforderlichen Unterverzeichnisse für jede Datei, falls sie fehlen.
Fügen Sie die
SubcomponentOverride-Ressource und den folgenden Inhalt in jede Datei ein:Für die Kundenabrechnung:
bil-monetizer-override.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONEbil-invoice-override.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE
Für die Abrechnung durch Partner:
Fügen Sie das Flag
enablePartnerBilling: trueam Ende jeder YAML-Datei hinzu:bil-monetizer-override.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: truebil-invoice-override.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: true
Ersetzen Sie die folgenden Variablen:
ORG_NAME: der Name der Organisation. Beispiel:
org-1BILLING_START_TIME: Der Zeitstempel für den Beginn des Abrechnungsablaufs.Der Zeitstempel muss dem RFC 3339-Format entsprechen. Wenn der Abrechnungsworkflow beispielsweise am 01.01.2024 in der Zeitzone US and Canadian Pacific Standard Time (UTC-8) beginnt, fügen Sie den Zeitstempelwert als
2024-01-01T00:00:00-08:00hinzu.BILLING_TIMEZONE: die Zeitzone des Abrechnungsworkflows. Die Zeitzone muss dem RFC 3339-Format entsprechen. Wenn die Abrechnungszeitzone beispielsweise US-amerikanische und kanadische Pazifikzeit (UTC-8) ist, fügen Sie den Zeitzonenwert als
PST8PDThinzu.
bil-monetizer-override-mp.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-monetizer namespace: ORG_NAME-mp spec: subComponentRef: bil-monetizer backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: truebil-invoice-override-mp.yaml-Datei:apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: bil-invoice namespace: ORG_NAME-mp spec: subComponentRef: bil-invoice backend: operableParameters: billingStartTime: BILLING_START_TIME billingTimezone: BILLING_TIMEZONE enablePartnerBilling: true
Speichern Sie die YAML-Dateien im Ordner
infrastructure/zonal/zones/ZONE_NAME/root-admin/components/bil/ORG_NAME.Erstellen Sie einen Pull-Request mit den YAML-Dateien und der erforderlichen Kustomization-Datei.
1.14.5 Abrechnungsbeginn validieren
Prüfen Sie, ob Sie die Abrechnungsstartzeit für die Monetarisierung und die Rechnungserstellung überschrieben haben:
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG \
get deployment billing-monetizer -n billing-system \
-o jsonpath='{.spec.template.spec.containers[0].args}{"\n"}'
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG \
get cronjob billing-ig-job -n billing-system \
-o jsonpath='{.spec.jobTemplate.spec.template.spec.containers[0].args}{"\n"}'
1.15 Netzwerkrichtlinie des Objekt-Storage-Proxys im Administratorcluster der Organisation konfigurieren
1.15.1 YAML-Datei für die Netzwerkrichtlinie erstellen
Erstellen Sie die YAML-Datei für die allow-obs-system-ingress-traffic-Netzwerkrichtlinie, z. B. networkpolicy.yaml:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
annotations:
policy.network.gke.io/enable-logging: "true"
resourcemanager.gdc.goog/propagated-name: allow-obs-system-ingress-traffic
name: allow-obs-system-ingress-traffic
namespace: obj-system
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
resourcemanager.gdc.goog/project-name: obs-system
podSelector: {}
policyTypes:
- Ingress
1.15.2 Netzwerkrichtlinie auf den Administratorcluster der Organisation anwenden
kubectl --kubeconfig ORG_ADMIN_KUBECONFIG apply -f networkpolicy.yaml
1.16. Sicherungswebsite erstellen
Wenn Sie die Unterstützung für die Notfallwiederherstellung nutzen, müssen Sie die vorherigen Schritte für den Sicherungsstandort noch einmal ausführen. Wenn Sie die Notfallwiederherstellung nicht aktiviert haben, überspringen Sie diesen Abschnitt.
- Folgen Sie den Anweisungen in Abschnitt 1.4. – 1.9. eine weitere Organisation für die Sicherungswebsite zu erstellen.
1.17. Fehlerbehebung beim Erstellen einer Organisation
1.17.1. Prüfen, ob alle bereitgestellten Ressourcen fehlerfrei und vorhanden sind
Beim Erstellen einer Organisation werden mehrere Ressourcen in verschiedenen Kubernetes-Clustern erstellt. Prüfen Sie zuerst die bereitgestellten Ressourcen und stellen Sie sicher, dass sie sich in einem guten Zustand befinden. In den folgenden Abschnitten werden die Ressourcen beschrieben, die für eine Organisation mit dem Namen operations erstellt werden.
1.17.2. Alle bereitgestellten Ressourcen im Stamm-Admincluster bestätigen
Führen Sie die folgenden Schritte aus, um zu prüfen, ob alle Ressourcen im Administratorcluster des Stammverzeichnisses fehlerfrei und vorhanden sind:
Rufen Sie die erforderliche kubeconfig-Konfiguration für den Stamm-Administratorcluster gemäß IAM-R0004 ab. Legen Sie die folgenden Umgebungsvariablen und Aliase für diese Bestätigungsanleitung fest:
export KUBECONFIG=ROOT_ADMIN_KUBECONFIG export ORG="ORG_NAME" alias k=kubectlPrüfen Sie, ob die Firewallressourcen verfügbar sind:
Stellen Sie eine SSH-Verbindung zur Firewall her und prüfen Sie, ob ein neues
vsyserstellt wurde:show config running | match 'vsys[0-9] 'Die Ausgabe sieht etwa so aus:
vsys1 { vsys2 {Prüfen Sie die Ressource
FirewallVirtualSystem:k get firewallvirtualsystem -n gpc-systemDie Ausgabe sieht etwa so aus:
NAME AGE kb-ab-fw01-internal-vsys2-operations 4d19h kb-ab-fw01-vsys-root-admin 13d kb-ac-fw01-internal-vsys2-operations 4d19h kb-ac-fw01-vsys-root-admin 13d
Prüfen Sie, ob die Speicherressourcen verfügbar sind:
Prüfen Sie die Ressource
StorageVirtualMachine:k get StorageVirtualMachine -n gpc-systemDie Ausgabe sieht etwa so aus:
NAME STORAGEORG MGMTIP READY AGE operations-admin operations 10.0.2.10 True 5d22h operations-user operations 10.0.2.18 True 5d22h root-admin root 10.0.2.2 True 13d
Prüfen Sie, ob die HSM-Ressourcen verfügbar sind:
HSMs prüfen:
k get hsms -n gpc-systemDie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE IP READY REASON gpc-system zk-aa-hsm01 2h 198.51.100.192 True ReconcileHSMSuccess gpc-system zk-aa-hsm02 2h 198.51.100.193 True ReconcileHSMSuccess gpc-system zk-ab-hsm01 2h 198.51.100.194 True ReconcileHSMSuccessHSM-Cluster prüfen:
k get hsmcluster -n gpc-systemDie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE READY REASON gpc-system hsmcluster 38h True ReconcileHSMClusterSuccessHSM-Mandanten prüfen:
k get hsmtenant -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE READY REASON gpc-system root 13d True ReconcileHSMTenantSuccess operations operations 5d22h True ReconcileHSMTenantSuccess
Prüfen Sie, ob die Maschinen- und Knotenressourcen verfügbar sind:
Prüfen Sie die
AddressPoolClaim-Ressourcen:k get addresspoolclaims -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE operations admin-control-plane-node-pool 5d23h operations operations-admin-dns-default-ipv4-ipc 5d23h operations operations-admin-load-balancer-default-ipv4-ipc 5d23hPrüfen Sie die
NodePoolClaim-Ressourcen:k get nodepoolclaims -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE operations admin-control-plane-node-pool 5d23h root root-admin-control-plane 13dPrüfen Sie die
NodePool-Ressourcen:k get nodepool -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN operations admin-control-plane-node-pool 3 0 0 0 0 root root-admin-control-plane 3 0 0 0 0Bare Metal-Cluster prüfen:
k get baremetalclusters -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME CLUSTER READY operations operations-admin operations-admin true root root-admin root-admin truePrüfen Sie die Bare Metal-Maschinen:
k get baremetalmachines -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME CLUSTER READY INSTANCEID MACHINE operations 10.251.82.28 operations-admin true baremetal://10.251.82.28 10.251.82.28 operations 10.251.82.29 operations-admin true baremetal://10.251.82.29 10.251.82.29 operations 10.251.82.30 operations-admin true baremetal://10.251.82.30 10.251.82.30 root 10.251.80.2 root-admin true baremetal://10.251.80.2 10.251.80.2 root 10.251.80.3 root-admin true baremetal://10.251.80.3 10.251.80.3 root 10.251.80.4 root-admin true baremetal://10.251.80.4 10.251.80.4Prüfen Sie die Server. Sie befinden sich im Status
provisioned:k get servers -n gpc-system | grep provisionedDie Ausgabe sieht etwa so aus:
kb-aa-bm01 13d o1-highmem1-40-gdc-metal 10.251.252.61 10.251.80.2 10.251.252.62 provisioned true kb-aa-bm02 13d o1-standard1-64-gdc-metal 10.251.252.63 10.251.82.28 10.251.252.64 provisioned true kb-aa-bm03 13d o1-standard1-64-gdc-metal 10.251.252.65 10.251.82.29 10.251.252.66 provisioned true kb-aa-bm04 13d o1-standard1-64-gdc-metal 10.251.252.67 10.251.82.30 10.251.252.68 provisioned true kb-aa-bm08 13d o1-highmem1-96-gdc-metal 10.251.252.75 10.0.35.2 10.251.252.76 provisioned true kb-aa-bm10 13d o1-highmem1-96-gdc-metal 10.251.252.79 10.0.35.4 10.251.252.80 provisioned true kb-aa-bm14 13d o1-highgpu1-48-gdc-metal 10.251.252.87 10.0.35.9 10.251.252.88 provisioned true kb-aa-bm15 13d o1-highgpu1-48-gdc-metal 10.251.252.89 10.0.35.10 10.251.252.90 provisioned true kb-aa-bm16 13d o1-highgpu1-48-gdc-metal 10.251.252.91 10.0.35.11 10.251.252.92 provisioned true kb-ab-bm01 13d o1-highmem1-40-gdc-metal 10.251.253.61 10.251.80.3 10.251.253.62 provisioned true kb-ac-bm01 13d o1-highmem1-40-gdc-metal 10.251.254.61 10.251.80.4 10.251.254.62 provisioned trueKubernetes-Cluster prüfen:
k get cluster -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE operations operations-admin 5d23h root root-admin 13dPrüfen Sie die Secrets für die kubeconfig-Datei:
k get secrets -A | grep kubeconfigDie Ausgabe sieht etwa so aus:
operations operations-admin-kubeconfig Opaque 1 5d22h root root-admin-kubeconfig Opaque 1 13d
1.17.3. Alle bereitgestellten Ressourcen in V1-Organisationsclustern bestätigen
Führen Sie die folgenden Schritte aus, um zu bestätigen, dass alle Ressourcen im Administratorcluster und Systemcluster einer v1-Organisation fehlerfrei und vorhanden sind. Wenn Sie eine Organisation der Version 2 haben, fahren Sie mit dem nächsten Abschnitt fort.
1.17.3.1. Alle bereitgestellten Ressourcen in einem Administratorcluster der Organisation bestätigen
Rufen Sie die erforderliche kubeconfig-Konfiguration für den Stamm-Administratorcluster gemäß IAM-R0004 ab. Legen Sie die folgenden Umgebungsvariablen und Aliasse für diese Bestätigungsanleitung fest:
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}"Prüfen Sie, ob die Maschinen- und Knotenressourcen verfügbar sind:
Bare Metal-Cluster prüfen:
ka get baremetalclusters -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME CLUSTER READY operations-system-cluster operations-system operations-system truePrüfen Sie die Bare Metal-Maschinen:
ka get baremetalmachines -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME CLUSTER READY INSTANCEID MACHINE operations-system-cluster 10.0.35.10 operations-system true baremetal://10.0.35.10 10.0.35.10 operations-system-cluster 10.0.35.11 operations-system true baremetal://10.0.35.11 10.0.35.11 operations-system-cluster 10.0.35.2 operations-system true baremetal://10.0.35.2 10.0.35.2 operations-system-cluster 10.0.35.3 operations-system true baremetal://10.0.35.3 10.0.35.3 operations-system-cluster 10.0.35.4 operations-system true baremetal://10.0.35.4 10.0.35.4 operations-system-cluster 10.0.35.9 operations-system true baremetal://10.0.35.9 10.0.35.9 operations-system-cluster 10.251.82.205 operations-system true baremetal://10.251.82.205 10.251.82.205 operations-system-cluster 10.251.82.206 operations-system true baremetal://10.251.82.206 10.251.82.206 operations-system-cluster 10.251.82.207 operations-system true baremetal://10.251.82.207 10.251.82.207 operations-system-cluster 10.251.82.232 operations-system true baremetal://10.251.82.232 10.251.82.232Maschinen prüfen:
ka get machines -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME NODEPOOL operations-system-cluster 10.0.35.10 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.0.35.11 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.0.35.2 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.3 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.4 worker-node-pool-o1-highmem1-96-gdc-metal operations-system-cluster 10.0.35.9 worker-node-pool-o1-highgpu1-48-gdc-metal operations-system-cluster 10.251.82.205 control-plane-node-pool operations-system-cluster 10.251.82.206 control-plane-node-pool operations-system-cluster 10.251.82.207 control-plane-node-pool operations-system-cluster 10.251.82.232 control-plane-node-poolPrüfen Sie die
VirtualmachinesInstance-Ressourcen:ka get virtualmachineinstances -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE PHASE IP NODENAME READY operations-system-cluster vm-19753801 2d16h Running 10.251.82.207 kb-aa-bm02 True operations-system-cluster vm-3661f750 4d19h Running 10.251.82.232 kb-aa-bm03 True operations-system-cluster vm-3c77c480 5d20h Running 10.251.82.206 kb-aa-bm04 TruePrüfen Sie die
NodePool-Ressourcen:ka get nodepools -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN operations-system-cluster control-plane-node-pool 3 0 0 0 0 operations-system-cluster worker-node-pool-o1-highgpu1-48-gdc-metal 3 0 0 0 0 operations-system-cluster worker-node-pool-o1-highmem1-96-gdc-metal 2 0 0 0 0Kubernetes-Cluster prüfen:
ka get clusters -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE operations-system-cluster operations-system 5d20hKnoten prüfen:
ka get nodes -ADie Ausgabe sieht etwa so aus:
NAME STATUS ROLES AGE VERSION kb-aa-bm02 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm03 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm04 Ready control-plane,master 5d23h v1.23.5-gke.1505Prüfen Sie die Secrets für die kubeconfig-Datei:
ka get secret -n ${ORG}-system-cluster ${ORG}-system-kubeconfigDie Ausgabe sieht etwa so aus:
NAME TYPE DATA AGE operations-system-kubeconfig Opaque 1 5d20h
1.17.3.2. Alle bereitgestellten Ressourcen im Systemnutzercluster bestätigen
Führen Sie die folgenden Schritte aus, um zu bestätigen, dass alle Ressourcen im Systemcluster fehlerfrei und vorhanden sind:
Rufen Sie die erforderliche kubeconfig-Konfiguration für den Stamm-Administratorcluster gemäß IAM-R0004 ab. Legen Sie die folgenden Umgebungsvariablen und Aliasse für diese Bestätigungsanleitung fest:
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}" ka get secret -n ${ORG}-system-cluster ${ORG}-system-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-system-kubeconfig export SYSTEM_KUBECONFIG=/tmp/${ORG}-system-kubeconfig alias ku="kubectl --kubeconfig ${SYSTEM_KUBECONFIG}"Prüfen Sie, ob die Maschinen- und Knotenressourcen verfügbar sind:
Prüfen Sie die Ressource
VirtualmachineInstance:ku get vmi -ADie Ausgabe sieht in etwa so aus (wenn ein Nutzercluster erstellt wurde):
NAMESPACE NAME AGE PHASE IP NODENAME READY gdc-vm-infra vm-61aa554d 3d21h Running 10.0.35.6 kb-aa-bm10 True gdc-vm-infra vm-b627da1f 3d21h Running 10.0.35.5 kb-aa-bm08 TrueKnoten prüfen:
ku get nodesDie Ausgabe sieht etwa so aus:
NAME STATUS ROLES AGE VERSION kb-aa-bm10 Ready worker 5d20h v1.23.5-gke.1505 kb-aa-bm14 Ready worker 38h v1.23.5-gke.1505 kb-aa-bm15 Ready worker 38h v1.23.5-gke.1505 kb-aa-bm16 Ready worker 38h v1.23.5-gke.1505 vm-19753801 Ready control-plane,master 5d21h v1.23.5-gke.1505 vm-3661f750 Ready control-plane,master 4d20h v1.23.5-gke.1505 vm-3c77c480 Ready control-plane,master 5d20h v1.23.5-gke.1505Prüfen Sie die GPU-Zuweisungen:
ku get gpuallocations -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME ALLOCATED DEVICEMODEL vm-system kb-aa-bm14 true A100 PCIe 40GB vm-system kb-aa-bm15 true A100 PCIe 40GB vm-system kb-aa-bm16
1.17.4. Alle bereitgestellten Ressourcen in V2-Organisationsclustern bestätigen
Führen Sie die folgenden Schritte aus, um zu bestätigen, dass alle Ressourcen im Cluster der Organisationsinfrastruktur in einer V2-Organisation fehlerfrei sind und vorhanden sind. Wenn Sie eine Organisation der Version 1 haben, überspringen Sie diesen Abschnitt.
Rufen Sie die erforderliche kubeconfig-Konfiguration für den Stamm-Administratorcluster gemäß IAM-R0004 ab. Legen Sie die folgenden Umgebungsvariablen und Aliasse für diese Bestätigungsanleitung fest:
export ORG="ORG_NAME" export KUBECONFIG=ROOT_ADMIN_KUBECONFIG k get secrets -n ${ORG} ${ORG}-admin-kubeconfig -o jsonpath='{.data.value}' \ | base64 -d > /tmp/${ORG}-admin-kubeconfig export ORG_ADMIN_KUBECONFIG=/tmp/${ORG}-admin-kubeconfig alias ka="kubectl --kubeconfig ${ORG_ADMIN_KUBECONFIG}"Prüfen Sie, ob die Knoten und API-Server fehlerfrei sind:
Knoten prüfen:
ka get nodes -ADie Ausgabe sieht etwa so aus:
NAME STATUS ROLES AGE VERSION kb-aa-bm02 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm03 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm04 Ready control-plane,master 5d23h v1.23.5-gke.1505 kb-aa-bm05 Ready worker 5d23h v1.23.5-gke.1505 kb-aa-bm06 Ready worker 5d23h v1.23.5-gke.1505 kb-aa-bm07 Ready worker 5d23h v1.23.5-gke.1505Prüfen Sie die Secrets für die kubeconfig-Datei:
ka get secret -n management-kube-system kube-admin-remote-kubeconfigDie Ausgabe sieht etwa so aus:
NAME TYPE DATA AGE kube-admin-remote-kubeconfig Opaque 1 5d20h
Prüfen Sie die GPU-Zuweisungen, um zu bestätigen, dass die GPU-Ressourcen bereit sind (falls zutreffend):
ka get gpuallocations -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME ALLOCATED DEVICEMODEL vm-system kb-aa-bm14 true A100 PCIe 40GB vm-system kb-aa-bm15 true A100 PCIe 40GB vm-system kb-aa-bm16
1.17.5. Prüfen, ob alle Organisationsressourcen abgeglichen wurden
Führen Sie die folgenden Schritte aus, um zu bestätigen, dass alle organisationsbezogenen Ressourcen im globalen und zonalen Root-Admin-Cluster fehlerfrei und vorhanden sind. Angenommen, das Ziel ist, eine operations-Organisation mit zwei Zonen zu erstellen: zone-1 und zone-2.
Folgen Sie der Anleitung unter Auf globale Root-Admin-API zugreifen, um auf den globalen API-Server zuzugreifen, und verwenden Sie den folgenden Alias für die globale Root-Admin-API kubectl.
alias kga='kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG export ORG="ORG_NAME"Prüfen Sie, ob globale Organisationsressourcen verfügbar sind:
Prüfen Sie die globalen
Organization-Ressourcen:kga get organization -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME READY gpc-system operations gpc-system rootPrüfen Sie die globalen
OrganizationReplica-Ressourcen:kga get organizationreplica -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system operations-zone1 3d16h gpc-system operations-zone2 3d16h gpc-system root-zone1 3d17h gpc-system root-zone2 3d16hPrüfen Sie die globalen
OrganizationZonalConfig-Ressourcen:kga get organizationzonalconfig -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system operations-zone1-config 3d16h gpc-system operations-zone2-config 3d16hPrüfen Sie die globalen
OrganizationZonalConfigReplica-Ressourcen:kga get organizationzonalconfigreplica -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system operations-zone1-config-zone1 3d16h gpc-system operations-zone1-config-zone2 3d16h gpc-system operations-zone2-config-zone1 3d16h gpc-system operations-zone2-config-zone2 3d16h
Legen Sie den Alias für die kubeconfig-Konfiguration des zonalen Administratorclusters fest:
alias ka='kubectl --kubeconfig /root/GDC_VERSION/root-admin/root-admin-kubeconfig'Prüfen Sie, ob zonale Organisationsressourcen verfügbar sind:
Prüfen Sie die
Organization-Ressourcen:ka get organization -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME READY gpc-system operations True gpc-system root TruePrüfen Sie die
OrganizationReplica-Ressourcen:ka get organizationreplica -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system operations 3d16h gpc-system root 3d17hPrüfen Sie die
OrganizationZonalConfigReplica-Ressourcen:ka get organizationzonalconfigreplica -ADie Ausgabe sieht etwa so aus:
NAMESPACE NAME AGE gpc-system operations-zone1-config 3d16h gpc-system operations-zone2-config 3d16h
Folgen Sie der Anleitung unter Beliebigen Adressen den Zugriff auf eine Organisation erlauben, um DCI-Traffic in den Administratorclustern der Organisation von der Quellwebsite zur Sicherungswebsite zuzulassen.