Création de ressources IngressClassParameters, IngressClass et entrantes

Découvrez comment créer les ressources de trafic entrant Kubernetes requises pour utiliser le contrôleur de trafic entrant natif OCI.

Après avoir installé le contrôleur de trafic entrant natif OCI (en tant que programme autonome ou en tant que module complémentaire de grappe), vous devez créer un certain nombre de ressources Kubernetes différentes pour pouvoir l'utiliser :

  • Ressource IngressClassParameters : Cette ressource personnalisée spécifie les détails de l'équilibreur de charge OCI à créer pour le contrôleur de trafic entrant natif OCI.
  • Ressource IngressClass : Cette ressource est utilisée pour créer un nouvel équilibreur de charge. La ressource IngressClass fait référence à la ressource IngressClassParameters pour la forme de l'équilibreur de charge à créer et spécifie si le contrôleur de trafic entrant natif OCI est le contrôleur par défaut pour les ressources Ingress.
  • Ressource Ingress : Cette ressource spécifie des règles pour acheminer le trafic externe vers les services dorsaux.

Créez chacune des ressources à son tour en définissant la ressource dans un fichier .yaml comme indiqué dans cette rubrique, puis en exécutant la commande kubectl create pour créer chaque ressource.

Créer une ressource IngressClassParameters

Utilisez la ressource IngressClassParameters personnalisée pour spécifier les détails de l'équilibreur de charge OCI à créer pour le contrôleur de trafic entrant natif OCI.

Définissez la ressource dans un fichier .yaml. Voici un exemple minimal :

apiVersion: "ingress.oraclecloud.com/v1beta1"
kind: IngressClassParameters
metadata:
  name: <icp-name>
  namespace: <ns-name>
spec:
  compartmentId: "<compartment-ocid>"
  subnetId: "<subnet-ocid>"
  loadBalancerName: "<lb-name>"
  isPrivate: false
  maxBandwidthMbps: <max-bw>
  minBandwidthMbps: <min-bw>
  reservedPublicAddressId: <reserved-ip-ocid>

où :

  • name: <icp-name> est le nom de la nouvelle ressource IngressClassParameters
  • name: <ns-name> est le nom de l'espace de noms dans lequel créer la nouvelle ressource IngressClassParameters.
  • compartmentId: "<compartment-ocid>" est l'OCID du compartiment auquel le nouvel équilibreur de charge doit appartenir.
  • subnetId: "<subnet-ocid>" est l'OCID du sous-réseau de l'équilibreur de charge.
  • loadBalancerName: "<lb-name>" est le nom du nouvel équilibreur de charge.
  • maxBandwidthMbps: <max-bw> est la quantité supérieure de bande passante que le nouvel équilibreur de charge doit prendre en charge pendant les pointes de charge de travail.
  • minBandwidthMbps: <min-bw> représente la quantité de bande passante que le nouvel équilibreur de charge doit toujours disposer pour assurer une disponibilité instantanée pour les charges de travail.
  • reservedPublicAddressId: <reserved-ip-ocid> est facultativement l'OCID d'une ressource d'adresse IP publique réservée existante à utiliser pour l'équilibreur de charge. Si vous ne spécifiez pas d'adresse IP publique réservée, une adresse IP aléatoire est affectée à l'équilibreur de charge. Pour plus d'informations sur la création d'une adresse IP publique réservée, voir Création d'une adresse IP publique réservée.

Par exemple :

apiVersion: "ingress.oraclecloud.com/v1beta1"
kind: IngressClassParameters
metadata:
  name: native-ic-params
  namespace: acme-namespace
spec:
  compartmentId: "ocid1.compartment.oc1..aaaaaaaa______ddq"
  subnetId: "ocid1.subnet.oc1.iad.aaaaaaaa______dba"
  loadBalancerName: "native-ic-lb"
  isPrivate: false
  maxBandwidthMbps: 400
  minBandwidthMbps: 100

Créez la ressource en entrant kubectl create -f <filename>.yaml

Créer une ressource IngressClass

Utilisez la ressource IngressClass pour associer une ressource Ingress au contrôleur de trafic entrant natif OCI et à la ressource IngressClassParameters. Vous pouvez également utiliser la ressource IngressClass pour spécifier si le contrôleur de trafic entrant natif OCI est le contrôleur par défaut pour les ressources Ingress.

Définissez la ressource dans un fichier .yaml. Voici un exemple minimal :

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: <ic-name>
  annotations:
    ingressclass.kubernetes.io/is-default-class: "<true|false>"
spec:
  controller: oci.oraclecloud.com/native-ingress-controller
  parameters:
    scope: Namespace
    namespace: <ns-name>
    apiGroup: ingress.oraclecloud.com
    kind: ingressclassparameters
    name: <icp-name>

où :

  • name: <ic-name> est le nom de la nouvelle ressource IngressClass
  • ingressclass.kubernetes.io/is-default-class: "<true|false>" indique si cette valeur IngressClass est la valeur IngressClass par défaut à utiliser si une ressource Ingress ne spécifie pas explicitement une valeur ingressClassName. Il est recommandé de spécifier une valeur par défaut pour IngressClass.
  • controller: oci.oraclecloud.com/native-ingress-controller indique le contrôleur de trafic entrant natif OCI en tant que contrôleur de trafic entrant à utiliser
  • namespace: <ns-name> est le nom de l'espace de noms contenant les paramètres à utiliser lorsque .spec.parameters.scope est réglé à Namespace.
  • name: <icp-name> est le nom de la ressource IngressClassParameters qui spécifie les détails de l'équilibreur de charge OCI à créer pour le contrôleur de trafic entrant natif OCI.

Par exemple :

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: native-ic-ingress-class
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: oci.oraclecloud.com/native-ingress-controller
  parameters:
    scope: Namespace
    namespace: acme-namespace
    apiGroup: ingress.oraclecloud.com
    kind: ingressclassparameters
    name: native-ic-params

Créez la ressource en entrant kubectl create -f <filename>.yaml

Créer une ressource entrante

Utilisez la ressource Ingress pour spécifier des règles pour acheminer le trafic externe vers les services dorsaux.

Définissez la ressource dans un fichier .yaml. Voici un exemple minimal :

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <i-name>
spec:
  ingressClassName: <ic-name>
  rules:
    <ingress-rule>
où :
  • name: <i-name> est le nom de la ressource Ingress.
  • ingressClassName: <ic-name> est le nom de la ressource IngressClass à utiliser. La ressource IngressClass spécifie à la fois le contrôleur de trafic entrant à utiliser et le nom de la ressource IngressClassParameters qui contient les détails de l'équilibreur de charge OCI à créer pour le contrôleur de trafic entrant natif OCI. Si ingressClassName n'est pas spécifié, IngressClass par défaut de la grappe est utilisé (IngressClass contenant l'annotation ingressclass.kubernetes.io/is-default-class: "true").
  • <ingress-rule> est une règle comprenant facultativement un hôte et/ou un (ou plusieurs) éléments de chemin. Chaque chemin comporte un serveur dorsal (un nom de service et un numéro de port). Le contrôleur de trafic entrant achemine les demandes qui correspondent au nom d'hôte d'une règle (si spécifié) et au chemin d'accès au serveur dorsal associé. Lorsque vous spécifiez un chemin dans une règle :
    • Utilisez pathType: Exact pour indiquer que le chemin de la demande entrante doit correspondre exactement au chemin de la règle pour que la demande soit acheminée vers le serveur dorsal associé à la règle
    • utiliser pathType:Prefix pour indiquer que la partie de début du chemin de la demande entrante doit correspondre au chemin de la règle pour que la demande soit acheminée vers le serveur dorsal associé à la règle

    Voir Spécification des règles de routage pour le contrôleur de trafic entrant natif OCI.

Par exemple :

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: native-ic-ingress
spec:
  ingressClassName: native-ic-ingress-class
  rules:
    - host: "foo.bar.com"
      http:
        paths:
          - pathType: Exact
            path: "/testecho1"
            backend:
              service:
                name: testecho1
                port:
                  number: 80

Créez la ressource en entrant kubectl create -f <filename>.yaml