Configuration du contrôleur d'entrée natif OCI sur le moteur Kubernetes OCI avec des noeuds virtuels
Introduction
Ce tutoriel parcourt le processus de configuration du contrôleur d'entrée natif Oracle Cloud Infrastructure (OCI) sur Oracle Cloud Infrastructure Kubernetes Engine (OKE) avec un pool de noeuds virtuels. Les noeuds virtuels sont différents des noeuds de processus actif standard basés sur une instance, car il s'agit d'une solution sans serveur qui élimine les instances de calcul sous-jacentes. Contrairement aux nœuds de travail traditionnels, qui reposent sur des instances de machine virtuelle spécifiques, les nœuds virtuels évoluent dynamiquement en fonction des demandes de charge de travail et ne nécessitent pas de gestion manuelle de l'infrastructure sous-jacente. Elles sont donc idéales pour les charges de travail nécessitant une mise à l'échelle automatique et une réduction de la surcharge opérationnelle.
Dans ce tutoriel, nous allons configurer le contrôleur d'entrée natif OCI sur OKE à l'aide de noeuds virtuels. Nous allons configurer des stratégies d'identité de charge globale, activer l'extension entrante et déployer des ressources entrantes avec des manifestes Kubernetes.
En suivant ces tâches, vous pouvez exposer vos applications et gérer le trafic entrant à l'aide des fonctionnalités d'OCI Load Balancer, le tout en tirant parti de la simplicité opérationnelle des noeuds virtuels. Cette configuration rationalise la gestion du trafic et prend en charge les charges de travail de production de manière évolutive et rentable.
Objectifs
- Configurez et configurez le contrôleur d'entrée natif OCI sur OKE pour gérer efficacement les ressources d'entrée.
Tâche 1 : créer une stratégie de principal d'identité de charge globale
Avant d'activer le contrôleur d'entrée natif OCI, créez une stratégie de principal d'identité de charge globale. Les noeuds virtuels sont sans serveur et n'utilisent pas les instances OCI Compute. Ils nécessitent donc une identité de charge globale au lieu des principaux d'instance. Cette stratégie permet au contrôleur entrant de gérer les ressources de votre compartiment.
-
Accédez à la console OCI, accédez à Identité et sécurité, à Identité et cliquez sur Stratégies.
-
Créez une stratégie et entrez son nom. Pour plus d'informations, reportez-vous à Création d'une stratégie à l'aide de la console OCI.
-
Cliquez sur Afficher l'éditeur manuel et entrez les instructions de stratégie suivantes, en remplaçant
location
etcluster-ocid
par vos valeurs spécifiques.Remarque :
<location>
doit être remplacé par le compartiment dans lequel se trouvent vos ressources.<cluster-ocid>
doit être remplacé par l'OCID de votre cluster 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>'}
Tâche 2 : activation de l'extension OCI Native Ingress Controller
Une fois la stratégie de principal d'identité de charge globale requise en place, vous pouvez activer l'extension de contrôleur d'entrée natif OCI pour votre cluster OKE. Ce module complémentaire permet d'utiliser un équilibreur de charge OCI pour gérer efficacement le trafic entrant.
-
Accédez à votre cluster OKE dans la console OCI.
-
Faites défiler la page vers le bas et cliquez sur Add-ons.
-
Sur la page Extensions, cliquez sur Contrôleur entrant natif.
-
Sur la page Modifier le contrôleur entrant natif, sélectionnez Activer le contrôleur entrant natif et entrez les informations suivantes sous Option.
compartmentId
: entrez l'OCID du compartiment.loadBalancerSubnetId
: entrez l'OCID de sous-réseau de l'équilibreur de charge.authType
: entrezworkloadIdentity
.
-
Cliquez sur Enregistrer les modifications pour appliquer les paramètres.
Remarque : cette configuration est requise pour les pools de noeuds virtuels, comme indiqué précédemment, ils sont sans serveur et ne prennent pas en charge l'authentification du principal d'instance. L'identité de charge globale est la méthode d'authentification prise en charge dans ce cas.
Tâche 3 : déploiement de ressources entrantes pour activer la fonctionnalité entrante native
Dans cette tâche, créez les ressources Kubernetes requises pour activer la fonctionnalité entrante à l'aide du contrôleur d'entrée natif OCI. Il s'agit notamment des objets IngressClassParameters
, IngressClass
et Ingress
réels.
-
Examinez l'objectif de chaque ressource.
- IngressClassParameters : indique une configuration spécifique à OCI, comme l'OCID de compartiment, le sous-réseau et la bande passante.
- IngressClass : lie la fonctionnalité d'entrée Kubernetes au contrôleur d'entrée d'OCI.
- Entrée : définit la manière dont le trafic est acheminé vers vos services.
-
Remplacez les valeurs d'espace réservé dans le YAML.
- Remplacez
<your compartment ocid>
par l'OCID de compartiment réel. - Remplacez
<your load balancer subnet ocid>
par l'OCID de votre sous-réseau d'équilibreur de charge.
- Remplacez
-
Appliquez le manifeste YAML. Enregistrez le code YAML suivant dans un fichier, par exemple
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
-
Exécutez la commande suivante pour appliquer le manifeste.
kubectl apply -f native-ingress.yaml
-
Vérifiez la création de la ressource.
kubectl get ingressclassparameters kubectl get ingressclass kubectl get ingress
Tâche 4 : test de l'équilibreur de charge du contrôleur d'entrée natif OCI
Remarque : assurez-vous que les ports requis (par exemple,
80
et/ou443
) sont ouverts dans votre liste de sécurité du VCN et/ou votre groupe de sécurité réseau avant de tester l'adresse IP de l'équilibreur de charge OCI.
Pour vérifier que le contrôleur d'entrée natif OCI fonctionne correctement, procédez comme suit :
-
Utilisez
kubectl
pour extraire l'adresse IP de la ressource entrante.kubectl get ingress
-
Copiez l'adresse IP affichée dans la sortie.
-
Ouvrez votre navigateur Web et collez l'adresse IP dans la barre d'adresse.
-
Si votre configuration est correcte, vous devez voir la réponse par défaut du service déployé.
Vous pouvez également vérifier que l'équilibreur de charge OCI a été créé correctement dans la console OCI en accédant au menu de navigation, en sélectionnant Fonctions de réseau et en cliquant sur Equilibreur de charge.
Etapes suivantes
Avec ce tutoriel, vous avez configuré le contrôleur d'entrée natif sur OKE à l'aide de noeuds virtuels. Cette configuration vous permet de gérer le trafic entrant avec le service OCI Load Balancer tout en bénéficiant de l'évolutivité et de la simplicité d'un environnement Kubernetes sans serveur. Vous êtes maintenant prêt à déployer des charges de travail de production avec une gestion du trafic rationalisée et une surcharge minimale de l'infrastructure.
Liens connexes
-
Octroi de droits d'accès au module complémentaire de cluster OCI Native Ingress Controller
-
Installation du contrôleur d'entrée natif OCI en tant qu'extension de cluster
-
Création de ressources entrantes, IngressClassParameters et IngressClass
Accusés de réception
- Auteur – JP Santana (architecte cloud maître)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Set Up the OCI Native Ingress Controller on OCI Kubernetes Engine with Virtual Nodes
G34285-03
Copyright ©2025, Oracle and/or its affiliates.