Configuración del controlador de entrada nativo de OCI en OCI Kubernetes Engine con nodos virtuales
Introducción
En este tutorial se describe el proceso de configuración del controlador de entrada nativo de Oracle Cloud Infrastructure (OCI) en Oracle Cloud Infrastructure Kubernetes Engine (OKE) con un pool de nodos de nodos virtuales. Los nodos virtuales son diferentes de los nodos de trabajador normales basados en instancias porque son una solución sin servidor que abstrae las instancias informáticas subyacentes. A diferencia de los nodos de trabajador tradicionales, que se basan en instancias de máquina virtual específicas, los nodos virtuales se escalan dinámicamente en función de las demandas de carga de trabajo y no requieren la gestión manual de la infraestructura subyacente. Esto los hace ideales para cargas de trabajo que necesitan ampliación automática y una reducción de la sobrecarga operativa.
En este tutorial, configuraremos el controlador de entrada nativo de OCI en OKE mediante nodos virtuales. Configuraremos políticas de identidad de carga de trabajo, activaremos el complemento de entrada y desplegaremos recursos de entrada con manifiestos de Kubernetes.
Si sigues estas tareas, puedes exponer tus aplicaciones y gestionar el tráfico de entrada mediante las capacidades del equilibrador de carga de OCI, todo ello aprovechando la simplicidad operativa de los nodos virtuales. Esta configuración optimiza la gestión del tráfico y admite cargas de trabajo de producción de una manera escalable y rentable.
Objetivos
- Configure y configure el controlador de entrada nativo de OCI en OKE para gestionar los recursos de entrada de manera eficiente.
Tarea 1: Crear política de entidad de identidad de carga de trabajo
Antes de activar el controlador de entrada nativo de OCI, cree una política de principal de identidad de carga de trabajo. Los nodos virtuales no tienen servidor y no utilizan instancias de OCI Compute, por lo que necesitan identidad de carga de trabajo en lugar de principales de instancia. Esta política permite al controlador de entrada gestionar recursos en el compartimento.
-
Vaya a la consola de OCI, vaya a Identidad y seguridad, Identidad y haga clic en Políticas.
-
Cree una política e introduzca un Nombre de Política. Para obtener más información, consulte Creación de una política mediante la consola de OCI.
-
Haga clic en Mostrar editor manual e introduzca las siguientes sentencias de política, sustituyendo
location
ycluster-ocid
por sus valores específicos.Nota:
<location>
se debe sustituir por el compartimento en el que se encuentran los recursos.<cluster-ocid>
se debe sustituir por el OCID del cluster de OKE.
Allow any-user to manage load-balancers in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to use virtual-network-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage cabundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage cabundle-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage leaf-certificates in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read leaf-certificate-bundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage leaf-certificate-versions in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage certificate-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read certificate-authorities in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage certificate-authority-associations in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read certificate-authority-bundles in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read public-ips in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage floating-ips in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to manage waf-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to read cluster-family in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'} Allow any-user to use tag-namespaces in <location> where all {request.principal.type = 'workload', request.principal.namespace = 'native-ingress-controller-system', request.principal.service_account = 'oci-native-ingress-controller', request.principal.cluster_id = '<cluster-ocid>'}
Tarea 2: Activación del complemento OCI Native Ingress Controller
Una vez que se haya establecido la política de principal de identidad de carga de trabajo necesaria, puede continuar activando el complemento de controlador de entrada nativo de OCI para el cluster de OKE. Este complemento permite el uso de un equilibrador de carga de OCI para gestionar el tráfico de entrada de forma eficiente.
-
Navegue al cluster de OKE en la consola de OCI.
-
Desplácese hacia abajo y haga clic en Complementos.
-
En la página Complementos, haga clic en Controlador de entrada nativo.
-
En la página Editar controlador de entrada nativo, seleccione Activar controlador de entrada nativo e introduzca la siguiente información en Opción.
compartmentId
: introduzca el OCID del compartimento.loadBalancerSubnetId
: introduzca el OCID de subred del equilibrador de carga.authType
: introduzcaworkloadIdentity
.
-
Haga clic en Guardar cambios para aplicar la configuración.
Nota: Esta configuración es necesaria para los pools de nodos virtuales, como se ha mencionado anteriormente, no tienen servidor y no soportan la autenticación de principal de instancia. La identidad de carga de trabajo es el método de autenticación soportado en este caso.
Tarea 3: Despliegue de recursos de entrada para activar la funcionalidad de entrada nativa
En esta tarea, cree los recursos de Kubernetes necesarios para activar la funcionalidad de entrada mediante el controlador de entrada nativo de OCI. Estos incluyen el objeto IngressClassParameters
, IngressClass
y el objeto Ingress
real.
-
Revise la finalidad de cada recurso.
- IngressClassParameters: especifica la configuración específica de OCI, como el OCID del compartimento, la subred y el ancho de banda.
- IngressClass: enlaza la funcionalidad de entrada de Kubernetes al controlador de entrada de OCI.
- Entrada: define cómo se enruta el tráfico a los servicios.
-
Sustituya los valores de marcador de posición en el YAML.
- Sustituya
<your compartment ocid>
por el OCID de compartimento real. - Sustituya
<your load balancer subnet ocid>
por el OCID de la subred del equilibrador de carga.
- Sustituya
-
Aplique el manifiesto YAML. Guarde el siguiente código YAML en un archivo, por ejemplo
native-ingress.yaml
.apiVersion: apps/v1 kind: Deployment metadata: name: test-web-app namespace: default spec: replicas: 2 selector: matchLabels: app: test-web template: metadata: labels: app: test-web spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 3 periodSeconds: 5 resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "500m" memory: "256Mi" apiVersion: v1 kind: Service metadata: name: test-web-service namespace: default spec: selector: app: test-web ports: - protocol: TCP port: 80 targetPort: 80 apiVersion: ingress.oraclecloud.com/v1beta1 kind: IngressClassParameters metadata: name: native-ic-params namespace: native-ingress-controller-system spec: compartmentId: "ocid1.compartment.oc1..aaaaaaaa2eimxxxxxxxxxxz4lkcety52hfdg6wdoff6744yn4hrshofla" subnetId: "ocid1.subnet.oc1.iad.aaaaaaaaa72ie4xxxxxxxxxrxxrly6nmkb77qxt6mi2t5pvrdhge32q" loadBalancerName: "test-web-ingress" isPrivate: false maxBandwidthMbps: 400 minBandwidthMbps: 100 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: apiGroup: ingress.oraclecloud.com kind: IngressClassParameters name: native-ic-params scope: Namespace namespace: native-ingress-controller-system apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-web-ingress-quickstart namespace: default annotations: oci.oraclecloud.com/load-balancer-type: "lb" oci.oraclecloud.com/healthcheck-protocol: "HTTP" oci.oraclecloud.com/healthcheck-port: "80" oci.oraclecloud.com/healthcheck-path: "/" oci.oraclecloud.com/healthcheck-return-code: "200" spec: ingressClassName: native-ic-ingress-class rules: - host: test.example.com http: paths: - path: / pathType: Prefix backend: service: name: test-web-service port: number: 80 - http: paths: - path: / pathType: Prefix backend: service: name: test-web-service port: number: 80
-
Ejecute el siguiente comando para aplicar el manifiesto.
kubectl apply -f native-ingress.yaml
-
Verifique la creación del recurso.
kubectl get ingressclassparameters kubectl get ingressclass kubectl get ingress
Tarea 4: Prueba del equilibrador de carga del controlador de entrada nativo de OCI
Nota: Asegúrese de que los puertos necesarios (por ejemplo,
80
y/o443
) estén abiertos en la lista de seguridad de la VCN y/o el grupo de seguridad de red (NSG) antes de probar la dirección IP del equilibrador de carga de OCI.
Para verificar que el controlador de entrada nativo de OCI funciona correctamente, siga estos pasos:
-
Utilice
kubectl
para recuperar la dirección IP del recurso de entrada.kubectl get ingress
-
Copie la dirección IP mostrada en la salida.
-
Abra el explorador web y pegue la dirección IP en la barra de direcciones.
-
Si la configuración es correcta, debería ver la respuesta por defecto del servicio desplegado.
También puede verificar que el equilibrador de carga de OCI se ha creado correctamente en la consola de OCI; para ello, vaya al menú de navegación, seleccione Red y haga clic en Equilibrador de carga.
Pasos Siguientes
Con este tutorial, ha configurado correctamente el controlador de entrada nativo en OKE mediante nodos virtuales. Esta configuración permite gestionar el tráfico de entrada con el servicio OCI Load Balancer, al tiempo que se beneficia de la escalabilidad y la simplicidad de un entorno de Kubernetes sin servidor. Ya está listo para desplegar cargas de trabajo de producción con una gestión de tráfico optimizada y una mínima sobrecarga de infraestructura.
Enlaces relacionados
-
Asignación de permisos al complemento del cluster del controlador de entrada nativo de OCI
-
Instalación del controlador de entrada nativo de OCI como complemento de cluster
-
Creación de recursos IngressClassParameters, IngressClass y de entrada
Acuses de recibo
- Autor: JP Santana (arquitecto maestro de la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Set Up the OCI Native Ingress Controller on OCI Kubernetes Engine with Virtual Nodes
G34283-03
Copyright ©2025, Oracle and/or its affiliates.