Configurer Bridge to Kubernetes
Note
Bridge to Kubernetes sera mis hors service le 30 avril 2025. Pour plus d’informations sur la mise hors service et les alternatives open source, consultez le problème GitHub.
Vous pouvez configurer le processus Bridge local vers Kubernetes à l’aide de deux méthodes. Vous pouvez annoter des services sur votre cluster et fournir une configuration locale.
Configuration de Kubernetes
Le fichier de configuration Kubernetes (kubeconfig) est stocké par défaut à ~/.kube/config
, mais vous pouvez le définir à l’aide de la variable d’environnement KUBECONFIG.
Si vous utilisez Visual Studio, vous pouvez modifier le profil de lancement Bridge to Kubernetes dans l’IDE à l’aide de l’interface utilisateur des profils de lancement de débogage dans les propriétés de débogage. Consultez Modifier le profil de lancement.
À partir de là, vous pouvez ouvrir l’écran suivant, qui permet de modifier certaines des propriétés de configuration les plus courantes.
Empêcher Bridge to Kubernetes de transférer des ports spécifiques
Configurez Bridge to Kubernetes pour ignorer le mappage de ports spécifiques sur un service Kubernetes à votre machine en ajoutant l’annotation bridgetokubernetes/ignore-ports
sur le service.
apiVersion: v1
kind: Service
metadata:
annotations:
bridgetokubernetes/ignore-ports:445,23
Configuration locale à l’aide de KubernetesLocalProcessConfig.yaml
Le fichier KubernetesLocalProcessConfig.yaml
vous permet de répliquer des variables d’environnement et des fichiers montés disponibles pour vos pods dans votre cluster. Vous pouvez spécifier les actions suivantes dans un fichier KubernetesLocalProcessConfig.yaml
:
- Téléchargez un volume et définissez le chemin d’accès à ce volume en tant que variable d’environnement.
- Rendre un service en cours d'exécution sur votre cluster disponible pour les processus fonctionnant sur votre ordinateur de développement.
- Créez une variable d’environnement avec une valeur constante.
Un fichier KubernetesLocalProcessConfig.yaml
par défaut n’est pas créé automatiquement. Vous devez donc créer manuellement le fichier à la racine de votre projet.
Télécharger un volume
Sous l'environnement , spécifiez un nom et une valeur pour chaque volume que vous désirez télécharger. Le nom est la variable d’environnement qui sera utilisée sur votre ordinateur de développement. La variable value est le nom du volume et un chemin d’accès sur votre ordinateur de développement. La valeur de value prend la forme $(volumeMounts:VOLUME_NAME)/PATH/TO/FILES.
Par exemple:
version: 0.1
env:
- name: ALLOW_LIST_PATH
value: $(volumeMounts:allow-list)/allow-list
L’exemple ci-dessus télécharge le volume allow-list à partir du conteneur et définit cet emplacement, ainsi que le chemin d’accès à la variable d’environnement ALLOW_LIST_PATH. Le comportement par défaut consiste à télécharger les fichiers dans le chemin que vous spécifiez sous un répertoire temporaire sur votre ordinateur de développement. Dans l’exemple ci-dessus, ALLOW_LIST_PATH est configuré à /TEMPORARY_DIR/allow-list
.
Note
Le téléchargement d’un volume télécharge l’intégralité du contenu de ce volume, quel que soit le chemin que vous définissez. Le chemin d’accès est utilisé uniquement pour définir la variable d’environnement à utiliser sur l’ordinateur de développement. L’ajout de /allow-list ou /path/to/files à la fin du jeton n’affecte pas réellement l’emplacement où le volume est conservé. La variable d’environnement n’est qu’une commodité dans le cas où votre application a besoin d’une référence à un fichier spécifique à l’intérieur de ce volume.
Vous avez également la possibilité de spécifier un répertoire pour monter le volume sur votre ordinateur de développement au lieu d’utiliser un répertoire temporaire. Sous volumeMounts, spécifiez un nom et localPath pour chaque emplacement spécifique. La variable name est le nom du volume que vous souhaitez faire correspondre, et localPath est le chemin d’accès absolu sur votre ordinateur de développement. Par exemple:
version: 0.1
volumeMounts:
- name: default-token-*
localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
- name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
value: $(volumeMounts:default-token-*)
L’exemple ci-dessus utilise l’entrée dans env pour télécharger un volume correspondant à default-token-*, tel que default-token-1111 ou default-token-1234-5678-90abcdef. Dans les cas où plusieurs volumes correspondent, le premier volume correspondant est utilisé. Tous les fichiers sont téléchargés dans /var/run/secrets/kubernetes.io/serviceaccount
sur votre ordinateur de développement à l’aide de l’entrée dans volumeMounts. La variable d’environnement KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE est définie sur /var/run/secrets/kubernetes.io/serviceaccount
.
Rendre un service disponible
Sous env, spécifiez un nom et valeur pour chaque service que vous souhaitez rendre disponible sur votre ordinateur de développement. Le nom est la variable d’environnement qui sera utilisée sur votre ordinateur de développement. La variable value est le nom du service à partir de votre cluster et un chemin d’accès. La valeur de value prend la forme $(services:SERVICE_NAME)/PATH.
Par exemple:
version: 0.1
env:
- name: MYAPP1_SERVICE_HOST
value: $(services:myapp1)/api/v1/
L’exemple ci-dessus rend le service myapp1 disponible pour votre ordinateur de développement et la variable d’environnement MYAPP1_SERVICE_HOST est définie sur l’adresse IP locale du service myapp1 avec le chemin d’accès /api/v1
(autrement dit, 127.1.1.4/api/v1
). Le service myapp1 est accessible à l’aide de la variable d’environnement, myapp1 ou myapp1.svc.cluster.local.
Note
La mise à disposition d’un service sur votre ordinateur de développement rend le service entier disponible, quel que soit le chemin que vous définissez. Le chemin d’accès est utilisé uniquement pour définir la variable d’environnement à utiliser sur l’ordinateur de développement. Vous pouvez également rendre un service à partir d’un espace de noms Kubernetes spécifique disponible à l’aide de $(services:SERVICE_NAME.NAMESPACE_NAME). Par exemple:
version: 0.1
env:
- name: MYAPP2_SERVICE_HOST
value: $(services:myapp2.mynamespace)
L’exemple ci-dessus rend l'application myapp2 de l’espace de noms mynamespace accessible sur votre ordinateur de développement et définit la variable d’environnement MYAPP2_SERVICE_HOST à l’adresse IP locale de l'application myapp2 du même espace de noms mynamespace.
Créer une variable d’environnement avec une valeur constante
Sous env, spécifiez un nom et valeur pour chaque variable d’environnement que vous souhaitez créer sur votre ordinateur de développement. Le nom est la variable d’environnement qui sera utilisée sur votre ordinateur de développement et la valeur est la valeur. Par exemple:
version: 0.1
env:
- name: DEBUG_MODE
value: "true"
L’exemple ci-dessus crée une variable d’environnement nommée DEBUG_MODE avec la valeur true.
Ajouter une dépendance de service
Vous pouvez spécifier une dépendance de service, telle qu’une base de données ou un cache, à l’aide d’un champ de dépendances génériques, comme la façon dont les services sont déclarés. Spécifiez une dépendance ici lorsque le service que vous déboguez doit se connecter aux ressources qui ne s’exécutent pas sur votre cluster. Déclarez une dépendance comme dans l’exemple suivant :
version: 0.1
volumeMounts:
env:
- name: DB_HOST
value: $(externalendpoints:server-bridgetest123.database.windows.net:1433)
Indiquez le nom DNS de l’hôte (server-bridgetest13.database.windows.net
dans l’exemple) et le port (1433 dans l’exemple) de votre dépendance.
Lorsque vous spécifiez des dépendances telles que des bases de données, les modèles d’authentification de redirection ne fonctionneront pas. Par exemple, pour Azure SQL Database, vous devez définir la stratégie de connexion sur « Proxy » (plutôt que « Redirection » ou « Default »).
Exemple KubernetesLocalProcessConfig.yaml
Voici un exemple de fichier KubernetesLocalProcessConfig.yaml
complet :
version: 0.1
volumeMounts:
- name: default-token-*
localPath: /var/run/secrets/kubernetes.io/serviceaccount
env:
- name: KUBERNETES_IN_CLUSTER_CONFIG_OVERRIDE
value: $(volumeMounts:default-token-*)
- name: ALLOW_LIST_PATH
value: $(volumeMounts:allow-list)/allow-list
- name: MYAPP1_SERVICE_HOST
value: $(services:myapp1)/api/v1/
- name: MYAPP2_SERVICE_HOST
value: $(services:myapp2.mynamespace)
- name: DEBUG_MODE
value: "true"
Étapes suivantes
Pour commencer à utiliser Bridge to Kubernetes pour vous connecter à votre ordinateur de développement local à votre cluster, consultez Utiliser Bridge to Kubernetes avec Visual Studio Code et Utiliser Bridge to Kubernetes avec Visual Studio.