Criando Recursos IngressClassParameters, IngressClass e de Entrada

Descubra como criar os recursos relacionados à entrada do Kubernetes necessários para usar o controlador de entrada nativo do OCI.

Depois de instalar o controlador de entrada nativo do OCI (como um programa independente ou como complemento de cluster), você precisa criar vários recursos diferentes do Kubernetes para usá-lo:

  • Recurso IngressClassParameters: Esse recurso personalizado especifica detalhes do balanceador de carga do OCI a ser criado para o controlador de entrada nativo do OCI.
  • Recurso IngressClass: Este recurso é usado para criar um novo balanceador de carga. O recurso IngressClass refere-se ao recurso IngressClassParameters da forma do balanceador de carga a ser criado e especifica se o controlador de entrada nativo do OCI é o controlador padrão para recursos Ingress.
  • Recurso Ingress: Esse recurso especifica regras para rotear o tráfego externo para serviços de backend.

Crie cada um dos recursos, por sua vez, definindo o recurso em um arquivo .yaml, conforme mostrado neste tópico, e, em seguida, executando o comando de criação kubectl para criar cada recurso.

Criar recurso IngressClassParameters

Use o recurso IngressClassParameters personalizado para especificar detalhes do balanceador de carga do OCI a ser criado para o controlador de entrada nativo do OCI.

Defina o recurso em um arquivo .yaml. Este é um exemplo mínimo:

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>

em que:

  • name: <icp-name> é o nome do novo recurso IngressClassParameters
  • name: <ns-name> é o nome do namespace no qual será criado o novo recurso IngressClassParameters.
  • compartmentId: "<compartment-ocid>" é o OCID do compartimento ao qual você deseja que o novo balanceador de carga pertença.
  • subnetId: "<subnet-ocid>" é o OCID da sub-rede do balanceador de carga.
  • loadBalancerName: "<lb-name>" é o nome a ser fornecido ao novo balanceador de carga.
  • maxBandwidthMbps: <max-bw> é a quantidade superior de largura de banda que você deseja que o novo balanceador de carga suporte durante o tempo de pico de carga de trabalho.
  • minBandwidthMbps: <min-bw> é a quantidade de largura de banda que você deseja que o novo balanceador de carga sempre tenha disponível para fornecer preparação instantânea para cargas de trabalho.
  • reservedPublicAddressId: <reserved-ip-ocid> é opcionalmente o OCID de um recurso de endereço IP público reservado existente a ser usado para o balanceador de carga. Se você não especificar um endereço IP público reservado, o balanceador de carga receberá um endereço IP aleatório. Para obter mais informações sobre como criar um endereço IP público reservado, consulte Criando um IP Público Reservado.

Por exemplo:

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

Crie o recurso digitando kubectl create -f <filename>.yaml

Criar recurso IngressClass

Use o recurso IngressClass para associar um recurso Ingress ao controlador de entrada nativo do OCI e ao recurso IngressClassParameters. Você também pode usar o recurso IngressClass para especificar se o controlador de entrada nativo do OCI é o controlador padrão para recursos Ingress.

Defina o recurso em um arquivo .yaml. Este é um exemplo mínimo:

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>

em que:

  • name: <ic-name> é o nome do novo recurso IngressClass
  • ingressclass.kubernetes.io/is-default-class: "<true|false>" indica se esse IngressClass é o IngressClass padrão a ser usado se um recurso Ingress não especificar explicitamente um ingressClassName. Recomenda-se especificar um IngressClass. padrão
  • controller: oci.oraclecloud.com/native-ingress-controller especifica o controlador de entrada nativo do OCI como o controlador de entrada a ser usado
  • namespace: <ns-name> é o nome do namespace que contém os parâmetros a serem usados quando .spec.parameters.scope é definido como Namespace.
  • name: <icp-name> é o nome do recurso IngressClassParameters que especifica detalhes do balanceador de carga do OCI a ser criado para o controlador de entrada nativo do OCI.

Por exemplo:

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

Crie o recurso digitando kubectl create -f <filename>.yaml

Criar recurso de Entrada

Use o recurso Ingress para especificar regras para rotear o tráfego externo para serviços de backend.

Defina o recurso em um arquivo .yaml. Este é um exemplo mínimo:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <i-name>
spec:
  ingressClassName: <ic-name>
  rules:
    <ingress-rule>
em que:
  • name: <i-name> é o nome do recurso Ingress.
  • ingressClassName: <ic-name> é o nome do recurso IngressClass a ser usado. O recurso IngressClass especifica o controlador de entrada a ser usado e o nome do recurso IngressClassParameters que contém detalhes do balanceador de carga do OCI a ser criado para o controlador de entrada nativo do OCI. Se ingressClassName não for especificado, o IngressClass padrão do cluster será usado (o IngressClass que tem a anotação ingressclass.kubernetes.io/is-default-class: "true").
  • <ingress-rule> é uma regra que inclui opcionalmente um host e/ou um (ou mais) elementos de caminho. Cada caminho tem um backend (um nome de serviço e um número de porta). O controlador de entrada roteia solicitações que correspondem ao nome de host de uma regra (se especificado) e ao caminho para o backend associado. Ao especificar um caminho em uma regra:
    • use pathType: Exact para indicar que o caminho da solicitação de entrada deve corresponder exatamente ao caminho na regra para que a solicitação seja roteada para o backend associado à regra
    • use pathType:Prefix para indicar que a parte inicial do caminho da solicitação de entrada deve corresponder ao caminho na regra para que a solicitação seja roteada para o backend associado à regra

    Consulte Especificando Regras de Roteamento para o Controlador de Entrada Nativo do OCI.

Por exemplo:

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

Crie o recurso digitando kubectl create -f <filename>.yaml