Découvrez comment créer un ConfigMap, puis configurer vos services et révisions Cloud Run for Anthos sur Google Cloud de manière à utiliser ce ConfigMap.
Un cas d'utilisation courant pour un service consiste à séparer le code d'application de la configuration à l'aide de ConfigMaps. Un ConfigMap est semblable à un secret, à la différence près qu'un secret permet de stocker des informations sensibles, tandis qu'un ConfigMap sert à stocker des données non sensibles telles que des chaînes de connexion, des identifiants publics, des noms d'hôte et des URL. Pour en savoir plus sur l'utilisation des ConfigMaps, consultez la documentation de Google Kubernetes Engine.
Lorsque vous permettez aux conteneurs d'accéder aux ConfigMaps, vous pouvez choisir l'une des options suivantes :
- Installez le ConfigMap en tant que volume, avec des entrées ConfigMap disponibles sous forme de fichiers dans le volume installé. Cette méthode est recommandée, car elle garantit que vous obtenez la dernière version du ConfigMap lorsque vous le lisez.
- Transmettez le ConfigMap à l'aide de variables d'environnement.
Créer un ConfigMap
Il existe plusieurs façons de créer un ConfigMap, comme décrit dans la documentation de GKE sur les ConfigMaps. Pour plus de commodité, les étapes suivantes montrent comment créer facilement un ConfigMap.
Lorsque vous créez un ConfigMap, veillez à le créer dans le même espace de noms que le cluster qui exécute votre service Cloud Run pour Anthos. Ces instructions utilisent l'espace de noms default
.
Vous pouvez créer un ConfigMap à partir de la ligne de commande :
kubectl create configmap name data
où :
- name est le nom de votre objet ConfigMap.
data peut être :
- un chemin d'accès à un répertoire contenant un ou plusieurs fichiers de configuration, désigné à l'aide de l'option
--from-file
; - des paires clé/valeur, chacune spécifiée à l'aide d'options
--from-literal
.
- un chemin d'accès à un répertoire contenant un ou plusieurs fichiers de configuration, désigné à l'aide de l'option
Exemple :
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
Le ConfigMap est créé et importé à un emplacement où il est disponible pour les clusters dans l'espace de noms default
.
Rendre un ConfigMap disponible auprès d'un service
Après avoir créé un ConfigMap, vous pouvez le mettre à la disposition de votre service Cloud Run for Anthos en tant que volume ou variables d'environnement à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud
lorsque vous déployez un nouveau service ou mettez à jour un service existant et déployez une révision :
Console
Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.
Sous Paramètres avancés, cliquez sur Variables.
Sous Reference a ConfigMap (Référencer un ConfigMap), sélectionnez le ConfigMap souhaité dans le menu déroulant.
- Dans le menu déroulant Reference method (Méthode de référence), sélectionnez la manière dont vous souhaitez utiliser votre ConfigMap, installé en tant que volume ou exposé en tant que variables d'environnement.
- Si vous utilisez l'installation en tant que volume, spécifiez le chemin d'accès, puis cliquez sur Terminé.
- Si vous décidez de l'exposer en tant que variables d'environnement, procédez comme suit :
- Indiquez le nom de la variable et sélectionnez la valeur ConfigMap correspondante dans le menu déroulant Clé.
- Cliquez sur Add (Ajouter) pour ajouter une autre valeur ConfigMap.
- Indiquez le nom de la variable et sélectionnez la valeur ConfigMap correspondante dans le menu déroulant Clé.
- Cliquez sur OK.
Cliquez sur Créer ou Déployer.
Ligne de commande
Vous pouvez utiliser l'une des commandes gcloud kuberun
suivantes pour définir des ConfigMaps pour les nouveaux services ou pour mettre à jour des services existants :
Pour les services existants, mettez à jour un ConfigMap en exécutant la commande
gcloud kuberun core services update
avec l'un des paramètres suivants :Exemple :
gcloud kuberun core services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2
Remplacez :
SERVICE
par le nom de votre service.KEY1=VALUE1,KEY2=VALUE2
avec une liste de paires nom/valeur séparées par une virgule pour chaque ConfigMap. Pour chaqueKEY
, vous pouvez spécifier un chemin d'accès au montage ou fournir une variable d'environnement. Spécifiez un chemin d'accès au montage en commençant par une barre oblique/
. Toutes les autres clés correspondent à des variables d'environnement. Pour chaqueVALUE
, spécifiez le nom du ConfigMap. Découvrez comment spécifier plusieurs paramètres.
Options des paramètres de commande
Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres de lisibilité. Exemple :[...] --update-config-maps "KEY=VALUE1" \ --update-config-maps "KEY=VALUE2" \ --update-config-maps "KEY=VALUE3"
Pour les nouveaux services, définissez un secret en exécutant la commande
gcloud kuberun core services create
avec le paramètre--set-config-maps
:gcloud kuberun core services create SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2
Remplacez :
- IMAGE_URL par une référence à l'image de conteneur, par exemple
gcr.io/myproject/my-image:latest
; SERVICE
par le nom de votre service.KEY1=VALUE1,KEY2=VALUE2
avec une liste de paires nom/valeur séparées par une virgule pour chaque ConfigMap. Pour chaqueKEY
, vous pouvez spécifier un chemin d'accès au montage ou fournir une variable d'environnement. Spécifiez un chemin d'accès au montage en commençant par une barre oblique/
. Toutes les autres clés correspondent à des variables d'environnement. Pour chaqueVALUE
, spécifiez le nom du ConfigMap. Découvrez comment spécifier plusieurs paramètres.
Options des paramètres de commande
Pour spécifier plusieurs ensembles de paires clé/valeur, vous pouvez spécifier plusieurs paramètres de lisibilité. Exemple :[...] --update-config-maps "KEY=VALUE1" \ --update-config-maps "KEY=VALUE2" \ --update-config-maps "KEY=VALUE3"
- IMAGE_URL par une référence à l'image de conteneur, par exemple