Déployer des applications Kubernetes sur des clusters non GKE

Si vous souhaitez déployer une application Kubernetes dans une configuration de cluster non-GKE, telle qu'un cluster Anthos exécutant GKE sur site ou un cluster exécutant Istio, vous devez effectuer les tâches décrites dans 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 GKE On-Prem

Vous ne pouvez déployer des clusters GKE On-Prem que pour les applications Cloud Marketplace compatibles avec cette configuration. Pour vérifier si une application est compatible avec GKE On-Prem, ouvrez la fiche Cloud Marketplace de l'application et recherchez la phrase suivante dans la présentation : "The application supports GKE On Prem deployment." (Cette application est compatible avec un déploiement GKE On-Prem).

Après avoir vérifié que l'application est compatible avec GKE On-Prem, effectuez les tâches suivantes avant de déployer l'application:

Une fois ces tâches terminées, ouvrez la fiche 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 GKE On-Prem d'accéder aux images d'application de Container Registry, vous devez créer une clé de compte de service Google Cloud et annoter l'espace de noms de l'application avec cette 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 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'accorder 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 GKE On-Prem.

  4. Si vous déployez une application à partir de Cloud Marketplace pour la première fois, suivez la procédure ci-dessous afin de configurer votre espace de noms application-system avec un secret pour 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.