Configurer Cloud Run for Anthos

Ce guide vous explique comment configurer un cluster Google Kubernetes Engine (GKE) et activer Cloud Run for Anthos. Vous pouvez activer Cloud Run for Anthos sur des clusters GKE standards et privés à l'aide de la console Google Cloud ou de Google Cloud CLI.

L'activation de Cloud Run for Anthos installe Istio et Knative Serving dans le cluster pour connecter et gérer vos charges de travail sans état. Pour en savoir plus, consultez la page Présentation de l'architecture de Cloud Run for Anthos.

Avant de commencer

  1. Cloud Run for Anthos est un module complémentaire de Google Kubernetes Engine. Un essai gratuit est disponible jusqu'au 30 septembre 2021.
  2. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  3. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  4. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

Configurer l'environnement de ligne de commande

Bien que vous puissiez choisir d'utiliser la console Google Cloud ou la CLI gcloud pour gérer Cloud Run for Anthos, certaines tâches requièrent gcloud CLI.

Pour configurer les outils de ligne de commande gcloud et kubectl pour Cloud Run for Anthos, procédez comme suit :

  1. Installez et initialisez Google Cloud CLI.

  2. Définissez le paramètre de projet par défaut pour gcloud CLI sur celui que vous venez de créer ou sur un projet existant que vous souhaitez utiliser :

    gcloud config set project PROJECT-ID

    Remplacez PROJECT-ID par l'ID du projet que vous avez créé.

  3. Définissez zone sur la zone souhaitée pour votre cluster. Vous pouvez utiliser n'importe quelle zone dans laquelle GKE est disponible. Exemple :

    gcloud config set compute/zone ZONE

    Remplacez ZONE par votre zone.

  4. Activez les API suivantes pour le projet, lesquelles sont nécessaires pour créer un cluster et un conteneur, puis publier le conteneur dans le registre Google Kubernetes Engine :

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. Installer l'outil de ligne de commande kubectl :

    gcloud components install kubectl
  6. Mettez à jour les composants de gcloud CLI installés :

    gcloud components update

Activer Cloud Run for Anthos

Cloud Run for Anthos s'exécute sur un cluster GKE. Vous pouvez activer Cloud Run for Anthos sur un cluster existant ou créer un cluster avec Cloud Run for Anthos activé.

Choisissez la manière dont vous souhaitez configurer Cloud Run for Anthos :

Cloud Run for Anthos peut également être activé sur des clusters privés GKE. Pour en savoir plus sur la création d'un cluster GKE privé, reportez-vous à la section Créer un cluster privé dans la documentation GKE.

Créer un cluster GKE avec Cloud Run for Anthos activé

Ces instructions permettent de créer un cluster avec les configurations suivantes :

  • Cloud Run for Anthos activé
  • Version de Kubernetes : versions GKE disponibles
  • 4 nœuds avec 2 processeurs virtuels
  • Espace de noms par défaut : default

Voici les configurations de cluster recommandées pour tester Cloud Run for Anthos. Pour les charges de travail de production, vous devez configurer votre cluster GKE pour répondre à vos besoins spécifiques. Pour en savoir plus sur les différents types de clusters GKE et leurs options de configuration, consultez la section Types de clusters dans la documentation GKE.

Pour créer un cluster et activer Cloud Run for Anthos, procédez comme suit :

  1. Créer un cluster :

    gcloud container clusters create CLUSTER-NAME \
    --zone=ZONE \
    --addons=HttpLoadBalancing,CloudRun \
    --machine-type=e2-standard-4 \
    --num-nodes=4 \
    --cluster-version=GKE-VERSION \
    --enable-stackdriver-kubernetes
    • CLUSTER-NAME est le nom que vous souhaitez donner à votre cluster.

    • ZONE correspond à la zone Compute Engine souhaitée pour votre cluster.

    • GKE-VERSION correspond à la version de GKE souhaitée. Consultez les versions disponibles.

    L'autoscaling de cluster n'est pas activé par défaut, même si Cloud Run for Anthos adapte automatiquement le nombre d'instances au sein de votre cluster en fonction de la capacité disponible.

  2. Patientez pendant la création du cluster.

Activer Cloud Run for Anthos sur un cluster existant

Votre cluster GKE doit avoir la configuration minimale suivante :

Vous pouvez activer Cloud Run for Anthos sur un cluster à l'aide de gcloud CLI ou de la console Google Cloud :

Console

Pour activer Cloud Run for Anthos sur un cluster existant, procédez comme suit :

  1. Accédez à la page "Google Kubernetes Engine" dans la console Google Cloud :

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le nom du cluster dans lequel vous souhaitez activer Cloud Run for Anthos.

  3. Cliquez sur Modifier.

  4. Cliquez sur Activer Cloud Run for Anthos.

  5. Cliquez sur Enregistrer. Une fois la mise à jour terminée, le cluster sera compatible avec Cloud Run pour Anthos.

Ligne de commande

Pour activer Cloud Run for Anthos sur un cluster existant, procédez comme suit :

  1. Activez le cluster à l'aide de la commande suivante :

    gcloud container clusters update \
    CLUSTER_NAME \
    --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \
    --zone=ZONE

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du cluster.
    • ZONE : zone du cluster. Par exemple, us-central1-a.
  2. Attendez la fin de l'activation. Si l'opération réussit, la ligne de commande renvoie un message semblable à celui-ci :

    Updating your-cluster-name...done.

Configurer les paramètres par défaut de la CLI gcloud

Après avoir créé le cluster, vous pouvez définir les valeurs par défaut que Google Cloud CLI doit utiliser. Lorsque vous utilisez la ligne de commande, les invites ultérieures sont supprimées pour les valeurs par défaut que vous avez définies, telles que le nom ou l'emplacement du cluster.

Vous pouvez configurer les paramètres par défaut suivants :

  • Nom du cluster
  • Emplacement du cluster
  • Identifiants
  • son espace de noms.
  • Plate-forme

Pour définir des valeurs par défaut, procédez comme suit :

  1. Définissez le cluster et l'emplacement du cluster par défaut, puis obtenez les identifiants en exécutant les commandes suivantes :

    gcloud config set run/platform gke
    gcloud config set run/cluster CLUSTER
    gcloud config set run/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    Remplacez :

    • CLUSTER par le nom du cluster ;
    • ZONE par l'emplacement du cluster.
  2. Par défaut, votre cluster est créé avec un espace de noms intitulé default. Pour en savoir plus sur les espaces de noms ainsi que sur les raisons pour lesquelles vous pourriez créer et utiliser un espace de noms autre que default, consultez la page sur les espaces de noms.

    Pour créer un espace de noms, exécutez la commande suivante :

    kubectl create namespace NAMESPACE

    Remplacez NAMESPACE par le nom de l'espace de noms que vous souhaitez créer.

  3. Si vous avez créé un espace de noms à l'étape précédente, vous pouvez le définir comme espace de noms par défaut utilisé chaque fois que vous appelez Google Cloud CLI. Sinon, l'espace de noms default est utilisé. Pour définir votre nouvel espace de noms, exécutez la commande suivante :

    gcloud config set run/namespace NAMESPACE

    Remplacez NAMESPACE par le nom de l'espace de noms que la CLI gcloud doit utiliser par défaut.

Activer les métriques sur un cluster avec Workload Identity

Lorsque vous activez Workload Identity, Cloud Run pour Anthos ne remonte pas certaines métriques, telles que le nombre de requêtes de révision ou la latence des requêtes, à la suite Google Cloud Operations. Il continue néanmoins à générer des rapports sur les métriques associées au processeur et à la mémoire.

Pour activer l'ensemble des métriques, vous devez définir manuellement les autorisations d'écriture de métriques dans Cloud Monitoring en attribuant le rôle "Rédacteur de métriques Monitoring" au compte de service Google (GSA, Google Service Account) associé à votre service Cloud Run pour Anthos.

Accordez au GSA de votre service les autorisations liées au rôle "Rédacteur de métriques Monitoring" :

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

Remplacez :

  • PROJECT_ID par l'ID du projet de cluster où se trouve votre KSA ;
  • GSA_PROJECT par l'ID de projet associé à un GSA qui n'est pas dans le cluster. Vous pouvez utiliser n'importe quel GSA de votre organisation.

Pour en savoir plus, consultez la page Accorder, modifier et révoquer les accès à des ressources.

Pour configurer les services fournis par les API Google Cloud (tels que les API Compute, les API Storage et Database, ou les API Machine Learning) depuis votre cluster GKE, consultez la page Utiliser Workload Identity.

Développer dans une configuration mutualisée

Dans les cas d'utilisation mutualisés, vous devez gérer et déployer les services Cloud Run pour Anthos sur un cluster Google Kubernetes Engine situé en dehors de votre projet actuel. Pour en savoir plus sur l'architecture mutualisée de GKE, consultez la page Architecture de cluster mutualisée.

Pour savoir comment configurer l'architecture mutualisée pour Cloud Run for Anthos, consultez la page Architecture mutualisée et multi-projets.

Configurer un réseau interne privé

Le déploiement de services sur un réseau interne est utile pour les entreprises qui fournissent des applications internes à leur personnel, ainsi que pour les services utilisés par des clients et s'exécutant en dehors du cluster Cloud Run pour Anthos. Cette configuration permet aux autres ressources de votre réseau de communiquer avec le service via une adresse IP privée interne (RFC 1918) qui n'est pas accessible au public.

Pour créer votre réseau interne, configurez la passerelle d'entrée d'Istio pour qu'elle utilise l'équilibrage de charge TCP/UDP interne plutôt qu'un équilibreur de charge public du réseau externe. Vous pouvez ensuite déployer vos services Cloud Run pour Anthos sur une adresse IP interne au sein de votre réseau VPC.

Avant de commencer

  • Vous devez disposer d'autorisations admin sur votre cluster.
  • Seules les versions 310.0 ou ultérieures de Google Cloud CLI sont compatibles. Pour en savoir plus, consultez la section Configurer gcloud.

Pour configurer l'équilibreur de charge interne, procédez comme suit :

  1. Mettez à jour la passerelle d'entrée Istio pour utiliser l'équilibrage de charge TCP/UDP interne en créant un cluster ou en mettant à jour un cluster existant :

    • Créez un cluster avec un équilibreur de charge interne :

      gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-2  \
      --num-nodes=3  \
      --enable-stackdriver-kubernetes \
      --cloud-run-config=load-balancer-type=INTERNAL
    • Mettez à jour un cluster existant pour utiliser un équilibreur de charge interne :

      gcloud container clusters update CLUSTER_NAME
      --update-addons=CloudRun=ENABLED \
      --cloud-run-config=load-balancer-type=INTERNAL

    La prise en compte de la modification peut prendre quelques minutes.

  2. Exécutez la commande suivante pour surveiller les mises à jour de votre cluster GKE :

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. Notez l'annotation "cloud.google.com/load-balancer-type: Internal".
    2. Recherchez la valeur de IP dans l'équilibreur de charge d'entrée pour passer à une adresse IP privée.
    3. Appuyez sur Ctrl+C pour arrêter les actualisations lorsque vous voyez une adresse IP privée dans le champ IP.

Pour vérifier la connectivité interne une fois les modifications effectuées, procédez comme suit :

  1. Déployez un service appelé sample sur Cloud Run pour Anthos dans l'espace de noms default :

    gcloud run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --namespace default
    
  2. Créez une machine virtuelle (VM) Compute Engine dans la même zone que le cluster GKE :

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. Stockez l'adresse IP privée de la passerelle d'entrée Istio dans une variable d'environnement nommée EXTERNAL_IP et un fichier nommé external-ip.txt :

    export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \
        -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
    
  4. Copiez le fichier contenant l'adresse IP sur la VM :

    gcloud compute scp external-ip.txt $VM:~
    
  5. Connectez-vous à la VM à l'aide de SSH :

    gcloud compute ssh $VM
    
  6. Dans la session SSH, testez l'exemple de service :

    curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
    

    Voici le résultat :

    Hello World!
    
  7. Quittez la session SSH :

    exit
    

Utiliser une installation Istio distincte

Les instructions suivantes expliquent comment connecter Anthos Service Mesh, le module complémentaire Istio sur GKE ou une installation Istio personnalisée avec Cloud Run for Anthos, en plus des composants Istio déjà installés par défaut dans Cloud Run for Anthos sur Google Cloud.

Les composants Istio inclus dans l'installation par défaut de Cloud Run for Anthos ne sont actuellement pas compatibles avec l'injection side-car automatique. Cependant, vous pouvez utiliser une installation Istio supplémentaire pour activer l'injection side-car Istio dans l'espace de noms où vos services s'exécutent.

Pour utiliser une installation Istio supplémentaire, vous devez vérifier que la passerelle d'entrée Istio est nommée istio-ingressgateway dans l'espace de noms istio-system. Cloud Run pour Anthos peut prendre en charge et gérer le trafic externe provenant des passerelles d'entrée Istio installées sur :

  • l'espace de noms istio-system, avec le domaine local du cluster istio-ingressgateway.istio-system.svc.cluster.local configuré par défaut lorsque vous utilisez une installation Istio supplémentaire ;
  • l'espace de noms gke-system, avec le domaine local du cluster istio-ingress.gke-system.svc.cluster.local configuré avec l'installation par défaut de Cloud Run for Anthos.

Important : Si vous configurez et utilisez le fichier AuthorizationPolicy d'Istio, vous devez corriger une faille connue avec la correspondance du type de chemin pour le contrôle des accès. Pour en savoir plus sur la prévention de l'exposition à la faille, consultez la page Bonnes pratiques concernant la sécurité.

Pour vérifier la passerelle d'entrée Istio supplémentaire que Cloud Run pour Anthos utilise, procédez comme suit :

  1. Ouvrez le fichier ConfigMap config-istio :

    kubectl get configmap config-istio --namespace knative-serving -oyaml
    
  2. Vérifiez que la passerelle d'entrée Istio supplémentaire est nommée istio-ingressgateway et qu'elle se trouve dans l'espace de noms istio-system.

Activer le protocole HTTPS et des domaines personnalisés

Si vous souhaitez utiliser HTTPS et des domaines personnalisés qui s'appliquent au cluster, consultez les pages Activer les certificats HTTPS et TLS automatiques et Mapper les domaines personnalisés.

Désactiver Cloud Run pour Anthos

Pour désactiver Cloud Run for Anthos dans votre cluster, procédez comme suit :

  1. Accédez à la page "Google Kubernetes Engine" dans la console Google Cloud :

    Accéder à Google Kubernetes Engine

  2. Cliquez sur le cluster dans lequel vous souhaitez désactiver Cloud Run for Anthos.

  3. Cliquez sur Modifier.

  4. Dans le menu Cloud Run for Anthos, sélectionnez Désactiver.

  5. Cliquez sur Enregistrer.

Étapes suivantes