Cette page explique comment déployer de nouveaux services et de nouvelles révisions dans la Knative serving.
Avant de commencer
Pour utiliser Google Cloud CLI, vous devez d'abord installer et configurer les outils de ligne de commande.
Se connecter à des clusters GKE
Pour pouvoir déployer des services dans Knative serving, vous devez vous identifier pour vous connecter à votre cluster GKE.
Pour plus d'informations sur la connexion à vos clusters GKE, y compris sur les options supplémentaires, consultez les pages suivantes :
Autorisations requises pour déployer
Vous devez disposer des autorisations nécessaires pour créer, mettre à jour et supprimer le groupe d'API serving.knative.dev
et le genre Service
. En outre, vous devez posséder UN des rôles IAM suivants :
Images que vous pouvez déployer
La taille applicable à l'image de conteneur que vous pouvez déployer est illimitée.
Vous pouvez utiliser des conteneurs de n'importe quel registre de conteneurs, tel que Docker Hub. Pour en savoir plus sur le déploiement d'images privées à partir de registres différents de Container Registry ou Artifact Registry, consultez la page Déployer des images de conteneurs privées à partir d'autres registres de conteneurs.
Déployer un nouveau service
Vous pouvez spécifier une image de conteneur avec un tag (par exemple, gcr.io/my-project/my-image:latest
) ou avec un condensé exact (par exemple, gcr.io/my-project/my-image@sha256:41f34ab970ee...
).
Le déploiement d'un service pour la première fois crée sa première révision. Notez que les révisions sont immuables. Si vous déployez à partir d'un tag d'image de conteneur, il sera transformé en condensé et la révision desservira toujours ce condensé.
Vous pouvez déployer un conteneur à l'aide de la console Google Cloud, de Google Cloud CLI ou d'un fichier de configuration YAML.
Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.
Configuration de l'emplacement par défaut de gcloud
Si vous avez déjà configuré un emplacement dans la configuration default
de Google Cloud CLI, vos commandes gcloud
utilisent ces valeurs par défaut, y compris :
compute/region
compute/zone
run/cluster
run/cluster_location
run/platform
run/region
Exécutez la commande
gcloud
config suivante pour afficher vos paramètres pour la configuration default
:
gcloud config configurations describe default
Console
Pour déployer une image de conteneur, procédez comme suit :
Accédez à Knative serving dans la console Google Cloud :
Cliquez sur Create service (Créer un service) pour afficher la page Créer un service.
Dans le formulaire :
Dans le menu déroulant, sélectionnez l'un des clusters GKE disponibles pour votre service.
Saisissez le nom de service souhaité. Les noms de service doivent être uniques par région et par projet ou par cluster. Vous ne pourrez pas les modifier par la suite.
Sous Connectivité :
- Sélectionnez Interne si vous souhaitez limiter l'accès aux autres services Knative serving ou aux services de votre cluster qui utilisent Istio.
- Sélectionnez Externe pour autoriser l'accès externe à votre service.
Sachez que vous pouvez modifier l'option de connectivité à tout moment, comme décrit à la page Modifier les paramètres de connectivité du service.
Cliquez sur Next (Suivant) pour passer à la deuxième page du formulaire de création de service.
Dans le formulaire :
Dans la zone de texte URL de l'image du conteneur, indiquez l'URL d'une image d'un registre compatible, par exemple :
us-docker.pkg.dev/cloudrun/container/hello:latest
Vous pouvez également cliquer sur Show Advanced Settings (Afficher les paramètres avancés) et sur les onglets suivants pour définir les éléments suivants :
Cliquez sur Créer pour déployer l'image sur Knative serving et attendez la fin du déploiement.
Vous venez de déployer un service sur un cluster compatible avec Knative serving.
Ligne de commande
Pour déployer une image de conteneur, procédez comme suit :
Exécutez la commande
gcloud run deploy
:gcloud run deploy SERVICE --image IMAGE_URL
Remplacez SERVICE par le nom du service sur lequel effectuer le déploiement. Si le service spécifié n'existe pas, un nouveau service est créé.
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
gcr.io/cloudrun/hello
.Options de déploiement supplémentaires :
Pour effectuer un déploiement dans un espace de noms autre que celui par défaut, vous devez spécifier cet espace de noms à l'aide du paramètre
--namespace
.Pour effectuer un déploiement sur un emplacement autre que la configuration par défaut, vous devez spécifier les éléments
name
etlocation
du cluster avec les paramètres--cluster
et--cluster-location
:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Vous pouvez définir les options de connectivité à l'aide de l'option
--connectivity
, comme décrit dans la section Modifier les paramètres de connectivité du service afin de spécifier un accès interne ou externe.Pour Knative serving sur VMware, vous devez inclure le paramètre
--kubeconfig
et spécifier votre fichier de configuration :gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, un message de réussite indiquant l'URL du service déployé s'affiche.
YAML
Vous pouvez stocker votre spécification de service dans un fichier YAML
, puis la déployer à l'aide de Google Cloud CLI.
Créez un fichier
service.yaml
avec le contenu suivant :apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
Remplacer
- SERVICE par le nom de votre service Knative serving
- IMAGE par l'URL de votre image de conteneur ;
Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.
Déployez le nouveau service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Déployer une nouvelle révision d'un service existant
Vous pouvez déployer une nouvelle révision à l'aide de Google Cloud Console, de la ligne de commande gcloud
ou d'un fichier de configuration YAML.
Notez que la modification des paramètres de configuration entraîne la création d'une révision, même si l'image du conteneur ne change pas. Chaque révision créée est immuable.
Cliquez sur l'onglet pour obtenir des instructions concernant l'utilisation de l'outil de votre choix.
Console
Pour déployer une nouvelle révision d'un service existant, procédez comme suit :
Accédez à Knative serving dans la console Google Cloud :
Recherchez le service que vous souhaitez mettre à jour dans la liste des services, puis cliquez dessus pour en afficher les détails.
Cliquez sur MODIFIER ET DÉPLOYER LA NOUVELLE RÉVISION. Le formulaire de déploiement de la révision s'affiche :
Si nécessaire, fournissez l'URL de la nouvelle image de conteneur que vous souhaitez déployer.
Vous pouvez également définir les éléments suivants :
Pour envoyer l'ensemble du trafic vers la nouvelle révision, cochez la case intitulée Diffuser immédiatement la révision. Pour déployer progressivement une nouvelle révision, décochez cette case : le trafic ne sera pas envoyé à la nouvelle révision. Suivez les instructions pour les déploiements progressifs à l'issue du déploiement.
Cliquez sur DÉPLOYER et attendez la fin du déploiement.
Ligne de commande
Pour déployer une image de conteneur, procédez comme suit :
Exécutez la commande
gcloud run services update
:gcloud run services update SERVICE --image IMAGE_URL
- Un suffixe de révision est automatiquement attribué à chaque révision. Si vous souhaitez spécifier votre propre suffixe de révision, ajoutez le paramètre --revision-suffix.
Remplacez SERVICE par le nom du service sur lequel effectuer le déploiement. Si le service spécifié n'existe pas, un nouveau service est créé.
Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple
gcr.io/cloudrun/hello
.Options de déploiement supplémentaires :
Pour effectuer un déploiement dans un espace de noms autre que celui par défaut, vous devez spécifier cet espace de noms à l'aide du paramètre
--namespace
.Pour effectuer un déploiement sur un emplacement autre que la configuration par défaut, vous devez spécifier les éléments
name
etlocation
du cluster avec les paramètres--cluster
et--cluster-location
:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Vous pouvez définir les options de connectivité à l'aide de l'option
--connectivity
, comme décrit dans la section Modifier les paramètres de connectivité du service afin de spécifier un accès interne ou externe.Pour Knative serving sur VMware, vous devez inclure le paramètre
--kubeconfig
et spécifier votre fichier de configuration :gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Patientez jusqu'à la fin du déploiement. Une fois l'opération achevée, un message de réussite indiquant l'URL du service déployé s'affiche.
YAML
Vous pouvez télécharger la configuration d'un service existant dans un fichier YAML avec la commande gcloud run services describe
à l'aide de l'option --format=export
.
Vous pouvez ensuite modifier ce fichier YAML et déployer ces modifications à l'aide de la commande gcloud run services replace
.
Veillez à ne modifier que les attributs spécifiés.
Téléchargez la configuration de votre service dans un fichier nommé
service.yaml
sur l'espace de travail local :gcloud run services describe SERVICE --format export > service.yaml
Remplacez SERVICE par le nom de votre service Knative serving.
Dans votre fichier local, mettez à jour les paramètres de révision dans n'importe quel attribut enfant de
spec.template
.Déployez la nouvelle révision :
gcloud run services replace service.yaml
Déployer des images à partir d'autres projets Google Cloud
Vous pouvez déployer des images de conteneurs à partir d'autres projets Google Cloud si vous définissez les autorisations IAM appropriées :
Dans la console Google Cloud, ouvrez le projet de votre service Knative serving.
Obtenez les informations de votre compte de service :
Pour les clusters sur Google Cloud, copiez l'adresse e-mail du compte de service Compute Engine par défaut. Elle porte le suffixe @developer.gserviceaccount.com.
Pour les autres clusters, créez un compte de service Google Cloud et téléchargez les identifiants. Ajoutez ces identifiants en tant que
imagePullSecrets
par défaut du compte de service Kubernetes.
Ouvrez le projet qui contient le registre de conteneurs que vous souhaitez utiliser.
Cliquez sur Ajouter pour ajouter une entité principale.
Dans la zone de texte Nouvelles entités principales, collez l'adresse e-mail du compte de service que vous avez copié précédemment.
Dans la liste déroulante Sélectionner un rôle, sélectionnez le rôle à lire dans le registre :
- Artifact Registry, y compris les dépôts gcr.io dans Artifact Registry : Artifact Registry -> Lecteur Artifact Registry
- Container Registry : Stockage -> Lecteur des objets de l'espace de stockage
Déployez l'image de conteneur sur le projet contenant votre service Knative serving.
Pour renforcer la sécurité, vous pouvez limiter l'accès par autorisation :
- Artifact Registry : accordez le rôle au dépôt qui stocke vos images de conteneur.
- Container Registry : accordez le rôle au bucket Cloud Storage qui stocke vos images de conteneur.
Déployer des images de conteneurs privées à partir d'autres registres de conteneurs
Cette section décrit la configuration des autorisations appropriées pour déployer des images de conteneur depuis un registre privé arbitraire vers Knative serving. Un registre de conteneurs privé nécessite des identifiants pour accéder à l'image de conteneur. Notez que vous n'avez pas besoin de suivre ces étapes pour déployer des images de conteneurs privées à partir de Container Registry (obsolète) ou Artifact Registry dans le même projet que votre cluster.
Pour déployer une image de conteneur privée, vous devez créer un secret Kubernetes de type imagePullSecret
et l'associer à un compte de service :
Créez un secret
imagePullSecret
appelécontainer-registry
:kubectl create secret docker-registry container-registry \ --docker-server=DOCKER_REGISTRY_SERVER \ --docker-email=REGISTRY_EMAIL \ --docker-username=REGISTRY_USER \ --docker-password=REGISTRY_PASSWORD
- Remplacez DOCKER_REGISTRY_SERVER par le nom de domaine complet de votre registre privé (par exemple, https://gcr.io/ pour Container Registry ou https://hub.docker.com pour DockerHub).
- Remplacez REGISTRY_EMAIL par votre adresse e-mail.
Remplacez REGISTRY_USER par votre nom d'utilisateur du registre de conteneurs.
Si vous utilisez Container Registry ou Artifact Registry et que vous souhaitez stocker et extraire des identifiants de longue durée au lieu de transmettre des jetons d'accès de courte durée, consultez la section Méthodes d'authentification : fichier de clé JSON.
Remplacez REGISTRY_PASSWORD par votre mot de passe du registre de conteneurs.
Ouvrez votre compte de service par défaut :
kubectl edit serviceaccount default --namespace default
Chaque espace de noms de votre cluster Kubernetes possède un compte de service par défaut appelé
default
. Ce compte de service par défaut est utilisé, sauf indication contraire, pour extraire votre image de conteneur lorsque vous déployez votre service Knative serving.Ajoutez le secret nouvellement créé
imagePullSecret
à votre compte de service par défaut :imagePullSecrets: - name: container-registry
Votre compte de service doit maintenant se présenter comme suit :
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret we just created: imagePullSecrets: - name: container-registry
Désormais, tout pod créé dans l'espace de noms default
actuel sera associé au secret imagePullSecret
.
Déployer avec l'injection side-car automatique activée
Pour déployer votre service avec l'injection side-car Istio activée, consultez la section concernant l'injection side-car automatique activée dans la documentation Cloud Service Mesh.
Déployer des services sur un réseau interne
Pour déployer des services sur un réseau interne, vous devez configurer un réseau interne privé.
Étape suivante
Après avoir déployé un nouveau service, vous pouvez effectuer les opérations suivantes :
- Déploiements progressifs, révisions de rollback, migration du trafic
- Afficher les journaux du service
- Surveiller les performances du service
- Configurer vos services. Par exemple, définir des limites de mémoire et des variables d'environnement ou pour modifier les paramètres de simultanéité.
- Gérer ce qui suit :
Vous pouvez automatiser la création et le déploiement de vos services Knative serving avec les déclencheurs Cloud Build :