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

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 à true, l'équilibreur de charge est conservé. S'il n'est pas spécifié, false est la valeur par défaut et l'équilibreur de charge est supprimé si IngressClass est supprimé.

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 à false, les demandes TLS se terminent au niveau du module d'écoute de l'équilibreur de charge et les demandes entre le jeu dorsal et les serveurs dorsaux sont échangées en texte brut.

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
Vous pouvez vérifier le statut des points de contrôle de disponibilité des pods en entrant :
kubectl get pods -o wide -w
Exemple de sortie :
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 :

  1. Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
  2. Dans la section metadata:, ajoutez un élément annotations: et réglez l'annotation oci-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:
    ...

    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:
    ...
  3. Dans la section rules: du manifeste de ressources Ingress, 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 ressource Ingress 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 
    
  4. 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 :

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'annotation oci-native-ingress.oraclecloud.com/id (sauf si vous avez défini oci-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 ressources Ingress, 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'annotation oci-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 :

  1. 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) :

    1. 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
    2. 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é.
  2. 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 :
      1. 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 omettre ca.cert, à condition d'inclure toute la chaîne de certificats comme valeur de tls.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
      2. Créez la ressource de clé secrète en entrant kubectl create -f <filename>.yaml

  3. Ajoutez la clé secrète Kubernetes à un manifeste de ressources Ingress :
    1. Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
    2. Dans la section spec: du manifeste, ajoutez un élément tls: 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
    3. 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
    4. 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 :

  1. 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.

  2. Notez l'OCID du certificat.
  3. Ajoutez l'OCID du certificat à un manifeste de ressource Ingress :
    1. Définissez une nouvelle ressource de trafic entrant dans un fichier .yaml. Voir Créer une ressource entrante.
    2. Dans la section metadata:, ajoutez un élément annotations: 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:
      ...
    3. Dans la section rules: du manifeste de ressources Ingress, 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
    4. 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 et oci-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'annotation oci-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 ressources Ingress)
    • applique l'annotation oci-native-ingress.oraclecloud.com/https-listener-port (si elle est présente dans le manifeste de ressources Ingress) pour créer un seul module d'écoute pour tout le trafic
  • Indépendamment des annotations oci-native-ingress.oraclecloud.com/http-listener-port et oci-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 ressource Ingress 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 ressource Ingress 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 et oci-native-ingress.oraclecloud.com/https-listener-port dans un manifeste de ressource Ingress qui définit uniquement les serveurs dorsaux HTTP, le contrôleur de trafic entrant natif OCI ignore l'annotation oci-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 et oci-native-ingress.oraclecloud.com/https-listener-port dans un manifeste de ressource Ingress qui définit uniquement les serveurs dorsaux HTTPS, le contrôleur de trafic entrant natif OCI ignore l'annotation oci-native-ingress.oraclecloud.com/http-listener-port et ne crée pas de module d'écoute HTTP.

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.