Cette page vous explique comment configurer et utiliser Ingress pour les équilibreurs de charge d'application internes dans Google Kubernetes Engine (GKE). Ingress fournit une compatibilité intégrée avec l'équilibrage de charge interne via le contrôleur GKE Ingress.
Pour en savoir plus sur les fonctionnalités compatibles avec Ingress pour les équilibreurs de charge d'application internes, consultez la section Fonctionnalités Ingress. Pour en savoir plus sur le fonctionnement d'Ingress pour les équilibreurs de charge d'application internes, consultez la section Ingress pour les équilibreurs de charge d'application internes.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
Conditions requises
Ingress pour les équilibreurs de charge d'application internes présente les exigences suivantes :
- Votre cluster doit utiliser une version de GKE ultérieure à la version 1.16.5-gke.10.
- Votre cluster doit être VPC natif.
- Le module complémentaire
HttpLoadBalancing
doit être activé sur votre cluster. Il est activé par défaut. Ne le désactivez pas. - Vous devez utiliser des groupes de points de terminaison du réseau (NEG) comme backends pour votre service.
Déployer Ingress pour les équilibreurs de charge d'application internes
Les exercices suivants vous montrent comment déployer Ingress pour les équilibreurs de charge d'application internes :
- Préparez votre environnement.
- Créez un cluster.
- Déployer une application
- Déployer un service
- Déployez Ingress.
- Validez le déploiement.
- Supprimer des ressources Ingress.
Préparer votre environnement
Avant de pouvoir déployer des ressources d'équilibreur de charge via l'API Ingress de Kubernetes, vous devez préparer votre environnement réseau afin que les proxys de l'équilibreur de charge puissent être déployés dans une région donnée.
Créez un sous-réseau proxy réservé en suivant les instructions de la section Configurer le sous-réseau proxy réservé.
Par exemple, la commande suivante crée un sous-réseau proxy réservé dans la région us-west1
à l'aide du réseau lb-network
:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-west1 \
--network=lb-network \
--range=10.129.0.0/23
Créer une règle de pare-feu
Le contrôleur Ingress ne crée pas de règle de pare-feu pour autoriser les connexions à partir des proxys de l'équilibreur de charge dans le sous-réseau proxy. Vous devez créer cette règle de pare-feu manuellement. Cependant, le contrôleur Ingress crée des règles de pare-feu pour autoriser les vérifications de l'état d'Ingress via Google Cloud.
Créez une règle de pare-feu pour autoriser les connexions des proxys de l'équilibreur de charge dans le sous-réseau proxy réservé au port d'écoute du pod :
gcloud compute firewall-rules create allow-proxy-connection \
--allow=TCP:CONTAINER_PORT \
--source-ranges=10.129.0.0/23 \
--network=lb-network
Remplacez CONTAINER_PORT
par la valeur du port que le pod écoute, par exemple 9376
.
Créer un cluster
Dans cette section, vous allez créer un cluster natif VPC que vous pourrez utiliser avec Ingress pour les équilibreurs de charge d'application internes. Vous pouvez créer ce cluster à l'aide de Google Cloud CLI ou de la console Google Cloud.
gcloud
Créez un cluster en définissant les champs suivants :
gcloud container clusters create-auto CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--network=NETWORK
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster.COMPUTE_LOCATION
: emplacement Compute Engine du cluster. Vous devez utiliser le même emplacement que le sous-réseau proxy que vous avez créé dans la section précédente.NETWORK
: nom du réseau dans lequel vous souhaitez créer le cluster. Ce réseau doit se trouver dans le même réseau VPC que le sous-réseau proxy que vous avez créé dans la section précédente.
Console
Accédez à la page Google Kubernetes Engine dans Google Cloud Console.
Cliquez sur add_box Créer.
Dans la section Autopilot, cliquez sur Configurer.
Dans la section Paramètres de base du cluster, procédez comme suit :
- Saisissez le nom de votre cluster.
- Pour le type d'emplacement, sélectionnez une région Compute Engine pour votre cluster. Vous devez utiliser la même région que le sous-réseau proxy que vous avez créé dans la section précédente.
Dans le volet de navigation, cliquez sur Mise en réseau.
Dans la liste déroulante Réseau, sélectionnez le réseau dans lequel vous souhaitez créer le cluster. Ce réseau doit se trouver dans le même réseau VPC que le sous-réseau proxy.
Dans la liste Sous-réseau de nœud, sélectionnez le sous-réseau proxy que vous avez créé.
Cliquez sur Créer.
Déployer une application Web
Dans cette section, vous allez créer un déploiement.
Pour créer un déploiement :
Enregistrez l'exemple de fichier manifeste suivant sous le nom
web-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: labels: app: hostname name: hostname-server spec: selector: matchLabels: app: hostname minReadySeconds: 60 replicas: 3 template: metadata: labels: app: hostname spec: containers: - image: registry.k8s.io/serve_hostname:v1.4 name: hostname-server ports: - containerPort: 9376 protocol: TCP terminationGracePeriodSeconds: 90
Ce fichier manifeste décrit un déploiement qui écoute sur un serveur HTTPS sur le port 9376. Ce déploiement gère les pods de votre application. Chaque pod exécute un conteneur d'applications avec un serveur HTTPS qui renvoie le nom d'hôte du serveur d'applications en tant que réponse. Le nom d'hôte par défaut d'un pod correspond au nom de ce pod. Le conteneur gère également le délai de grâce.
Appliquez le fichier manifeste au cluster :
kubectl apply -f web-deployment.yaml
Déployer un service en tant que groupe de points de terminaison du réseau (NEG)
Dans cette section, vous créez une ressource Service. Le service sélectionne les conteneurs backend en fonction de leur libellé, de sorte que le contrôleur Ingress puisse les programmer en tant que points de terminaison backend. Ingress pour les équilibreurs de charge d'application internes nécessite l'utilisation de NEG en tant que backends. Cette fonctionnalité n'accepte pas les groupes d'instances en tant que backends. Étant donné que les backends NEG sont requis, l'annotation NEG suivante est obligatoire lorsque vous déployez des services exposés via un objet Ingress :
annotations:
cloud.google.com/neg: '{"ingress": true}'
Votre service est automatiquement annoté avec cloud.google.com/neg: '{"ingress": true}'
lorsque toutes les conditions suivantes sont remplies :
- Vous utilisez des clusters de VPC natif.
- Vous n'utilisez pas de VPC partagé.
- Vous n'utilisez pas de règle de réseau GKE.
L'annotation est automatiquement ajoutée à l'aide d'une MutatingWebhookConfiguration
nommée neg-annotation.config.common-webhooks.networking.gke.io
. Vous pouvez vérifier si la MutatingWebhookConfiguration
est présente à l'aide de la commande suivante :
kubectl get mutatingwebhookconfigurations
L'utilisation des NEG permet au contrôleur Ingress d'effectuer un équilibrage de charge natif en conteneurs. Le trafic est équilibré directement entre le proxy Ingress et l'adresse IP du pod, plutôt que de traverser l'adresse IP du nœud ou le réseau kube-proxy. En outre, les portes de disponibilité des pods sont mises en œuvre pour déterminer l'état des pods du point de vue de l'équilibreur de charge, et pas seulement les vérifications d'aptitude et d'activité de Kubernetes. Les portes de disponibilité des pods garantissent que le trafic n'est pas interrompu pendant les événements de cycle de vie, tels que le démarrage d'un pod, la perte d'un pod ou la perte de nœuds.
Si vous n'incluez pas d'annotation NEG, vous recevez un avertissement concernant l'objet Ingress qui vous empêche de configurer l'équilibreur de charge d'application interne. Un événement Kubernetes est également généré sur l'entrée si l'annotation NEG n'est pas incluse. Le message suivant est un exemple du message d'événement :
Message
-------
error while evaluating the ingress spec: could not find port "8080" in service "default/no-neg-svc"
Un NEG n'est créé que lorsqu'un objet Ingress référence le service. Le NEG n'apparaît dans Compute Engine que lorsque l'objet Ingress et son service référencé existent tous deux. Les NEG sont des ressources zonales et, pour les clusters multizones, un NEG est créé par service et par zone.
Pour créer un service :
Enregistrez l'exemple de fichier manifeste suivant sous le nom
web-service.yaml
:apiVersion: v1 kind: Service metadata: name: hostname namespace: default annotations: cloud.google.com/neg: '{"ingress": true}' spec: ports: - name: host1 port: 80 protocol: TCP targetPort: 9376 selector: app: hostname type: ClusterIP
Appliquez le fichier manifeste au cluster :
kubectl apply -f web-service.yaml
Déployer Ingress
Dans cette section, vous allez créer une ressource Ingress qui déclenche le déploiement de l'équilibreur de charge Compute Engine via le contrôleur d'entrée. Ingress pour les équilibreurs de charge d'application internes nécessite l'annotation suivante :
annotations:
kubernetes.io/ingress.class: "gce-internal"
Vous ne pouvez pas utiliser le champ ingressClassName
pour spécifier un objet GKE Ingress. Vous devez utiliser l'annotation kubernetes.io/ingress.class
. Pour en savoir plus, consultez la page Comportement du contrôleur GKE Ingress.
Pour créer une entrée, procédez comme suit :
Enregistrez l'exemple de fichier manifeste suivant sous le nom
internal-ingress.yaml
:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ilb-demo-ingress namespace: default annotations: kubernetes.io/ingress.class: "gce-internal" spec: defaultBackend: service: name: hostname port: number: 80
Appliquez le fichier manifeste au cluster :
kubectl apply -f internal-ingress.yaml
Valider un déploiement Ingress réussi
Dans cette section, vous validez si votre déploiement a réussi.
Le provisionnement complet de la ressource Ingress peut prendre plusieurs minutes. Pendant cette période, le contrôleur d'entrée crée des éléments tels que des règles de transfert, des services de backend, des mappages d'URL et des NEG.
Pour récupérer l'état de la ressource Ingress que vous avez créée dans la section précédente, exécutez la commande suivante :
kubectl get ingress ilb-demo-ingress
Le résultat ressemble à ce qui suit :
NAME HOSTS ADDRESS PORTS AGE
ilb-demo-ingress * 10.128.0.58 80 59s
Lorsque le champ ADDRESS
est renseigné, l'entrée est prête. L'utilisation d'une adresse RFC 1918 dans ce champ indique la présence d'une adresse IP interne dans le VPC.
Étant donné que l'équilibreur de charge d'application interne est un équilibreur de charge régional, l'adresse IP virtuelle (VIP) n'est accessible qu'à partir d'un client situé dans la même région et dans le même VPC. Après avoir récupéré l'adresse IP virtuelle de l'équilibreur de charge, vous pouvez utiliser des outils (par exemple, curl
) pour émettre des appels HTTP GET
sur l'adresse IP virtuelle depuis le VPC.
Pour émettre un appel HTTP GET
, procédez comme suit :
Pour accéder à l'adresse IP virtuelle d'Ingress depuis le VPC, déployez une VM dans la même région et dans le même réseau que le cluster.
Par exemple, si vous avez suivi les étapes précédentes pour créer votre déploiement, votre service et votre entrée, et créé votre cluster sur le réseau par défaut et dans la zone
us-central1-a
, vous pouvez Utilisez la commande suivante :gcloud compute instances create l7-ilb-client-us-central1-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=default \ --subnet=default \ --zone=us-central1-a \ --tags=allow-ssh
Pour en savoir plus sur la création d'instances, consultez la page Créer et démarrer une instance de VM.
Pour accéder à la VIP interne depuis la VM, utilisez
curl
:Connectez-vous en SSH à la VM que vous avez créée à l'étape précédente :
gcloud compute ssh l7-ilb-client-us-central1-a \ --zone=us-central1-a
Utilisez
curl
pour accéder à l'adresse IP virtuelle de l'application interne :curl 10.128.0.58 hostname-server-6696cf5fc8-z4788
La réussite de la réponse HTTP et du nom d'hôte de l'un des conteneurs backend indique que l'ensemble du chemin d'équilibrage de charge fonctionne correctement.
Supprimer des ressources Ingress
La suppression des ressources Ingress et Service entraîne également la suppression des ressources de l'équilibreur de charge Compute Engine qui leur sont associées. Pour éviter toute fuite de ressources, assurez-vous que les ressources Ingress sont détruites lorsque vous n'en avez plus besoin. Vous devez également supprimer les ressources Ingress et Service avant de supprimer des clusters, sinon les ressources d'équilibrage de charge de Compute Engine sont orphelines.
Pour supprimer un objet Ingress, procédez comme suit :
Supprimez la ressource Ingress. Par exemple, pour supprimer la ressource Ingress que vous avez créée sur cette page, exécutez la commande suivante :
kubectl delete ingress ilb-demo-ingress
La suppression d'une ressource Ingress entraîne également la suppression des règles de transfert, des services de backend et des mappages d'URL qui lui sont associés.
Supprimez le service : Par exemple, pour supprimer le service que vous avez créé sur cette page, exécutez la commande suivante :
kubectl delete service hostname
La suppression d'une ressource Service entraîne également la suppression des NEG qui lui sont associés.
Pour déployer une application sur GKE et l'exposer avec une adresse IP privée à équilibrage de charge, consultez la page Objet Ingress interne de base {:.external}.
Adressage IP statique
Les ressources Ingress internes sont compatibles avec l'adressage IP statique et éphémère. Si aucune adresse IP n'est spécifiée, une adresse IP disponible est automatiquement attribuée à partir du sous-réseau de nœud GKE. Cependant, la ressource Ingress ne provisionne pas les adresses IP du sous-réseau proxy réservé, car ce sous-réseau est utilisé uniquement pour la consommation du proxy interne. Ces adresses IP éphémères ne sont attribuées à l'entrée que pour le cycle de vie de la ressource Ingress interne. Si vous supprimez votre entrée pour en créer une autre à partir du même fichier manifeste, il n'est pas garanti que vous obteniez la même adresse IP externe.
Si vous souhaitez qu'une adresse IP permanente soit indépendante du cycle de vie de la ressource Entrée interne, vous devez réserver une adresse IP interne statique régionale. Vous pouvez ensuite spécifier une adresse IP statique à l'aide de l'annotation kubernetes.io/ingress.regional-static-ip-name
de votre ressource d'entrée.
L'exemple suivant montre comment ajouter cette annotation :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.regional-static-ip-name: STATIC_IP_NAME
kubernetes.io/ingress.class: "gce-internal"
Remplacez STATIC_IP_NAME
par un nom d'adresse IP statique répondant aux critères suivants :
- Créez l'adresse IP statique avant de déployer l'Ingress. Un équilibreur de charge ne se déploie pas tant que l'adresse IP statique n'existe pas, et le fait de référencer une ressource d'adresse IP inexistante ne crée pas d'adresse IP statique. Si vous modifiez un Ingress existant pour utiliser une adresse IP statique au lieu d'une adresse IP éphémère, GKE peut modifier l'adresse IP de l'équilibreur de charge lorsque GKE recrée la règle de transfert de l'équilibreur de charge.
- L'adresse IP statique est réservée dans le projet de service pour un objet Ingress déployé dans le projet de service d'un VPC partagé.
- Référencez la ressource d'adresse IP Google Cloud à l'aide de son nom plutôt que de son adresse IP.
- L'adresse IP doit provenir d'un sous-réseau situé dans la même région que le cluster GKE. Vous pouvez utiliser n'importe quel sous-réseau privé disponible au sein de la région (à l'exception du sous-réseau proxy réservé). Différentes ressources Ingress peuvent également posséder des adresses provenant de différents sous-réseaux.
HTTPS entre le client et l'équilibreur de charge
Ingress pour l'équilibrage de charge interne est compatible avec la diffusion de certificats TLS aux clients. Vous pouvez diffuser des certificats TLS via des secrets Kubernetes ou via des certificats SSL régionaux prépartagés dans Google Cloud. Vous pouvez également spécifier plusieurs certificats par ressource Ingress.
Les étapes suivantes expliquent comment créer un certificat dans Google Cloud, puis le diffuser à des clients internes via une ressource Ingress.
Créez le certificat régional :
gcloud compute ssl-certificates create CERT_NAME \ --certificate CERT_FILE_PATH \ --private-key KEY_FILE_PATH \ --region COMPUTE_REGION
Remplacez les éléments suivants :
CERT_NAME
: nom de votre certificat.CERT_FILE_PATH
: chemin d'accès à votre fichier de certificat local pour créer un certificat autogéré. Le certificat doit être au format PEM.KEY_FILE_PATH
: chemin d'accès à un fichier de clé privée local. La clé privée doit être au format PEM et doit utiliser le chiffrement RSA ou ECDSA.COMPUTE_REGION
: une région Compute Engine pour votre certificat.
Enregistrez l'exemple de fichier manifeste suivant sous le nom
ingress-pre-shared-cert.yaml
:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ilb-demo-ing namespace: default annotations: ingress.gcp.kubernetes.io/pre-shared-cert: "CERT_NAME" kubernetes.io/ingress.class: "gce-internal" kubernetes.io/ingress.allow-http: "false" spec: rules: - host: DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: SERVICE_NAME port: number: 80
Remplacez les éléments suivants :
DOMAIN
: votre domaine.CERT_NAME
: nom du certificat que vous avez créé dans la section précédente.SERVICE_NAME
: nom de votre service.
Appliquez le fichier manifeste au cluster :
kubectl apply -f ingress-pre-shared-cert.yaml
HTTPS entre l'équilibreur de charge et l'application
Si votre application s'exécute dans un pod GKE et peut recevoir des requêtes HTTPS, vous pouvez configurer l'équilibreur de charge pour qu'il utilise HTTPS lorsqu'il transfère les requêtes à votre application. Pour plus d'informations, consultez la section HTTPS (TLS) entre l'équilibreur de charge et votre application.
VPC partagé
Ajouter manuellement l'annotation NEG
Si le GKE dans lequel vous déployez les ressources Ingress se trouve dans un projet de service de VPC partagé, les services ne sont pas automatiquement annotés avec l'annotation cloud.google.com/neg: '{"ingress": true}'
, car la MutatingWebhookConfiguration
tenue d'injecter l'annotation dans les services n'est pas installée.
Vous devez ajouter l'annotation NEG au fichier manifeste des services exposés via Ingress pour les équilibreurs de charge d'application internes.
Règles de pare-feu VPC
Si le cluster GKE dans lequel vous déployez les ressources d'entrée se trouve dans un projet de service de VPC partagé et que vous souhaitez que le plan de contrôle GKE gère les ressources de pare-feu dans votre projet hôte, le compte de service GKE du projet de service doit disposer des autorisations IAM appropriées sur le projet hôte, conformément à la section Gérer les ressources de pare-feu pour les clusters avec VPC partagé. Cela permet au contrôleur d'entrée de créer des règles de pare-feu afin d'autoriser le trafic entrant pour les vérifications d'état Google Cloud.
Voici un exemple d'événement qui peut exister dans les journaux de ressources d'entrée. Cette erreur se produit lorsque le contrôleur d'entrée ne parvient pas à créer une règle de pare-feu pour autoriser le trafic entrant pour les vérifications d'état Google Cloud si les autorisations ne sont pas configurées correctement.
Firewall change required by security admin: `gcloud compute firewall-rules update <RULE_NAME> --description "GCE L7 firewall rule" --allow tcp:<PORT> --source-ranges 130.211.0.0/22,35.191.0.0/16 --target-tags <TARGET_TAG> --project <HOST_PROJECT>
Si vous préférez provisionner manuellement les règles de pare-feu à partir du projet hôte, vous pouvez mettre en sourdine les événements firewallXPNError
en ajoutant l'annotation networking.gke.io/suppress-firewall-xpn-error: "true"
à la ressource Ingress.
Récapitulatif des annotations Ingress internes
Les tableaux suivants présentent les annotations que vous pouvez ajouter lorsque vous créez des ressources Ingress et Service pour Ingress pour les équilibreurs de charge d'application internes.
Annotations Ingress
Annotation | Description |
---|---|
kubernetes.io/ingress.class |
Vous pouvez définir la valeur sur "gce-internal" pour l'entrée interne. Si la classe n'est pas spécifiée, une ressource Ingress est interprétée par défaut comme étant une entrée externe.
Pour en savoir plus, consultez la page Comportement du contrôleur GKE Ingress. |
kubernetes.io/ingress.allow-http |
Vous pouvez autoriser le trafic HTTP entre le client et l'équilibreur de charge HTTP(S). Les valeurs possibles sont true et false .
La valeur par défaut est true , mais vous devez définir cette annotation sur false si vous utilisez HTTPS pour l'équilibrage de charge interne.
Pour en savoir plus, consultez la section Désactiver HTTP. |
ingress.gcp.kubernetes.io/pre-shared-cert |
Vous pouvez importer des certificats et des clés dans votre projet Google Cloud. Utilisez cette annotation pour référencer les certificats et les clés. Pour en savoir plus, consultez la section Utiliser plusieurs certificats SSL avec des équilibreurs de charge d'application externes. |
networking.gke.io/suppress-firewall-xpn-error |
Dans GLBC 1.4 et ses versions ultérieures, vous pouvez désactiver l'événement
Ajoutez l'annotation |
kubernetes.io/ingress.regional-static-ip-name |
Vous pouvez spécifier une adresse IP statique pour provisionner votre ressource d'entrée interne. Pour plus d'informations, consultez la section Adressage IP statique. |
Annotations des services associées à Ingress
Annotation | Description |
---|---|
cloud.google.com/backend-config |
Utilisez cette annotation pour configurer le service de backend associé à un servicePort. Pour en savoir plus, consultez la page Configuration de l'entrée. |
cloud.google.com/neg |
Utilisez cette annotation pour indiquer que l'équilibreur de charge doit utiliser des groupes de points de terminaison du réseau. Pour plus d'informations, consultez la page Utiliser l'équilibrage de charge natif en conteneurs. |
Dépannage
La compréhension et l'observation de l'état d'Ingress impliquent généralement l'inspection des ressources associées. Les types de problèmes rencontrés sont souvent les suivants : les ressources d'équilibrage de charge ne sont pas créées correctement, le trafic n'atteint pas les backends, ou encore les backends ne semblent pas opérationnels.
Voici quelques étapes de dépannage courantes :
- Vérifiez que le trafic client provient de la même région et du même VPC que l'équilibreur de charge.
- Vérifiez que les pods et les backends sont opérationnels.
- Vérifiez que le chemin du trafic allant vers le VIP et pour les vérifications d'état de Compute Engine n'est pas bloqué par les règles de pare-feu.
- Vérifiez l'absence d'erreur dans les événements de la ressource Ingress.
- Décrivez la ressource Ingress pour consulter le mappage vers les ressources Compute Engine.
- Vérifiez que les ressources d'équilibrage de charge de Compute Engine existent, que les configurations sont correctes et qu'aucune erreur n'est signalée.
Filtrage des événements Ingress
La requête suivante filtre les erreurs de tous les événements Ingress de votre cluster.
kubectl get events --all-namespaces --field-selector involvedObject.kind=Ingress
Vous pouvez également filtrer par objet ou par nom d'objet :
kubectl get events --field-selector involvedObject.kind=Ingress,involvedObject.name=hostname-internal-ingress
Dans l'erreur suivante, vous pouvez constater que le service référencé par l'entrée n'existe pas :
LAST SEEN TYPE REASON OBJECT MESSAGE
0s Warning Translate ingress/hostname-internal-ingress error while evaluating the ingress spec: could not find service "default/hostname-invalid"
Inspecter les ressources de l'équilibreur de charge Compute Engine
La commande suivante affiche la sortie complète de la ressource Ingress afin que vous puissiez voir les mappages aux ressources Compute Engine créées par le contrôleur Ingress :
kubectl get ing INGRESS_FILENAME -o yaml
Remplacez INGRESS_FILENAME
par le nom de fichier de votre ressource Ingress.
Le résultat ressemble à ce qui suit :
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/backends: '{"k8s1-241a2b5c-default-hostname-80-29269aa5":"HEALTHY"}'
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-ilb-demo-ingress--241a2b5c94b353ec
ingress.kubernetes.io/target-proxy: k8s-tp-default-ilb-demo-ingress--241a2b5c94b353ec
ingress.kubernetes.io/url-map: k8s-um-default-ilb-demo-ingress--241a2b5c94b353ec
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"gce-internal"},"name":"ilb-demo-ingress","namespace":"default"},"spec":{"defaultBackend":{"service":{"name":"hostname"},"port":{"number":80}}}}
kubernetes.io/ingress.class: gce-internal
creationTimestamp: "2019-10-15T02:16:18Z"
finalizers:
- networking.gke.io/ingress-finalizer
generation: 1
name: ilb-demo-ingress
namespace: default
resourceVersion: "1538072"
selfLink: /apis/networking.k8s.io/v1/namespaces/default/ingresses/ilb-demo-ingress
uid: 0ef024fe-6aea-4ee0-85f6-c2578f554975
spec:
defaultBackend:
service:
name: hostname
port:
number: 80
status:
loadBalancer:
ingress:
- ip: 10.128.0.127
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Les annotations ingress.kubernetes.io/backends
répertorient les backends et leur état. Assurez-vous que vos backends sont répertoriés comme étant HEALTHY
.
Vous pouvez interroger directement les ressources Compute Engine créées par Ingress pour comprendre leur état et leur configuration. L'exécution de ces requêtes peut également être utile pour le dépannage.
Pour répertorier toutes les règles de transfert Compute Engine, procédez comme suit :
gcloud compute forwarding-rules list
Le résultat ressemble à ce qui suit :
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET
k8s-fw-default-hostname-internal-ingress--42084f6a534c335b us-central1 10.128.15.225 TCP us-central1/targetHttpProxies/k8s-tp-default-hostname-internal-ingress--42084f6a534c335b
Pour répertorier l'état d'un service de backend, commencez par répertorier les services de backend, puis créez une copie du nom du service de backend que vous souhaitez inspecter :
gcloud compute backend-services list
Le résultat ressemble à ce qui suit :
NAME BACKENDS PROTOCOL
k8s1-42084f6a-default-hostname-80-98cbc1c1 us-central1-a/networkEndpointGroups/k8s1-42084f6a-default-hostname-80-98cbc1c1 HTTP
Vous pouvez maintenant utiliser le nom du service de backend pour interroger son état :
gcloud compute backend-services get-health k8s1-42084f6a-default-hostname-80-98cbc1c1 \
--region us-central1
Le résultat ressemble à ce qui suit :
backend: https://www.googleapis.com/compute/v1/projects/user1-243723/zones/us-central1-a/networkEndpointGroups/k8s1-42084f6a-default-hostname-80-98cbc1c1
status:
healthStatus:
- healthState: HEALTHY
Étapes suivantes
Découvrez GKE Ingress pour les équilibreurs de charge d'application externes.
Accédez à une présentation du concept d'objet Service dans GKE.
Découvrez comment créer un équilibreur de charge réseau passthrough interne sur GKE.
Implémentez un Ingress interne de base.