Configurer Cloud Run pour Anthos sur Google Cloud

Ce guide explique comment configurer un cluster Google Kubernetes Engine (GKE) et activer Cloud Run pour Anthos sur Google Cloud. Vous pouvez activer Cloud Run for Anthos sur les clusters GKE standards et privés à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud.

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. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

Configurer l'environnement de ligne de commande

Bien que vous puissiez choisir d'utiliser Cloud Console ou l'outil gcloud pour gérer Cloud Run for Anthos, certaines tâches requièrent l'outil gcloud.

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

  1. Installez et initialisez le SDK Cloud.

  2. Définissez le paramètre de projet par défaut pour l'outil gcloud 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 l'outil gcloud 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
  • 3 nœuds avec deux 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.

Console

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

  1. Accédez à la page Cloud Run for Anthos dans Cloud Console :

    Accédez à Cloud Run

  2. Cliquez sur Créer un service.

  3. Cliquez sur Créer un cluster dans le menu des clusters disponibles.

  4. Dans le volet Créer un cluster par défaut avec Cloud Run for Anthos activé, procédez comme suit :

    • Sélectionnez une zone pour le cluster. Choisissez une zone proche de vous. Par exemple, sélectionnez us-west1-a si vous vous trouvez sur la côte ouest des États-Unis.

    • Choisissez un nom pour le nouveau cluster.

    • Cliquez sur Création rapide afin de créer un cluster avec la configuration minimale requise pour Cloud Run for Anthos, créé pour vous avec Cloud Run for Anthos activé.

  5. Choisissez un nom pour le nouveau service Cloud Run for Anthos, puis cliquez sur Suivant.

  6. Dans la section Configurer la première révision du service, procédez comme suit :

    • Sélectionnez Déployer une révision à partir d'une image de conteneur existante.

    • Dans le champ URL de l'image du conteneur, saisissez l'URL de votre propre image de conteneur ou cliquez sur Sélectionner pour choisir l'un de vos conteneurs Container Registry disponibles et une sélection de conteneurs de démonstration.

    • Cliquez sur Next (Suivant).

  7. Dans la section Connectivité, vous pouvez choisir de créer un service interne ou externe. Les services internes ne sont accessibles que via le réseau du cluster, tandis que les services externes sont accessibles depuis l'Internet public. Vous pourrez changer ce paramètre ultérieurement.

  8. Cliquez sur Create (Créer). La création de votre cluster et de votre service prend quelques minutes.

Ligne de commande

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=n1-standard-2 \
    --num-nodes=3 \
    --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 :

  • 3 nœuds avec deux processeurs virtuels
  • Niveaux d'accès :
    • https://www.googleapis.com/auth/logging.write
    • https://www.googleapis.com/auth/monitoring.write

Vous pouvez activer Cloud Run for Anthos sur un cluster à l'aide de l'outil gcloud ou de Cloud Console :

Console

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

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

    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. Sélectionnez 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 l'élément suivant :

    • CLUSTER_NAME : nom du cluster.
    • ZONE : zone du cluster. 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 l'outil gcloud

Une fois le cluster créé, vous pouvez définir des valeurs par défaut que l'outil de ligne de commande gcloud utilisera. 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
  • 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 l'outil de ligne de commande gcloud. 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 l'outil 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 for 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 for Anthos sur Google Cloud. 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 du SDK Cloud 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/simple-api \
    --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 :

    OK
    
  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 Cloud Console :

    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.

Étape suivante