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 risorsa IngressClass fa riferimento alla risorsa IngressClassParameters per la forma del load balancer da creare e specifica se il controller di entrata nativo OCI è il controller predefinito per le risorse Ingress.
  • 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 risorsa IngressClassParameters
  • name: <ns-name> è il nome dello spazio di nomi in cui creare la nuova risorsa IngressClassParameters.
  • 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 risorsa IngressClass
  • ingressclass.kubernetes.io/is-default-class: "<true|false>" indica se questo IngressClass è il IngressClass predefinito da utilizzare se una risorsa Ingress non specifica in modo esplicito un ingressClassName. Si consiglia di specificare un valore predefinito IngressClass.
  • controller: oci.oraclecloud.com/native-ingress-controller specifica il controller di entrata nativo OCI come controller di entrata da utilizzare
  • namespace: <ns-name> è il nome dello spazio di nomi che contiene i parametri da utilizzare quando .spec.parameters.scope è impostato su Namespace.
  • name: <icp-name> è il nome della risorsa IngressClassParameters 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>
Dove:
  • name: <i-name> è il nome della risorsa Ingress.
  • ingressClassName: <ic-name> è il nome della risorsa IngressClass da utilizzare. La risorsa IngressClass specifica sia il controller in entrata da utilizzare sia il nome della risorsa IngressClassParameters che contiene i dettagli del load balancer OCI da creare per il controller in entrata nativo OCI. Se ingressClassName non viene specificato, viene utilizzato il valore predefinito IngressClass del cluster (l'annotazione IngressClass con l'annotazione ingressclass.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.

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