Creación de recursos de entrada, IngressClassParameters y IngressClass

Descubra cómo crear los recursos relacionados con la entrada de Kubernetes necesarios para utilizar el controlador de entrada nativo de OCI.

Una vez instalado el controlador de entrada nativo de OCI (ya sea como programa autónomo o como complemento de cluster), debe crear una serie de recursos de Kubernetes diferentes para utilizarlo:

  • Recurso IngressClassParameters: este recurso personalizado especifica los detalles del equilibrador de carga de OCI que se crearán para el controlador de entrada nativo de OCI.
  • Recurso IngressClass: este recurso se utiliza para crear un nuevo equilibrador de carga. El recurso IngressClass hace referencia al recurso IngressClassParameters para la unidad del equilibrador de carga que se va a crear y especifica si el controlador de entrada nativo de OCI es el controlador por defecto para los recursos Ingress.
  • Recurso Ingress: este recurso especifica reglas para enrutar el tráfico externo a los servicios de backend.

Cree cada uno de los recursos a su vez definiendo el recurso en un archivo .yaml como se muestra en este tema y, a continuación, ejecutando el comando create de kubectl para crear cada recurso.

Crear recurso IngressClassParameters

Utilice el recurso IngressClassParameters personalizado para especificar los detalles del equilibrador de carga de OCI que se van a crear para el controlador de entrada nativo de OCI.

Defina el recurso en un archivo .yaml. Este es un ejemplo 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>

donde:

  • name: <icp-name> es el nombre del nuevo recurso IngressClassParameters
  • name: <ns-name> es el nombre del espacio de nombres en el que se va a crear el nuevo recurso IngressClassParameters.
  • compartmentId: "<compartment-ocid>" es el OCID del compartimento al que desea que pertenezca el nuevo equilibrador de carga.
  • subnetId: "<subnet-ocid>" es el OCID de la subred del equilibrador de carga.
  • loadBalancerName: "<lb-name>" es el nombre que debe proporcionar al nuevo equilibrador de carga.
  • maxBandwidthMbps: <max-bw> es la cantidad superior de ancho de banda que desea que soporte el nuevo equilibrador de carga durante el tiempo de máxima carga de trabajo.
  • minBandwidthMbps: <min-bw> es la cantidad de ancho de banda que desea que el nuevo equilibrador de carga tenga siempre disponible para proporcionar una preparación instantánea para las cargas de trabajo.
  • reservedPublicAddressId: <reserved-ip-ocid> es opcionalmente el OCID de un recurso de dirección IP pública reservada existente que se utilizará para el equilibrador de carga. Si no especifica una dirección IP pública reservada, al equilibrador de carga se le asigna una dirección IP aleatoria. Para obtener más información sobre la creación de una dirección IP pública reservada, consulte Creación de una IP pública reservada.

Por ejemplo:

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

Cree el recurso introduciendo kubectl create -f <filename>.yaml

Crear recurso IngressClass

Utilice el recurso IngressClass para asociar un recurso Ingress al controlador de entrada nativo de OCI y al recurso IngressClassParameters. También puede utilizar el recurso IngressClass para especificar si el controlador de entrada nativo de OCI es el controlador por defecto para los recursos Ingress.

Defina el recurso en un archivo .yaml. Este es un ejemplo 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>

donde:

  • name: <ic-name> es el nombre del nuevo recurso IngressClass
  • ingressclass.kubernetes.io/is-default-class: "<true|false>" indica si este IngressClass es el valor por defecto IngressClass que se utilizará si un recurso Ingress no especifica explícitamente un ingressClassName. Se recomienda especificar un valor por defecto IngressClass.
  • controller: oci.oraclecloud.com/native-ingress-controller especifica el controlador de entrada nativo de OCI como controlador de entrada que se va a utilizar
  • namespace: <ns-name> es el nombre del espacio de nombres que contiene los parámetros que se van a utilizar cuando .spec.parameters.scope se define en Namespace.
  • name: <icp-name> es el nombre del recurso IngressClassParameters que especifica los detalles del equilibrador de carga de OCI que se van a crear para el controlador de entrada nativo de OCI.

Por ejemplo:

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

Cree el recurso introduciendo kubectl create -f <filename>.yaml

Crear recurso de entrada

Utilice el recurso Ingress para especificar reglas para enrutar el tráfico externo a los servicios de backend.

Defina el recurso en un archivo .yaml. Este es un ejemplo mínimo:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: <i-name>
spec:
  ingressClassName: <ic-name>
  rules:
    <ingress-rule>
donde:
  • name: <i-name> es el nombre del recurso Ingress.
  • ingressClassName: <ic-name> es el nombre del recurso IngressClass que se va a utilizar. El recurso IngressClass especifica el controlador de entrada que se va a utilizar y el nombre del recurso IngressClassParameters que contiene detalles del equilibrador de carga de OCI que se va a crear para el controlador de entrada nativo de OCI. Si no se especifica ingressClassName, se utiliza el valor por defecto IngressClass del cluster (el IngressClass que tiene la anotación ingressclass.kubernetes.io/is-default-class: "true").
  • <ingress-rule> es una regla que incluye opcionalmente un host y/o uno (o más) elementos de ruta. Cada ruta tiene un backend (un nombre de servicio y un número de puerto). El controlador de entrada direcciona las solicitudes que coinciden con el nombre de host de una regla (si se especifica) y la ruta al backend asociado. Al especificar una ruta de acceso en una regla:
    • utilice pathType: Exact para indicar que la ruta de acceso de solicitud entrante debe coincidir exactamente con la ruta de acceso de la regla para que la solicitud se direccione al backend asociado de la regla
    • utilice pathType:Prefix para indicar que la parte inicial de la ruta de acceso de solicitud entrante debe coincidir con la ruta de acceso de la regla para que la solicitud se direccione al backend asociado de la regla

    Consulte Especificación de reglas de ruta para el controlador de entrada nativo de OCI.

Por ejemplo:

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

Cree el recurso introduciendo kubectl create -f <filename>.yaml