Creazione di risorse IngressClassParameters, IngressClass e in entrata
Scopri come creare le risorse correlate all'ingresso Kubernetes necessarie per utilizzare il controller in entrata nativo OCI.
Dopo aver installato il controller di entrata nativo OCI (sia come programma standalone che come componente aggiuntivo cluster), è necessario creare una serie di risorse Kubernetes diverse per utilizzarlo:
- Risorsa
IngressClassParameters
: questa risorsa personalizzata specifica i dettagli del load balancer OCI da creare per il controller di entrata nativo OCI. - Risorsa
IngressClass
: questa risorsa viene utilizzata per creare un nuovo load balancer. La risorsaIngressClass
fa riferimento alla risorsaIngressClassParameters
per la forma del load balancer da creare e specifica se il controller di entrata nativo OCI è il controller predefinito per le risorseIngress
. - Risorsa
Ingress
: questa risorsa specifica le regole per instradare il traffico esterno ai servizi backend.
Creare ciascuna delle risorse a sua volta definendo la risorsa in un file .yaml come mostrato in questo argomento, quindi eseguendo il comando di creazione kubectl per creare ogni risorsa.
Crea risorsa IngressClassParameters
Utilizzare la risorsa IngressClassParameters
personalizzata per specificare i dettagli del load balancer OCI da creare per il controller di entrata nativo OCI.
Definire la risorsa in un file .yaml. Ecco un esempio minimo:
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>
Dove:
name: <icp-name>
è il nome della nuova risorsaIngressClassParameters
name: <ns-name>
è il nome dello spazio di nomi in cui creare la nuova risorsaIngressClassParameters
.compartmentId: "<compartment-ocid>"
è l'OCID del compartimento a cui si desidera appartenga il nuovo load balancer.subnetId: "<subnet-ocid>"
è l'OCID della subnet del load balancer.loadBalancerName: "<lb-name>"
è il nome da assegnare al nuovo load balancer.maxBandwidthMbps: <max-bw>
è la quantità superiore di larghezza di banda che desideri che il nuovo load balancer supporti durante il periodo di picco del carico di lavoro.minBandwidthMbps: <min-bw>
è la quantità di larghezza di banda che desideri che il nuovo load balancer abbia sempre a disposizione per garantire disponibilità immediata per i carichi di lavoro.reservedPublicAddressId: <reserved-ip-ocid>
è facoltativamente l'OCID di una risorsa di indirizzo IP pubblico riservato esistente da utilizzare per il load balancer. Se non si specifica un indirizzo IP pubblico riservato, al load balancer viene assegnato un indirizzo IP casuale. Per ulteriori informazioni sulla creazione di un indirizzo IP pubblico riservato, vedere Creating a Reserved Public IP.
Ad esempio:
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
Creare la risorsa immettendo kubectl create -f <filename>.yaml
Crea risorsa IngressClass
Utilizzare la risorsa IngressClass
per associare una risorsa Ingress
al controller di entrata nativo OCI e alla risorsa IngressClassParameters
. È inoltre possibile utilizzare la risorsa IngressClass
per specificare se il controller di entrata nativo OCI è il controller predefinito per le risorse Ingress
.
Definire la risorsa in un file .yaml. Ecco un esempio minimo:
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>
Dove:
name: <ic-name>
è il nome della nuova risorsaIngressClass
ingressclass.kubernetes.io/is-default-class: "<true|false>"
indica se questoIngressClass
è ilIngressClass
predefinito da utilizzare se una risorsaIngress
non specifica in modo esplicito uningressClassName
. Si consiglia di specificare un valore predefinitoIngressClass.
controller: oci.oraclecloud.com/native-ingress-controller
specifica il controller di entrata nativo OCI come controller di entrata da utilizzarenamespace: <ns-name>
è il nome dello spazio di nomi che contiene i parametri da utilizzare quando.spec.parameters.scope
è impostato suNamespace
.name: <icp-name>
è il nome della risorsaIngressClassParameters
che specifica i dettagli del load balancer OCI da creare per il controller di entrata nativo OCI.
Ad esempio:
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
Creare la risorsa immettendo kubectl create -f <filename>.yaml
Crea risorsa in entrata
Utilizzare la risorsa Ingress
per specificare le regole per instradare il traffico esterno ai servizi backend.
Definire la risorsa in un file .yaml. Ecco un esempio minimo:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <i-name>
spec:
ingressClassName: <ic-name>
rules:
<ingress-rule>
name: <i-name>
è il nome della risorsaIngress
.ingressClassName: <ic-name>
è il nome della risorsaIngressClass
da utilizzare. La risorsaIngressClass
specifica sia il controller in entrata da utilizzare sia il nome della risorsaIngressClassParameters
che contiene i dettagli del load balancer OCI da creare per il controller in entrata nativo OCI. SeingressClassName
non viene specificato, viene utilizzato il valore predefinitoIngressClass
del cluster (l'annotazioneIngressClass
con l'annotazioneingressclass.kubernetes.io/is-default-class: "true"
).<ingress-rule>
è una regola che facoltativamente comprende un host e/o uno o più elementi di percorso. Ogni percorso dispone di un backend (un nome di servizio e un numero di porta). Il controller in entrata instrada le richieste che corrispondono al nome host di una regola (se specificato) e al percorso del backend associato. Quando si specifica un percorso in una regola:- utilizzare
pathType: Exact
per indicare che il percorso della richiesta in entrata deve corrispondere esattamente al percorso della regola affinché la richiesta venga instradata al backend associato della regola - utilizzare
pathType:Prefix
per indicare che la parte iniziale del percorso della richiesta in entrata deve corrispondere al percorso nella regola per la richiesta da instradare al backend associato della regola
Vedere Specifica delle regole di instradamento per il controller di entrata nativo OCI.
- utilizzare
Ad esempio:
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
Creare la risorsa immettendo kubectl create -f <filename>.yaml