In diesem Thema werden die Konfigurationsoptionen der benutzerdefinierten Ressourcendefinition von AWSCluster beschrieben.
AWSCluster definieren
AWSCluster
ist eine benutzerdefinierte Kubernetes-Ressource, die von GKE on AWS definiert wird. Diese Ressource stellt eine Steuerungsebene von GKE on AWS dar.
Um einen Cluster aus dieser Vorlage zu erstellen, kopieren Sie die folgende YAML und ergänzen Sie die markierten Werte in den Felddefinitionen spec.networking
und spec.controlPlane
. Wenden Sie anschließend das Ressourcenmanifest auf Ihren Verwaltungsdienst an.
apiVersion: multicloud.cluster.gke.io/v1
kind: AWSCluster
metadata:
name: CLUSTER_NAME
spec:
region: AWS_REGION
networking:
vpcID: VPC_ID
podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
serviceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
controlPlane:
version: GKE_VERSION # Latest version is 1.25.5-gke.2100
instanceType: AWS_INSTANCE_TYPE
keyName: SSH_KEY_NAME
subnetIDs:
- CONTROL_PLANE_SUBNET_IDS
securityGroupIDs:
- CONTROL_PLANE_SECURITY_GROUPS
iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
databaseEncryption:
kmsKeyARN: ARN_OF_KMS_KEY
hub:
membershipName: ANTHOS_CONNECT_NAME
cloudOperations: # Optional
projectID: YOUR_PROJECT
location: GCP_LOCATION
enableLogging: ENABLE_LOGGING
enableMonitoring: ENABLE_MONITORING
tags:
TAG_KEY: TAG_VALUE
proxySecretName: PROXY_SECRET_NAME
workloadIdentity:
oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
rootVolume: # Optional
sizeGiB: ROOT_VOLUME_SIZE
volumeType: ROOT_VOLUME_TYPE
iops: ROOT_VOLUME_IOPS
kmsKeyARN: ROOT_VOLUME_KEY
etcd: # Optional
mainVolume:
sizeGiB: ETCD_VOLUME_SIZE
volumeType: ETCD_VOLUME_TYPE
iops: ETCD_VOLUME_IOPS
kmsKeyARN: ETCD_VOLUME_KEY
authentication:
awsIAM:
adminIdentityARNs: ADMIN_IAM_ARN
oidc: # Optional
- certificateAuthorityData: CERTIFICATE_STRING
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
extraParams: EXTRA_PARAMS
groupsClaim: GROUPS_CLAIM
groupPrefix: GROUP_PREFIX
issuerURI: ISSUER_URL
kubectlRedirectURI: KUBECTL_REDIRECT_URL
scopes: SCOPES
userClaim: USER_CLAIM
userPrefix: USER_PREFIX
Die untergeordneten Felder von spec
sind in den folgenden Abschnitten beschrieben.
spec.networking
Dieses Objekt definiert eine clusterweite Netzwerkkonfiguration.
Name | Beschreibung | Typ | Beispiel | Erforderlich |
---|---|---|---|---|
vpcID | Die ID der VPC, in der Ihr Cluster ausgeführt wird. Die Steuerungsebene und die Knotenpools eines Nutzerclusters werden in einer einzelnen VPC ausgeführt. | string |
vpc-0814934042d983118 |
Ja |
podAddressCIDRBlocks | Bereich der IPv4-Adressen, der von den Pods des Clusters verwendet wird. Derzeit wird nur ein Bereich unterstützt. Der Bereich darf sich nicht mit Subnetzen überschneiden, die von Ihrem Netzwerk erreichbar sind. Sie können denselben Bereich für mehrere unterschiedliche AWSCluster-Objekte verwenden. | list(string) |
[10.1.0.0/16] |
Ja |
serviceAddressCIDRBlocks | Bereich der IPv4-Adressen, der von den Diensten des Clusters verwendet wird. Derzeit wird nur ein Bereich unterstützt. Der Bereich darf sich nicht mit Subnetzen überschneiden, die von Ihrem Netzwerk erreichbar sind. Sie können denselben Bereich für mehrere unterschiedliche AWSCluster-Objekte verwenden. | list(string) |
[10.2.0.0/16] |
Ja |
serviceLoadBalancerSubnetIDs | Subnetz-IDs, in denen GKE on AWS öffentliche oder private Load-Balancer erstellen kann. GKE on AWS wendet Tags auf jedes dieser Subnetze an, um das Load-Balancing zu unterstützen. Die ALB-Unterstützung erfordert mehr als ein angegebenes Subnetz. | list(string) |
[subnet-abcdefg, subnet-12345678] |
spec.controlPlane
Dieses Objekt enthält allgemeine Parameter für die Steuerungsebene des Clusters.
Name | Beschreibung | Typ | Beispiel | Erforderlich |
---|---|---|---|---|
version | Die GKE-Version der Steuerungsebene. Weitere Informationen finden Sie unter Versionsverwaltung und Upgrades und Nutzercluster aktualisieren. | string |
1.25.5-gke.2100 |
Ja |
instanceType | Ein AWS-EC2-Instanztyp für jedes Replikat der Steuerungsebene. Siehe Unterstützte Instanztypen. | string |
m5.large |
Ja |
keyName | Das AWS-EC2-Schlüsselpaar, das jedem Replikat der Steuerungsebene zugewiesen ist. | string |
my-key-pair |
Ja |
subnetIDs | Eine Liste der VPC-Subnetze für Replikate der Steuerungsebene. | list(string) |
[subnet-06a004869a1eae947] |
Ja |
securityGroupIDs | GKE on AWS erstellt automatisch Sicherheitsgruppen mit den erforderlichen Regeln für einen funktionierenden Cluster. Wenn Sie weitere Sicherheitsgruppen hinzufügen möchten, die Zugriff auf Replikate der Steuerungsebene haben, fügen Sie deren IDs zu securityGroupIDs hinzu. |
list(string) |
[sg-0ec06559d997a796f] |
Nein |
iamInstanceProfile | Name des AWS EC2-Instanzprofils, das den Replikaten der Steuerungsebene zugewiesen ist. | string |
my-control-plane-profile |
Ja |
databaseEncryption.kmsKeyARN | Der Amazon-Ressourcenname (ARN) des AWS KMS-Schlüssels, den GKE on AWS zum Verschlüsseln von Secrets auf Anwendungsebene in Clustern verwendet. | String | arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee |
|
hub.membershipName | Der Name der Connect-Mitgliedschaft, der für die Registrierung Ihres Clusters verwendet wird. | String | projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME | |
cloudOperations | Die Konfiguration von Cloud Logging und Cloud Monitoring für Knoten der Steuerungsebene. | object |
{projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} | no |
Tags | Schlüssel/Wert-Metadaten, die jeder AWS-Ressource zugewiesen sind, die den AWSCluster unterstützt. Weitere Informationen finden Sie unter Best Practices für die Tag-Kennzeichnung. | map(string) |
{Environment: Production, Team: Analytics} | no |
proxySecretName | Vom Nutzer ausgewählter Name eines Secrets, mit dem clusterspezifische Netzwerk-Proxys definiert werden | String | proxy-secret-0 | no |
workloadIdentity | Cloud Storage-Bucket für die Konfiguration von Workload Identity. Enthält ein einzelnes Feld: oidcDiscoveryGCSBucket . |
object |
{oidcDiscoveryGCSBucket: my-bucket} | no |
rootVolume | Parameter für Replikat-Root-Volumes der Steuerungsebene. Enthält ein im folgenden Abschnitt definiertes Objekt. | object |
{sizeGiB: 10} |
Ja |
etcd | Parameter für etcd-Volumes. Enthält ein im folgenden Abschnitt definiertes Objekt. | object |
{sizeGiB: 10} |
Ja |
spec.controlPlane.rootVolume und spec.etcd.rootVolume
Diese Felder gelten sowohl für spec.controlPlane.rootVolume
als auch für spec.etcd.mainVolume
.
Name | Beschreibung | Typ | Beispiel | Erforderlich |
---|---|---|---|---|
sizeGiB | Größe des Root-Volumes in Gigabyte. | integer |
10 |
Ja |
volumeType | AWS-EBS-Volume-Typ des Steuerungsebenenknotens. Kann gp2 (Standard) oder gp3 sein. |
string |
gp2 |
no |
IOPS | Die Menge der bereitgestellten E/A-Vorgänge pro Sekunde (IOPS) für Volumes. Nur gültig, wenn volumeType GP3 ist. Weitere Informationen finden Sie unter Allgemeine SSD-Volumes (gp3). |
integer |
5000 |
no |
kmsKeyARN | Der ARN des AWS KMS-Schlüssels, der zum Verschlüsseln des EBS-Volumes verwendet wird. Weitere Informationen finden Sie unter Vom Kunden verwaltete CMK zum Verschlüsseln von Volumes verwenden. | string |
arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee |
no |
spec.authentication.awsIAM
Mit diesem Objekt werden Rollen angegeben, denen mit AWS-IAM Zugriff als Clusteradministrator gewährt wird.
Name | Beschreibung | Typ | Beispiel | Erforderlich |
---|---|---|---|---|
adminIdentityARNs | ARN von AWS-IAM-Nutzern oder -Rollen, denen Zugriff als Clusteradministrator gewährt wurde | String | arn:aws:iam::123456789012:user/admin |
Nur erforderlich bei Verwendung der AWS-IAM-Authentifizierung. |
spec.authentication.oidc
Sie können mehrere oidc
-Objekte angeben. Das oidc
-Objekt ist unten definiert.
Weitere Informationen finden Sie unter Mit OIDC authentifizieren.
Feld | Erforderlich | Beschreibung | Format |
---|---|---|---|
certificateAuthorityData | Nein | Ein base64-codiertes PEM-codiertes Zertifikat für den OIDC-Anbieter. Codieren Sie das Zertifikat, einschließlich der Header, in base64, um den String zu erstellen. Fügen Sie den resultierenden String in certificateAuthorityData als eine Zeile ein. Beispiel:
certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== |
String |
clientID | Ja | Die ID für die Clientanwendung, die Authentifizierungsanfragen an den OpenID-Anbieter sendet. | String |
clientSecret | Nein | Gemeinsames Secret von OIDC-Clientanwendung und OIDC-Anbieter. | String |
extraParams | Nein |
Zusätzliche Schlüssel/Wert-Parameter, die an den OpenID-Anbieter gesendet werden. Wenn Sie eine Gruppe autorisieren, übergeben Sie resource=token-groups-claim .
Wenn Ihr Autorisierungsserver zur Einwilligung auffordert, legen Sie für die Authentifizierung mit Microsoft Azure und Okta |
Durch Kommas getrennte Liste |
groupsClaim | Nein | Die JWT-Anforderung, mit der der Anbieter Ihre Sicherheitsgruppen zurückgibt. | String |
groupPrefix | Nein | Das Präfix, das Gruppenanforderungen vorangestellt wird, um Konflikte mit vorhandenen Namen zu vermeiden. Beispiel: Aus der Gruppe "foobar" und dem Präfix "gid-" resultiert "gid-foobar". | String |
issuerURI | Ja | Die URL, über die Autorisierungsanfragen an Ihren OpenID-Anbieter gesendet werden, z. B. https://example.com/adfs . Der Kubernetes API-Server verwendet diese URL, um öffentliche Schlüssel zum Verifizieren von Tokens festzustellen. Für den URI muss HTTPS verwendet werden. |
URL String |
kubectlRedirectURI | Ja | Die für die Autorisierung verwendete Weiterleitungs-URL "kubectl". | URL String |
Umfang | Ja | Zusätzliche Bereiche, die an den OpenID-Anbieter gesendet werden. Microsoft Azure und Okta benötigen den Bereich offline_access . |
Durch Kommas getrennte Liste |
userClaim | Nein | Die JWT-Anforderung, die als Nutzername verwendet wird. Der Standardwert ist "sub". Dies ist eine eindeutige ID des Endnutzers. Je nach OpenID-Anbieter können Sie andere Anforderungen auswählen, beispielsweise E-Mail-Adresse oder Name. Allerdings wird anderen Anforderungen als der E-Mail-Adresse die Aussteller-URL vorangestellt, um Namenskonflikte zu vermeiden. | String |
userPrefix | Nein | Das Präfix, das Nutzernamensanforderungen vorangestellt wird, um Konflikte mit vorhandenen Namen zu vermeiden.
Wenn Sie dieses Feld nicht angeben und der Nutzername ein anderer Wert als eine E-Mail-Adresse ist, wird das Präfix standardmäßig auf issuerurl# gesetzt. Wenn Sie userPrefix auf - setzen, ist das Präfix deaktiviert.
| String |