Clusters sur AWS

Cette rubrique décrit les méthodes de configuration des clusters de charge de travail Tanzu Kubernetes Grid (TKG) pour utiliser des fonctionnalités spécifiques à AWS qui ne sont pas entièrement configurables dans le fichier de configuration plat du cluster ou dans la spécification d'objet de style Kubernetes.

Pour plus d'informations sur la configuration des clusters de charge de travail sur AWS à l'aide de fichiers de configuration et de spécifications d'objet, reportez-vous à la section Fichiers de configuration du cluster AWS.

Ajout de balises de sous-réseau pour un VPC existant

Si vous souhaitez créer des services de type LoadBalancer dans le cluster, vous devez ajouter la balise kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared aux sous-réseaux publics que vous prévoyez d'utiliser pour votre cluster de charge de travail.

L'ajout de la balise kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared aux sous-réseaux publics vous permet de créer des services de type LoadBalancer après le déploiement du cluster. Pour ajouter cette balise, puis déployer le cluster, procédez comme suit :

  1. Collectez l'ID ou les ID du ou des sous-réseaux publics dans votre VPC que vous souhaitez utiliser pour le cluster. Pour déployer un cluster de charge de travail prod, vous devez fournir trois sous-réseaux.

  2. Créez la balise requise en exécutant la commande suivante :

    aws ec2 create-tags --resources YOUR-PUBLIC-SUBNET-ID-OR-IDS --tags Key=kubernetes.io/cluster/YOUR-CLUSTER-NAME,Value=shared
    

    Où :

    • YOUR-PUBLIC-SUBNET-ID-OR-IDS est l'ID ou les ID du ou des sous-réseaux publics que vous avez collectés à l'étape précédente.
    • YOUR-CLUSTER-NAME est le nom du cluster de charge de travail que vous prévoyez de créer.

    Par exemple :

    aws ec2 create-tags --resources subnet-00bd5d8c88a5305c6 subnet-0b93f0fdbae3436e8 subnet-06b29d20291797698 --tags Key=kubernetes.io/cluster/my-cluster,Value=shared
    
  3. Configurer le cluster.

  4. Créez le cluster. Par exemple :

    tanzu cluster create my-cluster -f my-cluster-config.yaml
    

Déployer un cluster compatible GPU

Pour déployer un cluster de charge de travail qui tire parti des machines virtuelles basées sur NVIDIA GPU disponibles sur AWS :

  1. Dans le fichier de configuration du cluster, définissez NODE_MACHINE_TYPE, pour les nœuds worker, sur un type de machine virtuelle compatible GPU, tel que g4dn.8xlarge.

    • Pour les types de machines virtuelles GPU sur AWS, reportez-vous à la section Calcul accéléré dans la documentation AWS.
  2. Déployez le cluster avec le fichier de configuration du cluster :

    tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
    
  3. Installez une stratégie de cluster GPU et un opérateur GPU sur le cluster :

    1. Définissez le contexte kubectl context sur le cluster, s'il ne s'agit pas déjà du contexte actuel.

    2. Téléchargez les ressources NVIDIA GPU requises à partir du référentiel AWS du fournisseur d'API de cluster et enregistrez-les dans votre répertoire actuel :

    3. Appliquez la stratégie de cluster :

      kubectl apply clusterpolicy-crd.yaml
      
    4. Appliquez l'opérateur GPU :

      kubectl apply gpu-operator-components.yaml
      
  4. Exécutez kubectl get pods -A. Vous devez voir des listes pour les espaces gpu-operator- dans l'espace de noms default et les espaces nvidia- dans l'espace de noms gpu-operator-resources.

  5. Pour tester le cluster compatible GPU, exécutez le test d'ajout de vecteur CUDA VectorAdd dans la documentation NVIDIA.

  6. Pour tester l'opérateur GPU :

    1. Augmentez le nombre de nœuds worker du cluster de charge de travail :

      tanzu cluster scale MY-GPU-CLUSTER -w 2
      
    2. Exécutez de nouveau la commande kubectl get pods -A. Vous devez voir des espaces gpu-operator- et nvidia- supplémentaires répertoriés pour les nœuds ajoutés.

Déployer des clusters sur différents comptes AWS

Vous pouvez déployer des clusters de charge de travail entre plusieurs comptes AWS si vos clusters Kubernetes sont connectés à Internet ou déployés dans des VPC homologues via l'homologation VPC ou la passerelle de transit AWS.

Pour préparer un compte AWS secondaire pour le déploiement de clusters de charge de travail, préparez le compte secondaire et configurez les relations de confiance entre celui-ci et le compte de cluster de gestion comme suit :

Créer des rôles IAM

Tout d'abord, vous devez configurer des rôles IAM dans le compte AWS secondaire.

Pour ce faire, utilisez la commande tanzu mc permissions aws. Suivez le même processus que celui décrit dans la section Créer des ressources IAM de Déployer des clusters de gestion à partir d'un fichier de configuration.

Activer l'approbation entre comptes

Pour activer un cluster de gestion dans un compte AWS afin de déployer des clusters de charge de travail dans un compte AWS secondaire, vous devez d'abord configurer une stratégie d'approbation dans le compte secondaire.

Pour ce faire, recherchez les controllers.tkg.cloud.vmware.com créés par les tanzu mc permissions aws dans le compte secondaire. Modifiez ensuite la relation de confiance comme suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    },
    {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Principal": {
        "AWS": "arn:aws:iam::MANAGEMENT-ACCOUNT-ID:root"
      },
    }
  ]
}

MANAGEMENT-ACCOUNT-ID est l'ID de compte AWS dans lequel le cluster de gestion est déployé.

Activer le cluster de gestion pour qu'il assume le rôle IAM

Après avoir configuré la stratégie d'approbation, activez le rôle IAM control-plane.tkg.cloud.vmware.com du compte du cluster de gestion pour assumer le rôle IAM controllers.tkg.cloud.vmware.com dans le compte secondaire.

Pour ce faire, attachez une nouvelle stratégie ou ajoutez une stratégie en ligne comme suit :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
    }
  ]
}

SECONDARY-ACCOUNT-ID est l'ID de compte AWS du compte secondaire.

Créer une ressource AWSClusterRoleIdentity dans le cluster de gestion

Pour configurer le nouveau rôle IAM entre comptes dans le cluster de gestion, vous devez créer un objet de ressource AWSClusterRoleIdentity dans Kubernetes comme suit :

apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: AWSClusterRoleIdentity
metadata:
  name: IDENTITY-NAME
spec:
  allowedNamespaces: {}
  durationSeconds: 900
  roleARN: "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
  sourceIdentityRef:
    kind: AWSClusterControllerIdentity
    name: default

Où :

  • IDENTITY-NAME est tout élément qui identifie la ressource. Par exemple, un nom qui représente le compte de développement d'une branche d'activité (LOB-dev)
  • SECONDARY-ACCOUNT-ID est l'ID des étapes de configuration précédentes.

Les ressources AWSClusterRoleIdentity sont étendues globalement. Vous pouvez définir le champ allowedNamespaces pour limiter les espaces de noms autorisés à gérer les clusters à l'aide du rôle IAM, en définissant sa valeur sur une liste explicite d'espaces de noms ou sur un sélecteur. Reportez-vous à la section Sécuriser l'accès aux identités (Secure Access to Identities) du site The Cluster API Book.

Déployer un cluster de charge de travail sur le compte secondaire

Après avoir créé la ressource AWSClusterRoleIdentity, vous pouvez l'utiliser pour déployer un cluster de charge de travail sur le compte AWS secondaire.

Pour ce faire, incluez la ligne suivante dans le fichier de configuration de cluster et exécutez la commande tanzu cluster create avec l'une des options standard :

AWS_IDENTITY_REF_NAME: IDENTITY-NAME

IDENTITY-NAME est le nom du AWSClusterRoleIdentity créé à l'étape précédente.

check-circle-line exclamation-circle-line close-line
Scroll to top icon