Configuration du contrôleur de trafic entrant natif OCI
Découvrez comment configurer et personnaliser le contrôleur de trafic entrant natif OCI pour équilibrer la charge et acheminer le trafic entrant vers les pods de service exécutés sur les noeuds de travail d'une grappe Kubernetes.
Lorsque vous avez installé le contrôleur de trafic entrant natif OCI (en tant que programme autonome ou en tant que module complémentaire de grappe) et que vous avez créé les ressources liées au trafic entrant Kubernetes nécessaires pour l'utiliser, vous pouvez configurer le contrôleur de trafic entrant natif OCI en :
- Spécification des règles de routage pour le contrôleur de trafic entrant natif OCI
- Personnalisation du comportement du contrôleur de trafic entrant natif OCI à l'aide d'annotations
- Configuration d'un point de contrôle de préparation de pod
- Configuration des modules d'écoute TCP
- Ajout de la prise en charge des demandes HTTPS/TLS
- Agréger les ports du module d'écoute HTTP/HTTPS
- Conservation de l'équilibreur de charge après la suppression de IngressClass
- Application de marqueurs à l'équilibreur de charge
Spécification des règles de routage pour le contrôleur de trafic entrant natif OCI
Pour spécifier comment l'équilibreur de charge OCI créé par le contrôleur de trafic entrant natif OCI (installé soit en tant que programme autonome, soit en tant que module complémentaire de grappe) achemine les demandes entrantes, vous spécifiez des règles de routage dans le manifeste Ingress
.
Acheminer les demandes en fonction de l'hôte
Vous pouvez configurer le contrôleur de trafic entrant natif OCI pour qu'il achemine une demande entrante en fonction du nom de domaine dans l'en-tête d'hôte de la demande (hôte vers lequel la demande a été initialement envoyée).
Pour acheminer une demande vers un service et un port dorsaux particuliers en fonction de l'hôte, créez une règle de routage dans le manifeste Ingress
. Si l'hôte correspond à la règle de routage, le contrôleur de trafic entrant natif OCI achemine la demande vers le service dorsal et le port associés.
Par exemple, vous pouvez définir la règle suivante pour acheminer les demandes envoyées initialement à http://foo.bar.com
vers un service dorsal nommé ServiceA sur le port 80. Tout le trafic entrant initialement envoyé à http://foo.bar.com
est acheminé vers ServiceA sur le port 80.
kind: Ingress
...
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Prefix
path: /
backend:
serviceName: ServiceA
servicePort: 80
Acheminer les demandes vers différents services dorsaux en fonction du chemin
Vous pouvez configurer le contrôleur de trafic entrant natif OCI pour acheminer les demandes entrantes vers différents services dorsaux, en fonction des éléments du chemin vers lequel les demandes ont été initialement envoyées.
Pour acheminer une demande vers un service et un port dorsaux particuliers en fonction du chemin, créez une règle de routage dans le manifeste Ingress
. Si le chemin correspond à la règle de routage, le contrôleur de trafic entrant natif OCI achemine la demande vers le service dorsal et le port associés. Vous pouvez spécifier plusieurs chemins dans la même règle pour acheminer des demandes vers différents serveurs dorsaux.
Par exemple, vous pouvez définir la règle suivante pour acheminer les demandes en fonction du chemin vers lequel la demande a été initialement envoyée :
- Si le chemin commence par /app1, le contrôleur de trafic entrant natif OCI achemine la demande vers un service dorsal nommé ServiceA sur le port 80.
- Si le chemin commence par /app2, le contrôleur de trafic entrant natif OCI achemine la demande vers un service dorsal nommé ServiceB sur le port 443.
Comme la règle ne spécifie pas d'hôte, elle s'applique à tout le trafic entrant.
kind: Ingress
...
spec:
rules:
- http:
paths:
- pathType: Prefix
path: /app1
backend:
serviceName: ServiceA
servicePort: 80
- pathType: Prefix
path: /app2
backend:
serviceName: ServiceB
servicePort: 443
Acheminer les demandes en fonction de l'hôte et du chemin
Vous pouvez configurer le contrôleur de trafic entrant natif OCI pour qu'il achemine une demande entrante en fonction à la fois du nom de domaine dans l'en-tête d'hôte de la demande (l'hôte vers lequel la demande a été envoyée initialement) et des éléments du chemin vers lequel la demande initiale a été envoyée.
Pour acheminer une demande vers un service et un port dorsaux particuliers en fonction de l'hôte et du chemin, créez une règle de routage dans le manifeste Ingress
. Si l'hôte et le chemin correspondent à la règle de routage, le contrôleur de trafic entrant natif OCI achemine la demande vers le service dorsal et le port associés.
Par exemple, vous pouvez définir la règle suivante pour acheminer les demandes envoyées initialement à http://foo.bar.com/app1
vers un service dorsal nommé foo sur le port 80 :
kind: Ingress
...
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Prefix
path: /app1
backend:
serviceName: foo
servicePort: 80
Acheminer les demandes vers un système dorsal par défaut
Vous pouvez configurer le contrôleur de trafic entrant natif OCI pour acheminer les demandes entrantes vers un système dorsal par défaut. Vous pouvez configurer un système dorsal par défaut pour traiter les demandes qui ne correspondent à aucune règle de routage.
Par exemple, vous pouvez définir la valeur defaultBackend
suivante pour acheminer les demandes qui ne correspondent pas à d'autres règles du manifeste Ingress
vers un service dorsal nommé ServiceC sur le port 8080.
Notez que si vous ne spécifiez aucune autre règle dans un manifeste Ingress
, vous devez spécifier une valeur defaultBackend
.
kind: Ingress
...
spec:
rules:
- http:
paths:
- pathType: Prefix
path: /app1
backend:
serviceName: ServiceA
servicePort: 80
- pathType: Prefix
path: /app2
backend:
serviceName: ServiceB
servicePort: 443
defaultBackend:
service:
name: ServiceC
port:
number: 8080
Personnalisation du comportement du contrôleur de trafic entrant natif OCI à l'aide d'annotations
Vous pouvez ajouter des annotations aux manifestes de ressource IngressClass
ou Ingress
pour personnaliser le comportement du contrôleur de trafic entrant natif OCI (installé soit en tant que programme autonome, soit en tant que module complémentaire de grappe).
Personnaliser le comportement général à l'aide d'annotations
Vous pouvez ajouter des annotations aux manifestes de ressource IngressClass
ou Ingress
pour personnaliser le comportement général du contrôleur de trafic entrant natif OCI.
Annotation | Description | Ajouter une annotation à ce manifeste de ressources | Exemple |
---|---|---|---|
oci-native-ingress.oraclecloud.com/id |
OCID d'un équilibreur de charge OCI existant à utiliser, plutôt que d'en créer un nouveau. Notez que si vous spécifiez un équilibreur de charge existant, le contrôleur de trafic entrant natif OCI gère l'équilibreur de charge et met à jour ses propriétés si nécessaire pour les aligner avec les valeurs des manifestes de ressource IngressClassParameters, IngressClass et de trafic entrant. |
IngressClass |
oci-native-ingress.oraclecloud.com/id: ocid1.loadbalancer.oc1.iad.aaaaaaaan___u7a |
oci-native-ingress.oraclecloud.com/defined-tags |
Un ou plusieurs marqueurs définis à appliquer à l'équilibreur de charge, au format JSON. Voir Application de marqueurs définis à l'équilibreur de charge. |
IngressClass |
oci-native-ingress.oraclecloud.com/defined-tags: '{"tag-namespace-1": {"key1": "value1", "key2": "value2"}, "tag-namespace-2": {"key1": "value1"}}' |
oci-native-ingress.oraclecloud.com/freeform-tags |
Un ou plusieurs marqueurs à structure libre à appliquer à l'équilibreur de charge, au format JSON. Voir Application de marqueurs à structure libre à l'équilibreur de charge. |
IngressClass |
oci-native-ingress.oraclecloud.com/freeform-tags: '{"key1": "value1", "key2": "value2"}' |
oci-native-ingress.oraclecloud.com/delete-protection-enabled: "true" |
Indique si l'équilibreur de charge doit être conservé si IngressClass est supprimé. Si la valeur est réglée à Voir Conservation de l'équilibreur de charge après la suppression de IngressClass. |
IngressClass |
oci-native-ingress.oraclecloud.com/delete-protection-enabled: "true" |
oci-native-ingress.oraclecloud.com/network-security-group-ids |
Un ou plusieurs OCID de groupes de sécurité de réseau auxquels ajouter l'équilibreur de charge, dans une liste délimitée par des virgules. S'il n'est pas spécifié, l'équilibreur de charge n'est ajouté à aucun groupe de sécurité de réseau. | IngressClass |
oci-native-ingress.oraclecloud.com/network-security-group-ids: 'ocid1.networksecuritygroup.oc1.iad.agx___kby, ocid1.networksecuritygroup.oc1.iad.ahr___mlo' |
oci-native-ingress.oraclecloud.com/waf-policy-ocid |
OCID d'une politique de pare-feu d'application Web existante (WAF). Voir Politiques de pare-feu d'application Web. | IngressClass |
oci-native-ingress.oraclecloud.com/waf-policy-ocid: ocid1.webappfirewallpolicy.oc1.iad.ama___aqq |
oci-native-ingress.oraclecloud.com/protocol |
Protocole à utiliser pour le module d'écoute sur l'équilibreur de charge. Un de HTTP2 ou TCP. (Notez que si vous spécifiez HTTP2 comme protocole, un module d'écoute configuré TLS est requis.) |
Ingress |
oci-native-ingress.oraclecloud.com/protocol: "HTTP2" |
oci-native-ingress.oraclecloud.com/backend-tls-enabled |
Indique si les pods de service dorsal peuvent recevoir des demandes TLS. Si la valeur est réglée à |
Ingress |
oci-native-ingress.oraclecloud.com/backend-tls-enabled: "false" |
oci-native-ingress.oraclecloud.com/http-listener-port |
Créez un port de module d'écoute unique pour tous les chemins HTTP de ce trafic entrant, plutôt que de créer un port de module d'écoute pour chaque port de service. Les politiques d'acheminement sont configurées en conséquence. |
Ingress |
oci-native-ingress.oraclecloud.com/http-listener-port: "100" |
oci-native-ingress.oraclecloud.com/https-listener-port |
Créez un seul port de module d'écoute pour tous les chemins HTTPS sous ce trafic entrant, plutôt que de créer un port de module d'écoute pour chaque port de service. Les politiques d'acheminement sont configurées en conséquence. | Ingress |
oci-native-ingress.oraclecloud.com/https-listener-port: "500" |
oci-native-ingress.oraclecloud.com/policy |
Politique à utiliser par le jeu dorsal de l'équilibreur de charge pour la répartition du trafic. | Ingress |
oci-native-ingress.oraclecloud.com/policy: "ROUND_ROBIN" |
Personnaliser le comportement des vérifications d'état à l'aide d'annotations
Vous pouvez ajouter des annotations au manifeste de ressources Ingress
pour personnaliser les vérifications d'état effectuées par l'équilibreur de charge créé par le contrôleur de trafic entrant natif OCI. Pour plus d'informations sur les vérifications de l'état de l'équilibreur de charge, voir Vérifications d'état pour les équilibreurs de charge.
Annotation | Description | Ajouter une annotation à ce manifeste de ressources | Exemple |
---|---|---|---|
oci-native-ingress.oraclecloud.com/healthcheck-protocol |
Protocole à utiliser pour les vérifications d'état du jeu dorsal de l'équilibreur de charge. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-protocol: "HTTP" |
oci-native-ingress.oraclecloud.com/healthcheck-port |
Port à utiliser pour les vérifications d'état du jeu dorsal de l'équilibreur de charge. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-port: "80" |
oci-native-ingress.oraclecloud.com/healthcheck-path |
Chemin à utiliser pour les vérifications d'état du jeu dorsal de l'équilibreur de charge. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-path: "/test" |
oci-native-ingress.oraclecloud.com/healthcheck-interval-milliseconds |
Intervalle entre les vérifications d'état du jeu dorsal de l'équilibreur de charge. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-interval-milliseconds: "1000" |
oci-native-ingress.oraclecloud.com/healthcheck-timeout-milliseconds |
Période après laquelle la vérification de l'état du jeu dorsal de l'équilibreur de charge est considérée comme ayant échoué. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-timeout-milliseconds: "750" |
oci-native-ingress.oraclecloud.com/healthcheck-retries |
Nombre de nouvelles tentatives après lesquelles la vérification de l'état du jeu dorsal de l'équilibreur de charge est considérée comme ayant échoué. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-retries: "5" |
oci-native-ingress.oraclecloud.com/healthcheck-return-code |
Code de statut que le jeu dorsal de l'équilibreur de charge doit retourner en réponse à une vérification d'état pour être considéré comme sain. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-return-code: "200" |
oci-native-ingress.oraclecloud.com/healthcheck-response-regex |
Expression rationnelle pour l'analyse du corps de la réponse à partir du jeu dorsal de l'équilibreur de charge. Vous pouvez spécifier n'importe quelle valeur d'expression rationnelle (telle que * ou / ), ou une valeur vide. | Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-response-regex: "*" |
oci-native-ingress.oraclecloud.com/healthcheck-force-plaintext |
Indique si une vérification d'état doit être envoyée au serveur dorsal de l'équilibreur de charge sans SSL (HTTP uniquement). Si vous ne spécifiez pas de valeur, false est la valeur par défaut. |
Ingress |
oci-native-ingress.oraclecloud.com/healthcheck-force-plaintext: "true" |
Configuration d'un point de contrôle de préparation de pod
Les portes de préparation des pods sont des conditions supplémentaires incluses dans un manifeste de pod pour indiquer qu'un pod est prêt à recevoir du trafic. Les points de contrôle de la disponibilité des pods vous permettent d'implémenter des vérifications complexes de la disponibilité des personnalisations et peuvent vous aider à atteindre un temps d'arrêt nul lors des déploiements continus. Pour plus d'informations, voir Détails de la disponibilité des pods dans la documentation sur Kubernetes.
Lorsque vous utilisez le contrôleur de trafic entrant natif OCI (soit en tant que programme autonome, soit en tant que module complémentaire de grappe) avec une grappe dont le type de réseau est Réseau de pod natif du réseau VCN, vous pouvez spécifier que le contrôleur de trafic entrant natif OCI injecte une porte de disponibilité de pod dans la spécification de pod de chaque pod créé dans un espace de noms particulier. Notez que vous ne pouvez pas utiliser le contrôleur de trafic entrant natif OCI pour injecter des points de contrôle de disponibilité de pod dans les spécifications de pod si la grappe comporte une couche Flannel comme type de réseau.
Spécifiez que le contrôleur de trafic entrant natif OCI doit injecter un point de contrôle de disponibilité de pod dans la spécification de pod de chaque pod créé dans un espace de noms particulier en entrant :
kubectl label ns <namespace> podreadiness.ingress.oraclecloud.com/pod-readiness-gate-inject=enabled
Le contrôleur de trafic entrant natif OCI insère une condition dans la spécification de pod de chaque pod créé dans l'espace de noms. Par exemple :
kind: Pod
...
spec:
readinessGates:
- conditionType: podreadiness.ingress.oraclecloud.com/k8s_6b5b1b3a38
kubectl get pods -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
testecho-7cdcfff87f-b6xt4 1/1 Running 0 35s 10.0.10.242 10.0.10.135 <none> 0/1
testecho-7cdcfff87f-b6xt4 1/1 Running 0 72s 10.0.10.242 10.0.10.135 <none> 1/1
Configuration des modules d'écoute TCP
Vous pouvez utiliser le contrôleur de trafic entrant natif OCI (en tant que programme autonome ou en tant que module complémentaire de grappe) pour configurer les modules d'écoute d'équilibreur de charge en tant que modules d'écoute TCP. Chaque module d'écoute TCP transmet simplement le trafic TCP reçu sur un port particulier au service dorsal spécifié pour ce port dans un manifeste de ressources Ingress
, sans effectuer de routage de couche de transport 7.
Vous définissez l'annotation oci-native-ingress.oraclecloud.com/protocol
pour spécifier que le contrôleur de trafic entrant natif OCI doit créer un module d'écoute TCP pour chaque port unique inclus dans les règles de routage d'un manifeste de ressource Ingress
.
Pour spécifier que le contrôleur de trafic entrant natif OCI doit créer des modules d'écoute TCP :
- Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
- Dans la section
metadata:
, ajoutez un élémentannotations:
et réglez l'annotationoci-native-ingress.oraclecloud.com/protocol
àTCP
, dans le format suivant :kind: Ingress metadata: name: <i-name> annotations: oci-native-ingress.oraclecloud.com/protocol: TCP spec: ...
où
name: <i-name>
est le nom de votre choix pour la ressource entrante.Par exemple :
kind: Ingress metadata: name: ingress-pass-through annotations: oci-native-ingress.oraclecloud.com/protocol: TCP spec: ...
- Dans la section
rules:
du manifeste de ressourcesIngress
, ajoutez une règle pour chaque module d'écoute qui doit recevoir le trafic TCP :- (recommandé) Réglez
paths.pathType
àImplementationSpecific
. - Réglez
paths.backend.service.name
au nom du service dorsal. - Réglez
paths.backend.service.port.number
au port sur lequel écouter le trafic TCP et vers lequel transférer le trafic TCP.
Par exemple, si vous voulez qu'un module d'écoute TCP écoutant sur le port 8080 transmette le trafic TCP à
my-first-svc:8080
et qu'un module d'écoute TCP écoutant sur le port 8081 transmette le trafic TCP àmy-second-svc:8081
, vous pouvez configurer un manifeste de ressourceIngress
comme suit :apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-pass-through annotations: oci-native-ingress.oraclecloud.com/protocol: TCP spec: rules: - http: paths: - pathType: ImplementationSpecific backend: service: name: my-first-svc port: number: 8080 - http: paths: - pathType: ImplementationSpecific backend: service: name: my-second-svc port: number: 8081
- (recommandé) Réglez
-
Créez la ressource en entrant
kubectl create -f <filename>.yaml
Ajout de la prise en charge des demandes HTTPS/TLS
Vous pouvez utiliser le contrôleur de trafic entrant natif OCI (en tant que programme autonome ou en tant que module complémentaire de grappe) pour prendre en charge la communication HTTPS sécurisée. À l'aide du contrôleur de trafic entrant natif OCI, vous pouvez configurer des modules d'écoute et des jeux dorsaux d'équilibreur de charge OCI pour gérer le trafic chiffré à l'aide de TLS (anciennement SSL).
Lorsque vous utilisez le contrôleur de trafic entrant natif OCI pour prendre en charge la communication HTTPS, vous disposez de deux options :
- Option 1 : Le contrôleur de trafic entrant natif OCI obtient le certificat du service de certificats à l'aide d'une clé secrète Kubernetes : Vous créez une clé secrète Kubernetes et spécifiez le nom de la clé secrète dans un manifeste de ressources
Ingress
. Le contrôleur de trafic entrant natif OCI utilise la clé secrète Kubernetes pour obtenir un certificat et un ensemble AC (ensemble Autorité de certification) à partir du service de certificats OCI. Le contrôleur de trafic entrant natif OCI associe le certificat et l'ensemble AC au module d'écoute et au jeu dorsal. - Option 2 : Vous obtenez un certificat à partir du service de certificats : Vous créez manuellement un certificat dans le service de certificats OCI vous-même. Vous spécifiez ensuite l'OCID du certificat dans le manifeste de ressource
Ingress
en tant qu'annotation. Le contrôleur de trafic entrant natif OCI associe le certificat au module d'écoute et au jeu dorsal.
Lors du traitement du trafic HTTPS, l'équilibreur de charge OCI créé par le contrôleur de trafic entrant natif OCI met en oeuvre le protocole TLS de bout en bout par défaut. L'équilibreur de charge utilise des certificats pour accepter une demande chiffrée TLS d'un client, puis utilise des règles de routage pour transmettre la demande au jeu dorsal approprié. Le jeu dorsal crée une nouvelle connexion TLS avec les serveurs dorsaux s'exécutant sur la grappe (en utilisant l'ensemble AC comme autorité de certification pour la nouvelle connexion).
Notez ce qui suit :
- Si vous supprimez une ressource
IngressClass
, le contrôleur de trafic entrant natif OCI supprime l'équilibreur de charge qu'il a créé ou supprime l'équilibreur de charge existant spécifié par l'annotationoci-native-ingress.oraclecloud.com/id
(sauf si vous avez définioci-native-ingress.oraclecloud.com/delete-protection-enabled: "true"
). Toutefois, notez que le contrôleur de trafic entrant ne supprime pas les ressources créées dans le service de certificats OCI. Vous êtes responsable de la suppression de ces ressources de service de certificats. En particulier, si vous avez spécifié une clé secrète Kubernetes dans le manifeste des ressourcesIngress
, notez que vous êtes responsable de la suppression des ressources du service de certificats que le contrôleur de trafic entrant natif OCI a créées pour vous. - Les certificats obtenus à partir du service de certificats OCI de type Importé ne peuvent pas faire l'objet d'une rotation automatique. Si vous voulez que les certificats fassent l'objet d'une rotation automatique, obtenez manuellement un certificat dans le service de certificats OCI vous-même en spécifiant que vous voulez que le certificat soit émis par une autorité de certification interne du service de certificats (les certificats sont de type Émis par une autorité de certification interne). Vous pouvez configurer la rotation automatique des certificats de type Émis par une autorité de certification interne.
- Si vous spécifiez une clé secrète Kubernetes dans le manifeste de ressources
Ingress
, les certificats obtenus par le contrôleur de trafic entrant natif OCI à partir du service de certificats sont de type Importé et ne font donc pas l'objet d'une rotation automatique. Toutefois, vous pouvez renouveler manuellement le certificat obtenu à partir du service de certificats en modifiant les détails du certificat de serveur courant spécifié dans la clé secrète Kubernetes existante. Lorsque vous modifiez les détails du certificat du serveur, le contrôleur de trafic entrant natif OCI met à jour les détails correspondants du certificat obtenu à partir du service de certificats.Notez que la modification des informations de sujet dans le certificat de serveur courant (nom commun, nom d'organisation, noms de remplacement de sujet) n'est pas prise en charge par le service Certificats. Si vous voulez modifier les informations sur l'objet, supprimez la clé secrète Kubernetes initiale et créez une nouvelle clé secrète portant le même nom. Le contrôleur de trafic entrant natif OCI obtient un nouveau certificat de type Importé et un nouvel ensemble AC à partir du service de certificats et les associe au module d'écoute et au jeu dorsal (remplaçant le certificat précédent et l'ensemble AC).
- Un module d'écoute ne peut être associé qu'à un seul certificat. Par conséquent, ne créez pas plusieurs ressources entrantes qui ont chacune des règles spécifiant la même combinaison service/port dorsal, mais dans lesquelles les ressources entrantes utilisent des certificats différents.
- Par défaut, l'équilibreur de charge OCI créé par le contrôleur de trafic entrant natif OCI met en oeuvre le protocole TLS de bout en bout. L'équilibreur de charge met fin à la demande TLS sur le module d'écoute et une nouvelle connexion TLS est établie entre le jeu dorsal et les serveurs dorsaux. Toutefois, si les serveurs dorsaux n'exécutent pas de serveur HTTPS et que vous voulez que la connexion entre le jeu dorsal et les serveurs dorsaux soit en texte brut, réglez l'annotation
oci-native-ingress.oraclecloud.com/backend-tls-enabled
à"false"
. Lorsque l'annotationoci-native-ingress.oraclecloud.com/backend-tls-enabled
est réglée à"false"
, l'équilibreur de charge peut accepter le trafic chiffré d'un client, mais le trafic entre l'équilibreur de charge et les serveurs dorsaux n'est pas chiffré.
Option 1 : Le contrôleur de trafic entrant natif OCI obtient un certificat à partir du service de certificats à l'aide d'une clé secrète Kubernetes
Pour configurer le contrôleur de trafic entrant natif OCI afin d'obtenir un certificat à partir du service de certificats OCI :
- Obtenez une paire de clés publique et privée TLS et un certificat.
Dans les environnements de production, vous obtenez un certificat TLS auprès de l'autorité de certification choisie en soumettant une demande de signature de certificat. Au cours du processus de demande de certificat, une clé publique et la clé privée correspondante sont générées.
Dans les environnements de développement et de test, vous pouvez créer un certificat auto-signé et générer vous-même une clé privée à l'aide d'un outil tel que OpenSSL. Par exemple (en utilisant OpenSSL 3.0 ou une version ultérieure) :
-
Générez une paire de clés publique et privée en entrant les commandes suivantes :
openssl genrsa -out rootCA.key 4096
openssl req -x509 -addext basicConstraints=critical,CA:TRUE -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt -subj /CN=RootCA
-
Générez un certificat en entrant les commandes suivantes :
openssl genrsa -out server.key 4096
openssl req -new -sha256 -key server.key -subj /C=US/ST=CA/O=MyOrg,Inc./CN=my.example.com -out server.csr
openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 500 -sha256
Dans ce cas :
rootCA.key
contient la paire de clés de l'autorité de certification racine.rootCA.crt
contient le certificat AC racine.server.key
contient la paire de clés pour générer le certificat du serveur.server.csr
contient la demande de signature de certificat pour le certificat du serveur.server.crt
contient le certificat de serveur généré.
-
- Créez une ressource de clé secrète Kubernetes de l'une des façons suivantes :
-
À l'aide de la commande
kubectl create secret generic
, entrez :kubectl create secret generic <k8s-secret-name> --type=kubernetes.io/tls --from-file=ca.crt=<path-and-filename>.crt --from-file=tls.crt=<path-and-filename>.crt --from-file=tls.key=<path-and-filename>.key
où :
<k8s-secret-name>
est le nom de votre choix pour la clé secrète Kubernetes--from-file=ca.crt=<path-and-filename>.crt
indique le chemin d'accès au fichier contenant le certificat de l'autorité de certification racine. Par exemple,--from-file=ca.crt=rootCA.crt
--from-file=tls.crt=<path-and-filename>.crt
indique le chemin d'accès au fichier contenant le certificat de serveur généré. Par exemple,--from-file=tls.crt=server.crt
--from-file=tls.key=<path-and-filename>.key
indique le chemin d'accès au fichier contenant la clé privée générée. Par exemple,--from-file=tls.key=server.key
Par exemple :
kubectl create secret generic example-tls-secret --type=kubernetes.io/tls --from-file=ca.crt=rootCA.crt --from-file=tls.crt=server.crt --from-file=tls.key=server.key
- À l'aide d'un fichier manifeste de ressource
Secret
:-
Définissez la clé secrète Kubernetes dans un fichier .yaml, dans le format suivant :
apiVersion: v1 kind: Secret metadata: name: <k8s-secret-name> type: kubernetes.io/tls data: ca.crt: <base64-encoded-certificate-chain> tls.crt: <base64-encoded-server-certificate> tls.key: <base64-encoded-private-key>
où :
name: <k8s-secret-name>
est le nom de votre choix pour la ressource de clé secrète Kubernetes.ca.crt: <base64-encoded-certificate-chain>
est le contenu du fichier (ou des fichiers) contenant des certificats intermédiaires qui forment une chaîne de certificats remontant du certificat de feuille jusqu'à l'autorité de certification. Notez que vous pouvez omettreca.cert
, à condition d'inclure toute la chaîne de certificats comme valeur detls.cert
(dans ce cas, démarrez la chaîne de certificats avec le contenu du fichier contenant le certificat de serveur généré, suivi des certificats restants).tls.crt: <base64-encoded-server-certificate>
est le contenu du fichier contenant le certificat de serveur généré.tls.key: <base64-encoded-private-key>
est le contenu du fichier contenant la clé privée générée.
Par exemple :
apiVersion: v1 kind: Secret metadata: name: example-tls-secret type: kubernetes.io/tls data: ca.crt : MIIFGERTegcDFRTuSDGfghREdE______Jre tls.crt: MIIC2DCCAcCgAwIBAgIBATANBg______kqh tls.key: MIIEpgIBAAKCAQEA7yn3bRHQ5F______HMQ
-
Créez la ressource de clé secrète en entrant
kubectl create -f <filename>.yaml
-
-
- Ajoutez la clé secrète Kubernetes à un manifeste de ressources
Ingress
:- Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
- Dans la section
spec:
du manifeste, ajoutez un élémenttls:
qui spécifie à la fois l'hôte devant recevoir le trafic HTTPS et le nom de la clé secrète Kubernetes, dans le format suivant :kind: Ingress ... spec: tls: - hosts: - <host-name> secretName: <k8s-secret-name>
Par exemple :
kind: Ingress ... spec: tls: - hosts: - my.example.com secretName: example-tls-secret
- Dans la section
rules:
du manifeste, ajoutez une règle pour l'hôte qui doit recevoir le trafic HTTPS et spécifiez 443 comme port sur lequel écouter le trafic HTTPS.Par exemple :
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: acme-tls-secret-ingress spec: tls: - hosts: - my.example.com secretName: example-tls-secret rules: - host: "my.example.com" http: paths: - pathType: Prefix path: "/TLSPath" backend: service: name: tls-test port: number: 443
-
Créez la ressource en entrant
kubectl create -f <filename>.yaml
Lorsque vous créez la ressource entrante, le contrôleur de trafic entrant natif OCI utilise la clé secrète Kubernetes pour obtenir un certificat de type Importé et un ensemble AC (ensemble Autorité de certification), à partir du service de certificats OCI. Le contrôleur de trafic entrant natif OCI associe le certificat au module d'écoute et l'ensemble AC au jeu dorsal.
Lorsque le module d'écoute écoutant sur le port 443 reçoit une demande HTTPS à l'hôte spécifié, il utilise le certificat d'arrêt TLS. Le module d'écoute utilise ensuite la règle de routage pour transmettre la demande au jeu dorsal. Le jeu dorsal crée une nouvelle connexion TLS avec les serveurs dorsaux exécutés sur la grappe (en utilisant l'ensemble AC comme autorité de certification pour la nouvelle connexion).
Option 2 : Vous obtenez un certificat auprès du service Certificats
Pour configurer le contrôleur de trafic entrant natif OCI afin qu'il utilise un certificat que vous avez obtenu du service de certificats OCI :
- Créez un certificat dans le service de certificats OCI de l'une des façons suivantes :
- en important un certificat émis par une autorité de certification tierce (le certificat sera de type Importé)
- en émettant le certificat en interne à partir d'une autorité de certification du service de certificats (le certificat sera de type Émis par une autorité de certification interne)
Ne créez pas de certificat à gérer à l'externe (de type Émis par une autorité de certification interne, géré à l'externe). Pour plus d'informations, voir Création d'un certificat.
- Notez l'OCID du certificat.
- Ajoutez l'OCID du certificat à un manifeste de ressource
Ingress
:- Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
- Dans la section
metadata:
, ajoutez un élémentannotations:
qui spécifie l'OCID du certificat que vous avez créé dans le service de certificats OCI, dans le format suivant :kind: Ingress metadata: name: <i-name> annotations: oci-native-ingress.oraclecloud.com/certificate-ocid: <certificate-ocid> spec: ...
où :
name: <i-name>
est le nom de votre choix pour la ressource entrante.oci-native-ingress.oraclecloud.com/certificate-ocid: <certificate-ocid>
est l'OCID du certificat que vous avez créé dans le service de certificats OCI.
Par exemple :
kind: Ingress metadata: name: acme-tls-certificate-ingress annotations: oci-native-ingress.oraclecloud.com/certificate-ocid: ocid1.certificate.oc1.iad.amaaaaaa______gabc spec: ...
- Dans la section
rules:
du manifeste de ressourcesIngress
, ajoutez une règle pour l'hôte qui doit recevoir le trafic HTTPS et spécifiez 443 comme port sur lequel écouter le trafic HTTPS.Par exemple :
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: acme-tls-certificate-ingress annotations: oci-native-ingress.oraclecloud.com/certificate-ocid: ocid1.certificate.oc1.iad.amaaaaaa______gabc spec: rules: - host: "my.example.com" http: paths: - pathType: Prefix path: "/TLSPath" backend: service: name: tls-test port: number: 443
-
Créez la ressource en entrant
kubectl create -f <filename>.yaml
Ce qui se passe lorsque vous créez la ressource entrante dépend de la façon dont vous avez créé le certificat dans le service de certificats OCI :
- Si vous avez créé le certificat en important un certificat émis par une autorité de certification de tierce partie, le certificat est de type Importé. Le contrôleur de trafic entrant natif OCI associe le certificat au module d'écoute, crée un ensemble AC à partir de la chaîne de certificats et associe l'ensemble AC au jeu dorsal. Notez que vous ne pouvez pas configurer des certificats de type Importé pour qu'ils fassent l'objet d'une rotation automatique.
- Si vous avez créé le certificat en l'émettant en interne à partir d'une autorité de certification du service de certificats, le certificat est de type Émis par une autorité de certification interne. Le contrôleur de trafic entrant natif OCI associe le certificat au module d'écoute, obtient l'OCID de l'autorité de certification et associe cet OCID au jeu dorsal. Notez que vous pouvez configurer des certificats de type Émis par une autorité de certification interne pour qu'ils fassent l'objet d'une rotation automatique.
Lorsque le module d'écoute écoutant sur le port 443 reçoit une demande HTTPS à l'hôte spécifié, il utilise le certificat d'arrêt TLS. Le module d'écoute utilise ensuite la règle de routage pour transmettre la demande au jeu dorsal. Le jeu dorsal crée une nouvelle connexion TLS avec les serveurs dorsaux exécutés sur la grappe (à l'aide de l'ensemble AC ou de l'autorité de certification identifiée par son OCID en tant qu'autorité de certification pour la nouvelle connexion).
Agréger les ports du module d'écoute HTTP/HTTPS
Lorsque vous utilisez le contrôleur de trafic entrant natif OCI (en tant que programme autonome ou en tant que module complémentaire de grappe), vous pouvez agréger tout le trafic HTTP dans un seul port de module d'écoute et, de la même façon, vous pouvez agréger tout le trafic HTTPS dans un seul port.
Par défaut, le contrôleur de trafic entrant natif OCI crée un module d'écoute d'équilibreur de charge OCI pour chaque port de service dorsal défini dans un manifeste Ingress
. Le contrôleur de trafic entrant natif OCI crée également une politique d'acheminement pour chaque port de module d'écoute. Toutefois, vous pouvez utiliser l'annotation oci-native-ingress.oraclecloud.com/http-listener-port
ou l'annotation oci-native-ingress.oraclecloud.com/https-listener-port
pour créer un module d'écoute et une politique d'acheminement uniques pour toutes les demandes HTTP, ou un module d'écoute et une politique d'acheminement uniques pour toutes les demandes HTTPS.
Par exemple, vous pouvez définir un trafic entrant avec des règles pour quatre services dorsaux, chaque service écoutant sur un port différent, comme suit :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: sample-ingress
spec:
tls:
- hosts:
- "foo.bar.com3"
- "foo.bar.com4"
secretName: secret_name
rules:
- host: "foo.bar.com1"
http:
paths:
- pathType: Prefix
path: "/testecho1"
backend:
service:
name: testecho1
port:
number: 80
- host: "foo.bar.com2"
http:
paths:
- pathType: Prefix
path: "/testecho2"
backend:
service:
name: testecho2
port:
number: 81
- host: "foo.bar.com3"
http:
paths:
- pathType: Prefix
path: "/testecho3"
backend:
service:
name: testecho3
port:
number: 443
- host: "foo.bar.com4"
http:
paths:
- pathType: Prefix
path: "/testecho4"
backend:
service:
name: testecho4
port:
number: 444
Dans cet exemple, le manifeste Ingress
définit quatre services :
- testecho1, écoute sur le port 80 pour le trafic HTTP
- testecho2, écoute sur le port 81 pour le trafic HTTP
- testecho3, à l'écoute sur le port 443 pour le trafic HTTPS
- testecho4, à l'écoute sur le port 444 pour le trafic HTTPS
Par défaut, le contrôleur de trafic entrant natif OCI crée :
- Quatre modules d'écoute dans l'équilibreur de charge (deux modules d'écoute écoutant sur les ports 80 et 81 pour le trafic HTTP et deux modules d'écoute écoutant sur les ports 443 et 444 pour le trafic HTTPS).
- Quatre politiques de routage (une pour chaque port du module d'écoute).
Pour simplifier l'administration, vous pouvez décider d'avoir un seul processus d'écoute pour le trafic HTTP et un seul processus d'écoute pour le trafic HTTPS, en définissant des annotations comme suit :
oci-native-ingress.oraclecloud.com/http-listener-port: "100"
oci-native-ingress.oraclecloud.com/https-listener-port: "500"
Avec les annotations définies comme illustré, le contrôleur de trafic entrant natif OCI crée :
- un seul module d'écoute écoutant le trafic HTTP sur le port 100 et une seule politique de routage pour le port 100 avec des chemins pour les serveurs dorsaux sur les ports testecho1:80 et testecho2:81
- un seul module d'écoute écoutant le trafic HTTPS sur le port 500 et une seule politique de routage pour le port 500 avec des chemins pour les serveurs dorsaux sur les ports testecho3:443 et testecho4:444
Notez ce qui suit :
-
Vous pouvez définir les annotations
oci-native-ingress.oraclecloud.com/http-listener-port
etoci-native-ingress.oraclecloud.com/https-listener-port
indépendamment les unes des autres, de sorte que vous n'avez pas à définir les deux annotations. -
Si le manifeste de ressource
Ingress
inclut l'annotationoci-native-ingress.oraclecloud.com/certificate-ocid
, le contrôleur de trafic entrant natif OCI considère que tous les hôtes sont configurés pour TLS. Dans ce cas, le contrôleur de trafic entrant natif OCI :- ignore l'annotation
oci-native-ingress.oraclecloud.com/http-listener-port
(si elle est présente dans le manifeste de ressourcesIngress
) - applique l'annotation
oci-native-ingress.oraclecloud.com/https-listener-port
(si elle est présente dans le manifeste de ressourcesIngress
) pour créer un seul module d'écoute pour tout le trafic
- ignore l'annotation
- Indépendamment des annotations
oci-native-ingress.oraclecloud.com/http-listener-port
etoci-native-ingress.oraclecloud.com/https-listener-port
, le contrôleur de trafic entrant natif OCI crée uniquement des modules d'écoute HTTP et/ou HTTPS (et des politiques de routage correspondantes) si nécessaire pour les services dorsaux définis dans le manifeste des ressources entrantes. Par exemple :- Si vous incluez l'annotation
oci-native-ingress.oraclecloud.com/http-listener-port
dans un manifeste de ressourceIngress
qui ne définit pas de serveur dorsal HTTP, le contrôleur de trafic entrant natif OCI ne crée pas de module d'écoute HTTP. - Si vous incluez l'annotation
oci-native-ingress.oraclecloud.com/https-listener-port
dans un manifeste de ressourceIngress
qui ne définit pas de système dorsal HTTPS, le contrôleur de trafic entrant natif OCI ne crée pas de module d'écoute HTTPS. - Si vous incluez à la fois des annotations
oci-native-ingress.oraclecloud.com/http-listener-port
etoci-native-ingress.oraclecloud.com/https-listener-port
dans un manifeste de ressourceIngress
qui définit uniquement les serveurs dorsaux HTTP, le contrôleur de trafic entrant natif OCI ignore l'annotationoci-native-ingress.oraclecloud.com/https-listener-port
et ne crée pas de module d'écoute HTTPS. - Si vous incluez à la fois des annotations
oci-native-ingress.oraclecloud.com/http-listener-port
etoci-native-ingress.oraclecloud.com/https-listener-port
dans un manifeste de ressourceIngress
qui définit uniquement les serveurs dorsaux HTTPS, le contrôleur de trafic entrant natif OCI ignore l'annotationoci-native-ingress.oraclecloud.com/http-listener-port
et ne crée pas de module d'écoute HTTP.
- Si vous incluez l'annotation
Conservation de l'équilibreur de charge après la suppression de IngressClass
Vous pouvez spécifier que vous voulez que le contrôleur de trafic entrant natif OCI conserve l'équilibreur de charge pour une ressource IngressClass
si vous supprimez IngressClass
lui-même.
Vous utilisez l'annotation oci-native-ingress.oraclecloud.com/delete-protection-enabled
dans le manifeste IngressClass
pour spécifier si l'équilibreur de charge est supprimé. Réglez l'annotation à true
pour conserver l'équilibreur de charge si vous supprimez IngressClass
. Réglez l'annotation à false
(ou n'incluez pas l'annotation dans le manifeste) pour supprimer l'équilibreur de charge si vous supprimez IngressClass
. Par exemple :
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: <ic-name>
annotations:
oci-native-ingress.oraclecloud.com/delete-protection-enabled: "true"
spec:
...
Si vous supprimez une ressource IngressClass
et utilisez l'annotation pour préserver l'équilibreur de charge, le contrôleur de trafic entrant natif OCI conserve l'équilibreur de charge lui-même, mais efface les associations avec d'autres ressources de prise en charge (telles que les groupes de sécurité de réseau, les marqueurs, un pare-feu d'application Web). Le contrôleur de trafic entrant natif OCI supprime également le jeu dorsal default_ingress BackendSet
qu'il a créé.
Toutefois, notez que le contrôleur de trafic entrant natif OCI ne supprime pas les ressources d'équilibreur de charge OCI (écouteurs, jeux dorsaux) qu'il a créées pour les ressources Ingress
qui référencent actuellement les ressources IngressClass
supprimées. Par conséquent, avant de supprimer une ressource IngressClass
, supprimez d'abord toute ressource Ingress
qui référence IngressClass
dans son manifeste. Si vous ne supprimez pas d'abord ces ressources Ingress
, les ressources OCI créées pour elles continueront d'exister dans l'équilibreur de charge.
Application de marqueurs à l'équilibreur de charge
Vous pouvez spécifier que le contrôleur de trafic entrant natif OCI doit appliquer des marqueurs définis et des marqueurs à structure libre à un équilibreur de charge qu'il crée (pour une ressource IngressClass
) ou gère (s'il est spécifié par l'annotation oci-native-ingress.oraclecloud.com/id
). Le service de marquage vous permet de regrouper des ressources disparates dans différents compartiments et d'annoter des ressources avec vos propres métadonnées. Pour plus d'informations sur les marqueurs, voir Marquage des ressources liées à une grappe Kubernetes.
Application de marqueurs définis à l'équilibreur de charge
Les marqueurs définis sont configurés et gérés par un administrateur de marqueurs. Un marqueur défini se compose d'un espace de noms de marqueur, d'une clé et d'une valeur. L'espace de noms de marqueur et la définition de clé de marqueur doivent être configurés dans une location avant d'appliquer un marqueur défini à une ressource.
Pour spécifier que le contrôleur de trafic entrant natif OCI doit appliquer des marqueurs définis à l'équilibreur de charge, utilisez l'annotation oci-native-ingress.oraclecloud.com/defined-tags
dans le manifeste IngressClass
, dans le format suivant :
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: <ic-name>
annotations:
oci-native-ingress.oraclecloud.com/defined-tags: '{"<tag-namespace>": {"<tag-key>": "<tag-value>"}}'
spec:
...
où :
<tag-namespace>
est l'espace de noms de marqueur auquel le marqueur appartient.<tag-key>
est le nom d'un marqueur défini à appliquer à l'équilibreur de charge.<tag-value>
est une valeur pour le marqueur à partir d'une liste de valeurs prédéfinie, ou une nouvelle valeur, ou vide (selon la configuration du marqueur défini).
La valeur de l'annotation oci-native-ingress.oraclecloud.com/defined-tags
est une chaîne JSON, ce qui vous permet de spécifier plusieurs espaces de noms de marqueur, clés de marqueur et valeurs de marqueur au format JSON.
Par exemple :
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: my-ingress-class
annotations:
oci-native-ingress.oraclecloud.com/defined-tags: '{"Operations": {"CostCenter": "42", "Department": "001"}, "Sales": {"Region": "US"}}'
spec:
...
La modification d'un des marqueurs dans l'annotation oci-native-ingress.oraclecloud.com/defined-tags
du manifeste IngressClass
entraîne la réapplication du contrôleur de trafic entrant natif OCI à l'équilibreur de charge de tous les marqueurs définis spécifiés par l'annotation. Toutefois, si un marqueur défini contient une variable de marqueur, le contrôleur de trafic entrant natif OCI ne réapplique le marqueur défini à l'équilibreur de charge que si le marqueur n'est pas déjà présent.
Notez que pour permettre au contrôleur de trafic entrant natif OCI d'appliquer des marqueurs définis à un équilibreur de charge, une politique IAM appropriée doit exister pour permettre au contrôleur de trafic entrant natif OCI d'utiliser l'espace de noms de marqueur approprié. Pour plus d'informations, voir :
Application de marqueurs à structure libre à l'équilibreur de charge
Les marqueurs à structure libre ne sont pas gérés par un administrateur de marqueurs. Un marqueur à structure libre se compose d'une clé et d'une valeur. Contrairement aux marqueurs définis, les marqueurs à structure libre n'appartiennent pas à un espace de noms de marqueur.
Pour spécifier que le contrôleur de trafic entrant natif OCI doit appliquer des marqueurs à structure libre à l'équilibreur de charge, utilisez l'annotation oci-native-ingress.oraclecloud.com/freeform-tags
dans le manifeste IngressClass
, dans le format suivant :
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: <ic-name>
annotations:
oci-native-ingress.oraclecloud.com/freeform-tags: '{"<tag-key>": "<tag-value>"}'
spec:
...
où :
<tag-key>
est le nom du marqueur à structure libre à appliquer à l'équilibreur de charge.<tag-value>
est une valeur pour le marqueur à structure libre à appliquer à l'équilibreur de charge.
La valeur de l'annotation oci-native-ingress.oraclecloud.com/freeform-tags
est une chaîne JSON, ce qui vous permet de spécifier plusieurs clés de marqueur et valeurs de marqueur au format JSON.
Par exemple :
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: my-ingress-class
annotations:
oci-native-ingress.oraclecloud.com/freeform-tags: '{"Project": "Red", "Version": "Alpha"}'
spec:
...
La modification d'un des marqueurs dans l'annotation oci-native-ingress.oraclecloud.com/freeform-tags
du manifeste IngressClass
entraîne la réapplication du contrôleur de trafic entrant natif OCI à l'équilibreur de charge de tous les marqueurs à structure libre spécifiés par l'annotation.
Application des valeurs par défaut de marqueur à l'équilibreur de charge
Les valeurs par défaut de marqueur sont configurées pour un compartiment spécifique. Les valeurs par défaut de marqueur sont propres au compartiment. Les marqueurs par défaut spécifient des marqueurs définis qui sont appliqués automatiquement à toutes les ressources créées dans un compartiment particulier au moment de leur création.
Lors de l'utilisation du contrôleur de trafic entrant natif OCI version 1.4.0 (ou ultérieure), les valeurs par défaut de marqueur sont automatiquement appliquées aux équilibreurs de charge créés par le contrôleur de trafic entrant natif OCI. Par la suite, le contrôleur de trafic entrant natif OCI conserve une valeur par défaut de marqueur appliquée à un équilibreur de charge, sauf si l'une des conditions suivantes est remplie :
- Vous supprimez manuellement une valeur par défaut de marqueur qui a été appliquée automatiquement à un équilibreur de charge.
- Vous spécifiez une valeur par défaut de marqueur comme marqueur défini, à l'aide de l'annotation
oci-native-ingress.oraclecloud.com/defined-tags
(dans ce cas, le contrôleur de trafic entrant natif OCI traite la valeur par défaut de marqueur comme tout autre marqueur défini).
Notez que les valeurs par défaut de marqueur avec des valeurs appliquées par l'utilisateur ne sont pas prises en charge. Si une valeur de marqueur par défaut avec une valeur appliquée par l'utilisateur a été configurée pour un compartiment dans lequel le contrôleur de trafic entrant natif OCI doit créer ou gérer un équilibreur de charge, vous devez utiliser l'annotation oci-native-ingress.oraclecloud.com/defined-tags
pour spécifier la valeur par défaut de marqueur en tant que marqueur défini.
Pour les équilibreurs de charge créés à l'aide d'une version du contrôleur de trafic entrant natif OCI antérieure à la version 1.4.0, ou lors de l'utilisation de l'annotation oci-native-ingress.oraclecloud.com/id
pour spécifier que le contrôleur de trafic entrant natif OCI doit gérer un équilibreur de charge existant, notez que les valeurs par défaut de marqueur ne sont pas prises en charge. Dans les deux cas, pour appliquer ou conserver une valeur par défaut de marqueur, utilisez l'annotation oci-native-ingress.oraclecloud.com/defined-tags
pour spécifier la valeur par défaut de marqueur en tant que marqueur défini à la place.