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 RessourceIngressClass
bezieht sich auf die RessourceIngressClassParameters
für die Ausprägung des zu erstellenden Load Balancers und gibt an, ob der native OCI-Ingress-Controller der Standardcontroller fürIngress
-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 neuenIngressClassParameters
-Ressource.name: <ns-name>
ist der Name des Namespace, in dem die neueIngressClassParameters
-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 neuenIngressClass
-Ressource.ingressclass.kubernetes.io/is-default-class: "<true|false>"
gibt an, ob dieseIngressClass
die zu verwendende Standard-IngressClass
ist, wenn eineIngress
-Ressource nicht explizit eineingressClassName
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
aufNamespace
gesetzt ist.name: <icp-name>
ist der Name der RessourceIngressClassParameters
, 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>
name: <i-name>
ist der Name der RessourceIngress
.ingressClassName: <ic-name>
ist der Name der zu verwendendenIngressClass
-Ressource. Die RessourceIngressClass
gibt sowohl den zu verwendenden Ingress-Controller als auch den Namen der RessourceIngressClassParameters
an, die Details des OCI-Load Balancers enthält, der für den nativen OCI-Ingress-Controller erstellt werden soll. WenningressClassName
nicht angegeben ist, wird der StandardIngressClass
des Clusters verwendet (IngressClass
mit der Annotationingressclass.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.
- Verwenden Sie
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.