Configurer le contrôleur de trafic entrant natif OCI dans OCI Kubernetes Engine avec des noeuds virtuels
Présentation
Ce tutoriel présente le processus de configuration du contrôleur de trafic entrant natif d'Oracle Cloud Infrastructure (OCI) sur Oracle Cloud Infrastructure Kubernetes Engine (OKE) avec un groupe de noeuds de noeud virtuel. Les noeuds virtuels sont différents des noeuds de travail standard basés sur des instances car ils constituent une solution sans serveur qui élimine les instances de calcul sous-jacentes. Contrairement aux nœuds de travail traditionnels, qui s'appuient sur des instances de machine virtuelle spécifiques, les nœuds virtuels s'adaptent 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 des frais généraux opérationnels.
Dans ce tutoriel, nous configurerons le contrôleur de trafic entrant natif OCI sur OKE à l'aide de noeuds virtuels. Nous allons configurer des politiques d'identité de charge de travail, activer le module complémentaire entrant 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 capacités de l'équilibreur de charge d'OCI, tout en tirant parti de la simplicité opérationnelle des noeuds virtuels. Cette configuration simplifie 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 de trafic entrant natif OCI sur OKE pour gérer efficacement les ressources de trafic entrant.
Tâche 1 : Créer une politique de principal d'identité de charge de travail
Avant d'activer le contrôleur de trafic entrant natif OCI, créez une politique de principal d'identité de charge de travail. Les noeuds virtuels sont sans serveur et n'utilisent pas les instances de calcul OCI. Ils nécessitent donc une identité de charge de travail au lieu des principaux d'instance. Cette politique permet au contrôleur de trafic entrant de gérer les ressources de votre compartiment.
-
Allez à la console OCI, naviguez jusqu'à Identité et sécurité, Identité et cliquez sur Politiques.
-
Créez une politique et entrez son nom. Pour plus d'informations, voir Créer une politique à l'aide de la console OCI.
-
Cliquez sur Afficher l'éditeur manuel et entrez les énoncés de politique suivants, en remplaçant
location
etcluster-ocid
par vos valeurs spécifiques.Note :
<location>
doit être remplacé par le compartiment où se trouvent vos ressources.<cluster-ocid>
doit être remplacé par l'OCID de votre grappe 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 : Activer le module complémentaire de contrôleur de trafic entrant natif OCI
Une fois la politique de principal d'identité de charge de travail requise en place, vous pouvez activer le module complémentaire de contrôleur de trafic entrant natif OCI pour votre grappe OKE. Ce module complémentaire permet d'utiliser un équilibreur de charge OCI pour gérer efficacement le trafic entrant.
-
Naviguez jusqu'à votre grappe OKE dans la console OCI.
-
Faites défiler vers le bas et cliquez sur Modules complémentaires.
-
Dans la page Modules complémentaires, cliquez sur Contrôleur de trafic entrant natif.
-
Dans la page Modifier le contrôleur de trafic entrant natif, sélectionnez Activer le contrôleur de trafic entrant natif et entrez les informations suivantes sous Option.
compartmentId
: Entrez l'OCID de votre compartiment.loadBalancerSubnetId
: Entrez l'OCID de votre sous-réseau d'équilibreurs de charge.authType
: EntrezworkloadIdentity
.
-
Cliquez sur enregistrer les modifications pour appliquer les paramètres.
Note : Cette configuration est requise pour les groupes de noeuds virtuels, comme mentionné précédemment, ils sont sans serveur et ne prennent pas en charge l'authentification du principal d'instance. L'identité de charge de travail est la méthode d'authentification prise en charge dans ce cas.
Tâche 3 : Déployer les ressources entrantes pour activer la fonctionnalité de trafic entrant natif
Dans cette tâche, créez les ressources Kubernetes requises pour activer la fonctionnalité de trafic entrant à l'aide du contrôleur de trafic entrant natif OCI. Il s'agit notamment de l'objet IngressClassParameters
, IngressClass
et de l'objet Ingress
réel.
-
Examinez l'objectif de chaque ressource.
- IngressClassParameters : Spécifie une configuration OCI spécifique, telle que l'OCID du compartiment, le sous-réseau et la bande passante.
- IngressClass : Lie la fonctionnalité de trafic entrant Kubernetes au contrôleur de trafic entrant d'OCI.
- Trafic entrant : Définit la façon dont le trafic est acheminé vers vos services.
-
Remplacez les valeurs de paramètre fictif dans YAML.
- Remplacez
<your compartment ocid>
par votre OCID de compartiment réel. - Remplacez
<your load balancer subnet ocid>
par l'OCID de votre sous-réseau d'équilibreurs 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 : Tester l'équilibreur de charge du contrôleur de trafic entrant natif OCI
Note : Assurez-vous que les ports requis (par exemple,
80
et/ou443
) sont ouverts dans la liste de sécurité du VCN ou le groupe de sécurité de réseau avant de tester l'adresse IP de l'équilibreur de charge OCI.
Pour vérifier que votre contrôleur de trafic entrant 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 indiquée dans la sortie.
-
Ouvrez votre navigateur Web et collez l'adresse IP dans la barre d'adresse.
-
Si votre configuration est correcte, vous devriez voir la réponse par défaut de votre service déployé.
Vous pouvez également vérifier que l'équilibreur de charge OCI a été correctement créé dans la console OCI en naviguant jusqu'au menu de navigation, sélectionnez Réseau et cliquez sur Équilibreur de charge.
Étapes suivantes
Avec ce tutoriel, vous avez configuré avec succès le contrôleur de trafic entrant natif sur OKE à l'aide de noeuds virtuels. Cette configuration vous permet de gérer le trafic entrant avec le service d'équilibreur de charge OCI tout en bénéficiant de l'extensibilité 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 rationalisée du trafic et une surcharge minimale de l'infrastructure.
Liens connexes
-
Octroi d'autorisations au module complémentaire de grappe du contrôleur de trafic entrant natif OCI
-
Installation du contrôleur de trafic entrant natif OCI en tant que module complémentaire de grappe
-
Création de IngressClassParameters, IngressClass et de ressources entrantes
Remerciements
- Auteur – JP Santana (architecte en nuage en chef)
Ressources d'apprentissage supplémentaires
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Set Up the OCI Native Ingress Controller on OCI Kubernetes Engine with Virtual Nodes
G34284-03
Copyright ©2025, Oracle and/or its affiliates.