Cet article décrit les options de configuration de la définition de ressource personnalisée AWSCluster.
Définir un AWSCluster
AWSCluster
est une ressource personnalisée Kubernetes définie par GKE sur AWS. Cette ressource représente un plan de contrôle GKE sur AWS.
Pour créer un cluster à partir de ce modèle, copiez le code YAML suivant et renseignez les valeurs en surbrillance définies dans les spécifications de champs spec.networking
et spec.controlPlane
. Appliquez ensuite le fichier manifeste de la ressource à votre service de gestion.
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
Les sous-champs sous spec
sont décrits dans les sections suivantes.
spec.networking
Cet objet définit la configuration de mise en réseau à l'échelle du cluster.
Nom | Description | Type | Exemple | Obligatoire |
---|---|---|---|---|
vpcID | ID du VPC dans lequel votre cluster s'exécute. Le plan de contrôle et les pools de nœuds d'un cluster d'utilisateur s'exécutent dans un seul VPC. | string |
vpc-0814934042d983118 |
Oui |
podAddressCIDRBlocks | Plage d'adresses IPv4 utilisées par les pods du cluster. Actuellement, une seule plage est acceptée. La plage ne doit chevaucher aucun sous-réseau accessible depuis votre réseau. Vous pouvez utiliser la même plage en toute sécurité sur plusieurs objets AWSCluster différents. | list(string) |
[10.1.0.0/16] |
Oui |
serviceAddressCIDRBlocks | Plage d'adresses IPv4 utilisées par les services du cluster. Actuellement, une seule plage est acceptée. La plage ne doit chevaucher aucun sous-réseau accessible depuis votre réseau. Vous pouvez utiliser la même plage en toute sécurité sur plusieurs objets AWSCluster différents. | list(string) |
[10.2.0.0/16] |
Oui |
serviceLoadBalancerSubnetIDs | ID de sous-réseau où GKE sur AWS peut créer des équilibreurs de charge publics ou privés. GKE sur AWS applique des tags à chacun de ces sous-réseaux pour assurer l'équilibrage de charge. La compatibilité avec l'ALB nécessite plusieurs sous-réseaux spécifiés. | list(string) |
[subnet-abcdefg, subnet-12345678] |
spec.controlPlane
Cet objet inclut des paramètres courants pour le plan de contrôle du cluster.
Nom | Description | Type | Exemple | Obligatoire |
---|---|---|---|---|
version | Version GKE du plan de contrôle. Pour plus d'informations, consultez les pages Gestion des versions et mises à jour et Mettre à niveau un cluster d'utilisateur. | string |
1.25.5-gke.2100 |
Oui |
instanceType | Un type d'instance EC2 AWS pour chaque instance dupliquée du plan de contrôle. Consultez la section Types d'instances compatibles. | string |
m5.large |
Oui |
keyName | Paire de clés EC2 AWS attribuée à chaque instance dupliquée du plan de contrôle. | string |
my-key-pair |
Oui |
subnetIDs | Liste de sous-réseaux VPC pour les instances dupliquées du plan de contrôle. | list(string) |
[subnet-06a004869a1eae947] |
Oui |
securityGroupIDs | GKE sur AWS crée automatiquement des groupes de sécurité avec des règles minimales requises pour un cluster opérationnel. Si vous souhaitez ajouter des groupes de sécurité supplémentaires avec accès aux instances dupliquées du plan de contrôle, ajoutez leurs ID à securityGroupIDs . |
list(string) |
[sg-0ec06559d997a796f] |
no |
iamInstanceProfile | Nom du profil d'instance EC2 d'AWS attribué aux instances dupliquées du plan de contrôle. | string |
my-control-plane-profile |
Oui |
databaseEncryption.kmsKeyARN | Nom de ressource Amazon (ARN) de la clé KMS AWS utilisée par GKE sur AWS pour chiffrer les secrets de la couche d'application dans les clusters. | chaîne | arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee |
|
hub.membershipName | Nom d'appartenance Connect utilisé pour enregistrer votre cluster. | chaîne | projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME | |
cloudOperations | Configuration de Cloud Logging et Cloud Monitoring pour les nœuds du plan de contrôle. | object |
{projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} | no |
tags | Métadonnées clé/valeur attribuées à chaque ressource AWS prenant en charge AWSCluster. Pour en savoir plus, consultez l'article Bonnes pratiques en matière de balisage. | map(string) |
{Environment: Production, Team: Analytics} | no |
proxySecretName | Nom d'un secret choisi par l'utilisateur pour définir les proxys réseau spécifiques au cluster | chaîne | proxy-secret-0 | no |
workloadIdentity | Bucket Cloud Storage pour la configuration de Workload Identity. Contient un seul champ : oidcDiscoveryGCSBucket . |
object |
{oidcDiscoveryGCSBucket: my-bucket} | no |
rootVolume | Paramètres des volumes racine de l'instance dupliquée du plan de contrôle. Contient un objet défini dans la section suivante. | object |
{sizeGiB: 10} |
Oui |
etcd | Paramètres des volumes etcd. Contient un objet défini dans la section suivante. | object |
{sizeGiB: 10} |
Oui |
spec.controlPlane.rootVolume et spec.etcd.rootVolume
Ces champs s'appliquent à la fois à spec.controlPlane.rootVolume
et à spec.etcd.mainVolume
.
Nom | Description | Type | Exemple | Requis |
---|---|---|---|---|
sizeGiB | Taille du volume racine en gigaoctets. | integer |
10 |
Oui |
volumeType | Type de volume EBS AWS du nœud de plan de contrôle. Peut être gp2 (par défaut), ou gp3 . |
string |
gp2 |
no |
iops | Nombre d'opérations d'E/S par seconde (IOPS) provisionné pour les volumes. Valable uniquement lorsque la valeur de volumeType est GP3 . Pour plus d'informations, consultez la section Volumes SSD à usage général (gp3). |
integer |
5000 |
no |
kmsKeyARN | ARN de la clé KMS AWS utilisée pour chiffrer le volume EBS. Pour plus d'informations, consultez la page Utiliser des clés gérées par le client (CMK) pour chiffrer des volumes. | string |
arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee |
no |
spec.authentication.awsIAM
Cet objet spécifie les rôles auxquels un administrateur de cluster a accès avec IAM AWS.
Nom | Description | Type | Exemple | Obligatoire |
---|---|---|---|---|
adminIdentityARNs | ARN des utilisateurs ou des rôles IAM AWS qui disposent d'un accès administrateur de cluster. | chaîne | arn:aws:iam::123456789012:user/admin |
Obligatoire uniquement si vous utilisez l'authentification IAM AWS. |
spec.authentication.oidc
Vous pouvez spécifier plusieurs objets oidc
. L'objet oidc
est défini ci-dessous.
Pour plus d'informations, consultez la section S'authentifier avec OIDC.
Champ | Obligatoire | Description | Format |
---|---|---|---|
certificateAuthorityData | Non | Certificat encodé au format PEM encodé en base64 pour le fournisseur OIDC. Pour créer la chaîne, encodez le certificat, y compris les en-têtes, en base64. Incluez la chaîne obtenue dans certificateAuthorityData en tant que ligne unique. Exemple : certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== |
Chaîne |
clientID | Oui | ID de l'application cliente qui envoie des requêtes d'authentification au fournisseur OpenID. | Chaîne |
clientSecret | Non | Clé secrète partagée entre l'application cliente OIDC et le fournisseur OIDC. | Chaîne |
extraParams | Non |
Paramètres de clé-valeur supplémentaires à envoyer au fournisseur OpenID. Si vous autorisez un groupe, transmettez resource=token-groups-claim .
Si votre serveur d'autorisation vous demande l'autorisation, pour l'authentification avec Microsoft Azure et Okta, définissez |
Liste d'éléments séparés par une virgule |
groupsClaim | Non | Revendication JWT que le fournisseur utilise pour renvoyer vos groupes de sécurité. | Chaîne |
groupPrefix | Non | Préfixe ajouté aux revendications de groupe pour éviter les conflits avec les noms existants. Par exemple, pour un groupe foobar et un préfixe gid- donnés, gid-foobar. | Chaîne |
issuerURI | Oui | URL où les requêtes d'autorisation sont envoyées à votre OpenID, telle que https://example.com/adfs . Le serveur de l'API Kubernetes utilise cette URL pour découvrir les clés publiques permettant de valider les jetons. L'URI doit utiliser le protocole HTTPS. |
Chaîne d'URL |
kubectlRedirectURI | Oui | L'URL de redirection que "kubectl" utilise pour l'autorisation. | Chaîne d'URL |
scopes | Oui | Niveaux d'accès supplémentaires à envoyer au fournisseur OpenID. Microsoft Azure et Okta nécessitent le niveau d'accès offline_access . |
Liste d'éléments séparés par une virgule |
userClaim | Non | Revendication JWT à utiliser comme nom d'utilisateur. La valeur par défaut est "sub", qui est censée correspondre à un identifiant unique de l'utilisateur final. Vous pouvez choisir d'autres revendications, telles que l'e-mail ou le nom, en fonction du fournisseur OpenID. Toutefois, les revendications autres que l'e-mail sont précédées de l'URL de l'émetteur pour éviter les conflits de noms. | Chaîne |
userPrefix | Non | Préfixe ajouté aux revendications de nom d'utilisateur pour éviter les conflits avec les noms existants.
Si vous ne fournissez pas ce champ et que le nom d'utilisateur est une valeur autre qu'une adresse e-mail, le préfixe est issuerurl# par défaut. Lorsque vous définissez userPrefix sur - , le préfixe est désactivé.
| Chaîne |