Déployer des applications Kubernetes sur des clusters non GKE

Si vous souhaitez déployer une application Kubernetes sur des configurations de cluster non GKE, telles qu'un cluster Anthos exécutant Anthos GKE On-Prem ou un cluster exécutant Istio, vous devez effectuer les tâches de cette section, le cas échéant.

Suivant l'application que vous déployez, son exécution sur votre cluster peut nécessiter certaines étapes supplémentaires. Pour plus d'informations sur la configuration de l'application, consultez la documentation de son fournisseur.

Accéder aux applications Anthos dans Google Cloud Marketplace

Déployer sur des clusters exécutant Istio

Sur les clusters exécutant Istio, les connexions externes aux services tiers (tels que les dépôts de packages des OS) sont par défaut bloquées. Vous devez configurer le trafic Istio sortant pour autoriser l'accès aux services externes.

Déployer sur Anthos GKE On-Prem

Si vous déployez une application sur un cluster Anthos GKE On-Prem, vous devez effectuer ces tâches avant de déployer l'application :

Une fois ces tâches terminées, ouvrez la liste Cloud Marketplace de l'application et suivez les étapes de déploiement de l'application.

Configurer l'accès réseau à Container Registry

Pour télécharger les images de conteneur de l'application, assurez-vous que votre cluster dispose d'un accès réseau à Container Registry. Votre hôte de cluster doit être en mesure de pinguer marketplace.gcr.io. Pour activer l'accès, vous pouvez être amené à effectuer l'une ou plusieurs des opérations suivantes :

Configurer l'authentification Docker pour accéder à Container Registry

Pour permettre à votre cluster Anthos GKE On-Prem d'accéder aux images d'application dans Container Registry, vous devez créer une clé de compte de service Google Cloud et annoter l'espace de noms de l'application avec la clé. La clé est ensuite appliquée en tant que imagePullSecret au compte de service Kubernetes (KSA) par défaut de l'espace de noms lorsque vous déployez l'application.

La première fois que vous déployez une application sur un cluster Anthos GKE On-Prem, vous devez également créer un espace de noms appelé application-system pour les composants Cloud Marketplace, puis appliquer un imagePullSecret au compte de service par défaut de l'espace de noms.

Suivez ces étapes pour configurer l'authentification sur Container Registry :

  1. Créez un compte de service Google Cloud. Vous n'avez pas besoin d'attribuer de rôles au compte de service.

    Pour en savoir plus sur la création d'un compte de service, consultez la page Créer et gérer des comptes de service.

  2. Créez une clé pour le compte de service et téléchargez-la sous forme de fichier JSON. Pour en savoir plus sur la création et le téléchargement de la clé, consultez la page Créer et gérer les clés de comptes de service.

  3. Le cas échéant, téléchargez la clé JSON sur le poste de travail que vous utilisez pour vous connecter à votre cluster Anthos GKE On-Prem.

  4. Si vous déployez une application à partir de Cloud Marketplace pour la première fois, suivez les étapes suivantes pour configurer votre espace de noms application-system avec un secret permettant d'accéder à Container Registry. Si vous avez déjà configuré l'espace de noms, ignorez cette étape.

    1. Créez un espace de noms application-system dans votre cluster.

    2. Créez le secret qui contient un imagePullSecret pour application-system, à l'aide de la commande suivante :

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace="application-system" \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat $JSON_KEY_FILENAME)"
      
    3. Appliquez ce imagePullSecret au ServiceAccount par défaut dans l'espace de noms application-system, à l'aide de la commande suivante :

      kubectl patch sa default -n application-system -p '"imagePullSecrets": [{"name": "gcr-json-key" }]'
      
  5. Pour chaque espace de noms sur lequel vous souhaitez déployer une application, vous devez créer un nouveau secret Kubernetes et annoter l'espace de noms avec le secret. Vous ne pouvez pas réutiliser un secret à partir d'un autre espace de noms.

    1. Créez un secret Kubernetes pour accéder à Container Registry à l'aide de la clé de compte de service Google Cloud :

      JSON_KEY_FILENAME=path_to/service_account_key.json
      IMAGEPULLSECRET_NAME=gcr-json-key
      kubectl create secret docker-registry $IMAGEPULLSECRET_NAME \
        --namespace=$NAMESPACE_NAME \
        --docker-server=gcr.io \
        --docker-username=_json_key \
        --docker-password="$(cat ~/$JSON_KEY_FILENAME)"
      

      $NAMESPACE_NAME est l'espace de noms que vous souhaitez utiliser pour l'application.

    2. Annotez l'espace de noms de l'application à l'aide de la commande suivante :

      kubectl annotate namespace $NAMESPACE_NAME marketplace.cloud.google.com/imagePullSecret=$IMAGEPULLSECRET_NAME
      

      Utilisez cet espace de noms lorsque vous déployez l'application depuis Cloud Marketplace, comme décrit dans la section Déployer une application Kubernetes.