IngressClassParameters-, IngressClass- und Ingress-Ressourcen erstellen

Erfahren Sie, wie Sie die ingress-bezogenen Kubernetes-Ressourcen erstellen, die für die Verwendung des nativen Ingress-Controllers von OCI erforderlich sind.

Nachdem Sie den nativen OCI-Ingress-Controller (entweder als Standalone-Programm oder als Cluster-Add-on) installiert haben, müssen Sie eine Reihe verschiedener Kubernetes-Ressourcen erstellen, um ihn zu verwenden:

  • IngressClassParameters-Ressource: Diese benutzerdefinierte Ressource gibt Details des OCI-Load Balancers an, der für den nativen OCI-Ingress-Controller erstellt werden soll.
  • IngressClass-Ressource: Mit dieser Ressource wird ein neuer Load Balancer erstellt. Die Ressource IngressClass bezieht sich auf die Ressource IngressClassParameters für die Ausprägung des zu erstellenden Load Balancers und gibt an, ob der native OCI-Ingress-Controller der Standardcontroller für Ingress-Ressourcen ist.
  • Ingress-Ressource: Diese Ressource gibt Regeln an, mit denen externer Traffic an Backend-Services weitergeleitet wird.

Erstellen Sie wiederum jede der Ressourcen, indem Sie die Ressource in einer .yaml-Datei definieren, wie in diesem Thema dargestellt, und führen Sie dann den kubectl create-Befehl aus, um jede Ressource zu erstellen.

Ressource IngressClassParameters erstellen

Mit der benutzerdefinierten Ressource IngressClassParameters können Sie Details des OCI-Load Balancers angeben, der für den nativen OCI-Ingress-Controller erstellt werden soll.

Definieren Sie die Ressource in einer .yaml-Datei. Im Folgenden finden Sie ein minimales Beispiel:

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>

Hierbei gilt:

  • name: <icp-name> ist der Name der neuen IngressClassParameters-Ressource.
  • name: <ns-name> ist der Name des Namespace, in dem die neue IngressClassParameters-Ressource erstellt werden soll.
  • compartmentId: "<compartment-ocid>" ist die OCID des Compartments, zu dem der neue Load Balancer gehören soll.
  • subnetId: "<subnet-ocid>" ist die OCID des Subnetzes des Load Balancers.
  • loadBalancerName: "<lb-name>" ist der Name für den neuen Load Balancer.
  • maxBandwidthMbps: <max-bw> ist die obere Bandbreite, die der neue Load Balancer während der Spitzenlast unterstützen soll.
  • minBandwidthMbps: <min-bw> ist die Bandbreite, die der neue Load Balancer immer zur Verfügung haben soll, um sofortige Bereitschaft für Workloads bereitzustellen.
  • reservedPublicAddressId: <reserved-ip-ocid> ist optional die OCID einer vorhandenen reservierten öffentlichen IP-Adressressource, die für den Load Balancer verwendet werden soll. Wenn Sie keine reservierte öffentliche IP-Adresse angeben, wird dem Load Balancer eine zufällige IP-Adresse zugewiesen. Weitere Informationen zum Erstellen einer reservierten öffentlichen IP-Adresse finden Sie unter Reservierte öffentliche IP erstellen.

Beispiel:

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

Erstellen Sie die Ressource, indem Sie kubectl create -f <filename>.yaml eingeben.

Ressource IngressClass erstellen

Verwenden Sie die Ressource IngressClass, um eine Ingress-Ressource mit dem nativen OCI-Ingress-Controller und der Ressource IngressClassParameters zu verknüpfen. Mit der Ressource IngressClass können Sie auch angeben, ob der native OCI-Ingress-Controller der Standardcontroller für Ingress-Ressourcen ist.

Definieren Sie die Ressource in einer .yaml-Datei. Im Folgenden finden Sie ein minimales Beispiel:

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>

Hierbei gilt:

  • name: <ic-name> ist der Name der neuen IngressClass-Ressource.
  • ingressclass.kubernetes.io/is-default-class: "<true|false>" gibt an, ob diese IngressClass die zu verwendende Standard-IngressClass ist, wenn eine Ingress-Ressource nicht explizit eine ingressClassName angibt. Es wird empfohlen, eine Standard-IngressClass. anzugeben.
  • controller: oci.oraclecloud.com/native-ingress-controller gibt den nativen OCI-Ingress-Controller als zu verwendenden Ingress-Controller an.
  • namespace: <ns-name> ist der Name des Namespace mit den Parametern, die verwendet werden sollen, wenn .spec.parameters.scope auf Namespace gesetzt ist.
  • name: <icp-name> ist der Name der Ressource IngressClassParameters, die Details des OCI-Load Balancers angibt, der für den nativen OCI-Ingress-Controller erstellt werden soll.

Beispiel:

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

Erstellen Sie die Ressource, indem Sie kubectl create -f <filename>.yaml eingeben.

Ingress-Ressource erstellen

Verwenden Sie die Ressource Ingress, um Regeln zum Weiterleiten von externem Traffic an Backend-Services anzugeben.

Definieren Sie die Ressource in einer .yaml-Datei. Im Folgenden finden Sie ein minimales Beispiel:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <i-name>
spec:
  ingressClassName: <ic-name>
  rules:
    <ingress-rule>
Hierbei gilt:
  • name: <i-name> ist der Name der Ressource Ingress.
  • ingressClassName: <ic-name> ist der Name der zu verwendenden IngressClass-Ressource. Die Ressource IngressClass gibt sowohl den zu verwendenden Ingress-Controller als auch den Namen der Ressource IngressClassParameters an, die Details des OCI-Load Balancers enthält, der für den nativen OCI-Ingress-Controller erstellt werden soll. Wenn ingressClassName nicht angegeben ist, wird der Standard IngressClass des Clusters verwendet (IngressClass mit der Annotation ingressclass.kubernetes.io/is-default-class: "true").
  • <ingress-rule> ist eine Regel, die optional einen Host und/oder ein (oder mehrere) Pfadelemente umfasst. Jeder Pfad hat ein Backend (einen Servicenamen und eine Portnummer). Der Ingress-Controller leitet Anforderungen weiter, die dem Hostnamen einer Regel (sofern angegeben) und dem Pfad zum zugehörigen Backend entsprechen. Wenn Sie einen Pfad in einer Regel angeben:
    • Verwenden Sie pathType: Exact, um anzugeben, dass der eingehende Anforderungspfad genau mit dem Pfad in der Regel übereinstimmen muss, damit die Anforderung an das verknüpfte Backend der Regel weitergeleitet wird
    • Verwenden Sie pathType:Prefix, um anzugeben, dass der erste Teil des eingehenden Anforderungspfads mit dem Pfad in der Regel übereinstimmen muss, damit die Anforderung an das verknüpfte Backend der Regel weitergeleitet wird

    Siehe Routingregeln für den nativen OCI-Ingress-Controller angeben.

Beispiel:

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

Erstellen Sie die Ressource, indem Sie kubectl create -f <filename>.yaml eingeben.