Création de ressources IngressClassParameters, IngressClass et entrantes

Découvrez comment créer les ressources liées à l'entrée Kubernetes requises pour utiliser le contrôleur d'entrée natif OCI.

Après avoir installé le contrôleur d'entrée natif OCI (soit en tant que programme autonome, soit en tant qu'extension de cluster), vous devez créer un certain nombre de ressources Kubernetes différentes afin de l'utiliser :

  • Ressource IngressClassParameters : cette ressource personnalisée indique les détails de l'équilibreur de charge OCI à créer pour le contrôleur d'entrée natif OCI.
  • Ressource IngressClass : cette ressource est utilisée pour créer un équilibreur de charge. La ressource IngressClass fait référence à la ressource IngressClassParameters pour la forme de l'équilibreur de charge à créer et indique si le contrôleur d'entrée natif OCI est le contrôleur par défaut pour les ressources Ingress.
  • Ressource Ingress : cette ressource indique les règles permettant d'acheminer le trafic externe vers les services back-end.

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 de création kubectl pour créer chaque ressource.

Créer une ressource IngressClassParameters

Utilisez la ressource IngressClassParameters personnalisée afin d'indiquer les détails de l'équilibreur de charge OCI à créer pour le contrôleur d'entrée natif OCI.

Définissez la ressource dans un fichier .yaml. 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 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 à attribuer au nouvel équilibreur de charge.
  • maxBandwidthMbps: <max-bw> correspond à la quantité supérieure de bande passante que le nouvel équilibreur de charge doit prendre en charge pendant la période de pic de charge globale.
  • minBandwidthMbps: <min-bw> correspond à la quantité de bande passante que le nouvel équilibreur de charge doit toujours disposer pour fournir une préparation instantanée aux charges globales.
  • reservedPublicAddressId: <reserved-ip-ocid> est éventuellement l'OCID d'une ressource d'adresse IP publique réservée existante à utiliser pour l'équilibreur de charge. Si vous n'indiquez 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, reportez-vous à 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 saisissant kubectl create -f <filename>.yaml

Créer une ressource IngressClass

Utilisez la ressource IngressClass pour associer une ressource Ingress au contrôleur d'entrée natif OCI et à la ressource IngressClassParameters. Vous pouvez également utiliser la ressource IngressClass pour indiquer si le contrôleur d'entrée natif OCI est le contrôleur par défaut des ressources Ingress.

Définissez la ressource dans un fichier .yaml. 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 IngressClass est la valeur IngressClass par défaut à utiliser si une ressource Ingress n'indique pas explicitement une valeur ingressClassName. Il est recommandé d'indiquer une valeur par défaut IngressClass.
  • controller: oci.oraclecloud.com/native-ingress-controller indique le contrôleur d'entrée natif OCI en tant que contrôleur d'entrée à utiliser.
  • namespace: <ns-name> est le nom de l'espace de noms contenant les paramètres à utiliser lorsque .spec.parameters.scope est défini sur Namespace.
  • name: <icp-name> est le nom de la ressource IngressClassParameters qui indique les détails de l'équilibreur de charge OCI à créer pour le contrôleur d'entrée 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 saisissant kubectl create -f <filename>.yaml

Créer une ressource entrante

Utilisez la ressource Ingress pour indiquer des règles afin d'acheminer le trafic externe vers les services back-end.

Définissez la ressource dans un fichier .yaml. 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 indique à la fois le contrôleur d'entrée à 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 d'entrée natif OCI. Si ingressClassName n'est pas spécifié, le paramètre IngressClass par défaut du cluster est utilisé (IngressClass avec l'annotation ingressclass.kubernetes.io/is-default-class: "true").
  • <ingress-rule> est une règle comprenant éventuellement un hôte et/ou un (ou plusieurs) éléments de chemin. Chaque chemin possède un back-end (nom de service et numéro de port). Le contrôleur entrant achemine les demandes qui correspondent au nom d'hôte d'une règle (si indiqué) et au chemin d'accès au back-end associé. Lorsque vous indiquez 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 back-end associé à la règle
    • utilisez 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 back-end associé à la règle

    Reportez-vous à Spécification de règles de routage pour le contrôleur 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 saisissant kubectl create -f <filename>.yaml