Provisionnement des équilibreurs de charge OCI pour les services Kubernetes de type LoadBalancer
Découvrez comment provisionner un équilibreur de charge OCI pour un service Kubernetes de type LoadBalancer à l'aide du moteur Kubernetes (OKE).
Un équilibreur de charge Oracle Cloud Infrastructure (OCI) est un mandataire de couche 4 (TCP) et de couche 7 (HTTP) OSI, qui prend en charge des fonctions telles que la terminaison SSL et les politiques de routage HTTP avancé. Il offre la plus grande flexibilité, avec une évolutivité réactive vers le haut et vers le bas. Vous choisissez une bande passante minimale personnalisée et une bande passante maximale facultative, toutes deux comprises entre 10 Mbps et 8 000 Mbps. La bande passante minimale est toujours disponible et offre une disponibilité instantanée pour vos charges de travail.
Pour plus d'informations sur les équilibreurs de charge OCI, voir Aperçu du service d'équilibreur de charge.
Le provisionnement d'un équilibreur de charge OCI pour un service Kubernetes de type LoadBalancer vous permet de :
- Trafic des couches de transport 4 et 7 (TCP et HTTP) de l'équilibreur de charge
- interrompre SSL/TLS au niveau de l'équilibreur de charge
Notez que lorsque le moteur Kubernetes provisionne un équilibreur de charge OCI pour un service Kubernetes de type LoadBalancer, les règles de sécurité permettant le trafic entrant et sortant vers et depuis le sous-réseau de l'équilibreur de charge sont créées automatiquement par défaut. Voir Règles de sécurité pour les équilibreurs de charge et les équilibreurs de charge de réseau.
Utilisez les mesures de l'équilibreur de charge OCI pour surveiller l'état d'un équilibreur de charge OCI provisionné pour un service Kubernetes de type LoadBalancer (voir Mesures de l'équilibreur de charge).
Spécification de l'annotation pour un équilibreur de charge OCI
oci.oraclecloud.com/load-balancer-type: "lb"
Notez que lb est la valeur par défaut de l'annotation oci.oraclecloud.com/load-balancer-type. Si vous n'incluez pas explicitement l'annotation dans la définition du service, la valeur par défaut de l'annotation est utilisée.
Par exemple, considérons le fichier de configuration suivant, nginx_lb.yaml. Il définit un déploiement (kind: Deployment) pour l'application nginx, suivi d'une définition de service de type LoadBalancer (type: LoadBalancer) qui équilibre le trafic HTTP sur le port 80 pour l'application nginx.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxLa première partie du fichier de configuration définit un déploiement de Nginx, demandant qu'il soit hébergé sur 3 pods exécutant l'image nginx:latest, et qu'il accepte le trafic vers les conteneurs sur le port 80.
La deuxième partie du fichier de configuration définit le service Nginx, qui utilise le type LoadBalancer pour équilibrer le trafic Nginx sur le port 80 entre les pods disponibles.
Pour créer le déploiement et le service définis dans nginx_lb.yaml lorsque vous êtes connecté à votre grappe Kubernetes, entrez la commande suivante :
kubectl apply -f nginx_lb.yamlCette commande affiche le résultat suivant lorsque la création du déploiement et de l'équilibreur de charge aboutit :
deployment "my-nginx" created
service "my-nginx-svc" created
L'équilibreur de charge peut rester en attente pendant quelques minutes avant d'être totalement opérationnel. Vous pouvez voir l'état courant de votre grappe en entrant :
kubectl get allLa sortie de la commande ci-dessus montre l'état courant :
NAME READY STATUS RESTARTS AGE
po/my-nginx-431080787-0m4m8 1/1 Running 0 3m
po/my-nginx-431080787-hqqcr 1/1 Running 0 3m
po/my-nginx-431080787-n8125 1/1 Running 0 3m
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes 203.0.113.1 <NONE> 443/TCP 3d
svc/my-nginx-svc 203.0.113.7 192.0.2.22 80:30269/TCP 3m
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/my-nginx 3 3 3 3 3m
NAME DESIRED CURRENT READY AGE
rs/my-nginx-431080787 3 3 3 3m
Cette sortie indique que le déploiement my-nginx s'exécute sur 3 pods (les entrées po/my-nginx), que l'équilibreur de charge est en cours d'exécution (svc/my-nginx-svc) et qu'il possède une adresse IP externe (192.0.2.22) que les clients peuvent utiliser pour se connecter à l'application déployée sur les pods.
Arrêt de SSL/TLS au niveau de l'équilibreur de charge (SSL frontal)
Lorsque vous provisionnez un équilibreur de charge Oracle Cloud Infrastructure (OCI) pour un service Kubernetes de type LoadBalancer, vous pouvez le configurer pour mettre fin au trafic SSL/TLS. Cette configuration, souvent appelée SSL frontal, garantit que le trafic chiffré provenant d'Internet est déchiffré au niveau de l'équilibreur de charge avant d'être transmis aux noeuds de travail.
La mise en oeuvre de l'arrêt SSL au niveau de l'équilibreur de charge décharge le processus de déchiffrement intensif des pods d'application, ce qui simplifie la gestion des certificats et améliore la performance dorsale.
Notez que vous pouvez mettre en oeuvre le chiffrement SSL point à point complet entre les clients et les pods d'application s'exécutant sur les noeuds de travail. Pour ce faire, configurez l'arrêt SSL au niveau de l'équilibreur de charge (comme décrit dans cette section) et mettez également en oeuvre le protocole SSL dorsal entre l'équilibreur de charge et les noeuds de travail (voir Mise en oeuvre du protocole SSL/TLS entre l'équilibreur de charge et les noeuds de travail (SSL dorsal)).
Sélectionner une méthode de gestion des certificats pour Frontend SSL
Selon vos exigences en matière de sécurité et la façon dont vous gérez le cycle de vie de votre certificat, choisissez l'une des méthodes suivantes pour mettre en oeuvre le protocole SSL frontal :
-
Clés secrètes Kubernetes : Idéal pour les certificats gérés dans la grappe ou par des fournisseurs tiers (tels que Chiffrer). Pour des étapes de mise en oeuvre détaillées, voir Interruption du protocole SSL/TLS au niveau de l'équilibreur de charge à l'aide des clés secrètes Kubernetes.
-
Service de certificats OCI : Recommandée pour les environnements de production, cette méthode tire parti de la gestion native des certificats d'OCI pour activer des fonctions telles que la rotation automatique des certificats sans nécessiter de mises à jour de manifeste. Pour plus d'informations, voir Interruption du protocole SSL/TLS au niveau de l'équilibreur de charge à l'aide du service de certificats OCI.
Notez que ces méthodes s'excluent mutuellement pour un service donné de type LoadBalancer. Vous devez choisir une clé secrète Kubernetes ou un mappage de certificat OCI natif pour éviter les conflits de configuration.
Configuration des suites de chiffrement et des protocoles pour les modules d'écoute
Quelle que soit la méthode de gestion des certificats que vous choisissez, vous pouvez spécifier la suite de chiffrement et les protocoles SSL que l'équilibreur de charge utilise pour le module d'écoute frontal.
Les suites de chiffrement déterminent la sécurité, la compatibilité et la vitesse du trafic HTTPS (pour plus d'informations, voir Suites de chiffrement pour les équilibreurs de charge). Pour spécifier la suite de chiffrement à utiliser avec le module d'écoute frontal de l'équilibreur de charge, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
oci.oraclecloud.com/oci-load-balancer-ssl-config: '{"CipherSuiteName":"<cipher-suite-name>", "Protocols":["<tls-version>"]}'où :
-
"CipherSuiteName":"<cipher-suite-name>"est le nom d'une suite de chiffrement prédéfinie préconfigurée par Oracle Cloud Infrastructure (voir Suites de chiffrement prédéfinies de l'équilibreur de charge) ou une suite de chiffrement que vous avez créée vous-même. Par exemple,"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1" -
"Protocols":["<tls-version>"]spécifie une ou plusieurs versions TLS, dans une liste délimitée par des virgules. Par exemple,"Protocols":["TLSv1.2", "TLSv1.3"]
Par exemple :
oci.oraclecloud.com/oci-load-balancer-ssl-config: '{"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1", "Protocols":["TLSv1.2", "TLSv1.3"]}'
Si vous n'incluez pas l'annotation oci.oraclecloud.com/oci-load-balancer-ssl-config, mais que vous incluez l'annotation service.beta.kubernetes.io/oci-load-balancer-tls-secret, la suite de chiffrement oci-default-ssl-cipher-suite-v1 est utilisée.
Arrêt de SSL/TLS au niveau de l'équilibreur de charge à l'aide de clés secrètes Kubernetes
Les clés secrètes Kubernetes permettent de gérer les certificats SSL/TLS localement dans la grappe. Cette méthode est standard pour les certificats gérés manuellement ou par des fournisseurs tiers (tels que Let's Encrypt). Bien que cette méthode offre un contrôle direct sur les données de certificat dans Kubernetes, elle nécessite des mises à jour manuelles de la clé secrète chaque fois qu'un certificat expire.
Cet exemple fournit une description détaillée de la configuration et de la création d'un équilibreur de charge avec prise en charge de SSL.
Voyez le fichier de configuration suivant, nginx-demo-svc-ssl.yaml, qui définit un déploiement de Nginx et l'expose au moyen d'un équilibreur de charge qui dessert http sur le port 80 et https sur le port 443. Cet exemple crée un équilibreur de charge Oracle Cloud Infrastructure en définissant un service de type LoadBalancer (type: LoadBalancer).
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
name: nginx-service
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
oci.oraclecloud.com/oci-load-balancer-listener-ssl-config: '{"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1", "Protocols":["TLSv1.3"]}'
service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 80Les annotations de l'équilibreur de charge sont particulièrement importantes, comme décrit ici.
Les ports sur lesquels le trafic HTTP doit être pris en charge sont définis par la valeur de l'annotation service.beta.kubernetes.io/oci-load-balancer-ssl-ports. Vous pouvez déclarer plusieurs ports SSL en utilisant une liste séparée par des virgules pour la valeur de l'annotation. Par exemple, vous pouvez régler la valeur de l'annotation à "443, 3000" pour prendre en charge SSL sur les ports 443 et 3000.
La suite de chiffrement à utiliser avec l'équilibreur de charge est définie par la valeur de l'annotation oci.oraclecloud.com/oci-load-balancer-listener-ssl-config.
La clé secrète TLS obligatoire, ssl-certificate-secret, doit être créée dans Kubernetes. Cet exemple crée et utilise un certificat auto-signé. Toutefois, dans un environnement de production, le scénario le plus courant consiste à utiliser un certificat public signé par une autorité de certification.
La commande suivante crée un certificat auto-signé, tls.crt, avec la clé correspondante, tls.key :
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
Maintenant que vous avez créé le certificat, vous devez le stocker avec sa clé dans Kubernetes, en tant que clé secrète. Le nom de la clé secrète doit correspondre au nom de l'annotation service.beta.kubernetes.io/oci-load-balancer-tls-secret dans la définition de l'équilibreur de charge. Utilisez la commande suivante pour créer une clé secrète TLS dans Kubernetes, dont les valeurs de clé et de certificat sont définies par --key et --cert, respectivement.
kubectl create secret tls ssl-certificate-secret --key tls.key --cert tls.crt
Vous devez créer la clé secrète Kubernetes avant de créer le service, car celui-ci référence cette clé dans sa définition. Créez le service au moyen de la commande suivante :
kubectl create -f manifests/demo/nginx-demo-svc-ssl.yaml
Observez le service et attendez qu'une adresse IP publique (EXTERNAL IP) soit affectée au service Nginx (nginx-service) en entrant :
kubectl get svc --watchLa sortie de la commande ci-dessus montre l'adresse IP de l'équilibreur de charge à utiliser pour la connexion au service.
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service 192.0.2.1 198.51.100.1 80:30274/TCP 5m
L'équilibreur de charge est en cours d'exécution, ce qui signifie que le service est désormais accessible comme suit :
- à l'aide de http, en entrant :
curl http://198.51.100.1 - à l'aide de https, en entrant :
curl --insecure https://198.51.100.1L'indicateur "
--insecure" est utilisé pour accéder au service à l'aide de https car des certificats auto-signés sont utilisé dans cet exemple. N'utilisez pas cet indicateur dans un environnement de production où le certificat public a été signé par une autorité de certification.
Note : Lorsqu'une grappe est supprimée, un équilibreur de charge qui est créé dynamiquement lors de la création d'un service n'est pas supprimé. Avant de supprimer une grappe, supprimez le service, ce qui entraîne la suppression de l'équilibreur de charge. La syntaxe valide de cette commande est la suivante :
kubectl delete svc SERVICE_NAME
Par exemple, pour supprimer le service de l'exemple précédent, entrez :
kubectl delete svc nginx-service
Mise à jour des certificats TLS des équilibreurs de charge existants à l'aide des clés secrètes Kubernetes
Pour mettre à jour le certificat TLS d'un équilibreur de charge existant :
- Obtenez un nouveau certificat TLS. Dans un environnement de production, le scénario le plus courant consiste à utiliser un certificat public signé par une autorité de certification.
-
Créez une nouvelle clé secrète Kubernetes. Par exemple, en entrant :
kubectl create secret tls new-ssl-certificate-secret --key new-tls.key --cert new-tls.crt - Mettez à jour la définition du service pour référencer la nouvelle clé secrète Kubernetes en modifiant l'annotation
service.beta.kubernetes.io/oci-load-balancer-tls-secretdans la configuration du service. Par exemple :apiVersion: v1 kind: Service metadata: name: nginx-service annotations: service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443" service.beta.kubernetes.io/oci-load-balancer-tls-secret: new-ssl-certificate-secret spec: selector: app: nginx type: LoadBalancer ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 80 - Mettez à jour le service. Par exemple, en entrant :
kubectl apply -f new-nginx-demo-svc-ssl.yaml
Arrêt de SSL/TLS au niveau de l'équilibreur de charge à l'aide du service de certificats OCI
Le service de certificats OCI permet de gérer les certificats SSL/TLS de manière native dans Oracle Cloud Infrastructure. Cette méthode est recommandée pour les environnements de production car elle permet à l'équilibreur de charge OCI de consommer automatiquement les certificats renouvelés, offrant plusieurs avantages de niveau entreprise :
- Rotation sans temps d'arrêt : Lorsqu'un certificat est renouvelé dans OCI, l'équilibreur de charge sélectionne automatiquement la nouvelle version sans nécessiter d'application de manifeste.
- Gestion centralisée : Gérez tous les certificats frontaux à partir d'un seul tableau de bord OCI plutôt que dans plusieurs espaces de noms Kubernetes.
- Sécurité améliorée : Les clés privées sont stockées de manière sécurisée dans OCI et ne sont jamais présentées en tant que texte brut dans la grappe Kubernetes.
Préalables pour l'intégration des certificats OCI
Pour utiliser cette intégration native, vous devez vous assurer que les éléments suivants sont en place :
-
Politique IAM : Accordez à la grappe l'autorisation de principal de ressource pour gérer les certificats dans le compartiment :
Allow any-user to manage certificate-authority-family in compartment <compartment-name> where ALL {request.principal.type = 'cluster'} -
OCID du certificat : Vous devez avoir l'OCID du certificat feuille que l'équilibreur de charge doit présenter aux clients. Le certificat doit se trouver dans la même région que l'équilibreur de charge.
- État de la ressource : Le certificat doit être créé ou importé dans le service de certificats OCI et doit être à l'état Actif.
Configuration du mappage de certificats
Comme un équilibreur de charge OCI peut prendre en charge plusieurs certificats pour différents modules d'écoute, vous devez utiliser ConfigMap pour mapper les ports du module d'écoute à leurs ressources de certificat de certificats OCI respectives. Lorsque vous appliquez ConfigMap, une mise à jour de l'équilibreur de charge OCI est déclenchée immédiatement.
Créez ConfigMap : Créez un fichier
Par exemple :ConfigMapdans le même espace de noms que le service de type LoadBalancer et définissez un mappage où la clé est le port du module d'écoute et où la valeur est un tableau JSON contenant l'OCID du certificat feuille.apiVersion:v1 kind:ConfigMap metadata: name:lb-tls-mapping data: "443":"[\"ocid1.certificate.oc1.iad.example_leaf_ocid\"]"-
Annoter le service : Ajoutez l'annotation
oci-load-balancer.oraclecloud.com/tls-certificate-mapau manifeste du service de type LoadBalancer pour le lier àConfigMap.
Note : Les annotations tls-certificate-map et oci-load-balancer-tls-secret s'excluent mutuellement. Si les deux sont fournis, le provisionnement de l'équilibreur de charge échouera avec une erreur sslConfiguration violation.
Exemple de manifeste SSL frontal
apiVersion: v1
kind: Service
metadata:
name: secure-frontend-service
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
oci-load-balancer.oraclecloud.com/tls-certificate-map: "lb-tls-mapping"
spec:
selector:
app: my-app
type: LoadBalancer
ports:
- name: https
port: 443
targetPort: 8080
---
apiVersion: v1
kind: ConfigMap
metadata:
name: lb-tls-mapping
data:
"443": "[\"ocid1.certificate.oc1.iad.example_leaf_ocid\"]"
Mise en oeuvre de SSL/TLS entre l'équilibreur de charge et les noeuds de travail (SSL dorsal)
Lorsque le moteur Kubernetes provisionne un équilibreur de charge pour un service Kubernetes de type LoadBalancer, vous pouvez spécifier que vous voulez mettre en oeuvre SSL entre l'équilibreur de charge et les serveurs dorsaux (noeuds de travail) du jeu dorsal. Cette configuration est appelée SSL dorsal. Pour mettre en oeuvre le protocole SSL dorsal, vous associez un certificat SSL au jeu dorsal de l'équilibreur de charge.
Notez que vous pouvez mettre en oeuvre le chiffrement SSL point à point complet entre les clients et les pods d'application s'exécutant sur les noeuds de travail. Pour ce faire, associez un certificat SSL au jeu dorsal de l'équilibreur de charge (comme décrit dans cette section) et créez également un équilibreur de charge avec terminaison SSL (voir Interruption de SSL/TLS au niveau de l'équilibreur de charge (SSL frontal)).
Alors que la terminaison SSL frontend sécurise la connexion entre le client et l'équilibreur de charge, SSL dorsal sécurise la connexion entre l'équilibreur de charge et les noeuds de travail. Cette configuration garantit que le trafic reste chiffré même lorsqu'il passe par le réseau en nuage virtuel (VCN) interne, fournissant ainsi une couche supplémentaire de défense approfondie.
Lorsque vous mettez en oeuvre SSL dorsal, l'équilibreur de charge déchiffre le trafic entrant à l'aide d'un certificat frontal, effectue les inspections ou le routage de couche 7 nécessaires, puis rechiffre le trafic avant de l'envoyer aux pods de destination. Il s'agit d'une exigence commune pour les environnements à haute sécurité, où le trafic en texte clair est limité à chaque saut.
Méthode de gestion des certificats pour SSL dorsal
Lorsque vous mettez en oeuvre SSL dorsal, vous utilisez des clés secrètes Kubernetes pour gérer le chiffrement dorsal à l'aide des certificats stockés dans la grappe. Cette méthode nécessite des mises à jour manuelles de la clé secrète et du manifeste lorsque les certificats expirent. Pour plus de détails sur la mise en oeuvre, voir Mise en oeuvre de SSL/TLS entre l'équilibreur de charge et les noeuds de travail à l'aide des clés secrètes Kubernetes.
Notez que les pods d'application doivent être configurés pour accepter et interrompre les connexions SSL/TLS sur leurs ports cibles.
Configuration des suites de chiffrement et des protocoles pour les jeux dorsaux
Vous pouvez spécifier la suite de chiffrement et les protocoles SSL utilisés par l'équilibreur de charge pour le jeu dorsal.
Les suites de chiffrement déterminent la sécurité, la compatibilité et la vitesse du trafic HTTPS (pour plus d'informations, voir Suites de chiffrement pour les équilibreurs de charge). Pour spécifier la suite de chiffrement à utiliser avec le jeu dorsal de l'équilibreur de charge, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
oci.oraclecloud.com/oci-load-balancer-backendset-ssl-config: '{"CipherSuiteName":"<cipher-suite-name>", "Protocols":["<tls-version>"]}'où :
-
"CipherSuiteName":"<cipher-suite-name>"est le nom d'une suite de chiffrement prédéfinie préconfigurée par Oracle Cloud Infrastructure (voir Suites de chiffrement de l'équilibreur de charge prédéfinies) ou d'une suite de chiffrement que vous avez créée vous-même. Par exemple,"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1" -
"Protocols":["<tls-version>"]indique une ou plusieurs versions TLS, dans une liste délimitée par des virgules. Par exemple,"Protocols":["TLSv1.2", "TLSv1.3"]
Par exemple :
oci.oraclecloud.com/oci-load-balancer-backendset-ssl-config: '{"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1", "Protocols":["TLSv1.2", "TLSv1.3"]}'
Si vous n'incluez pas l'annotation oci.oraclecloud.com/oci-load-balancer-backendset-ssl-config, mais que vous incluez l'annotation service.beta.kubernetes.io/oci-load-balancer-tls-backendset-secret, la suite de chiffrement oci-wider-compatible-ssl-cipher-suite-v1 est utilisée.
Mise en oeuvre de SSL/TLS entre l'équilibreur de charge et les noeuds de travail à l'aide de clés secrètes Kubernetes
Les clés secrètes Kubernetes permettent de gérer localement les certificats SSL/TLS dans la grappe pour la communication dorsale. Cette méthode est utilisée lorsque vous gérez vos propres certificats ou utilisez une autorité de certification tierce pour sécuriser le lien entre l'équilibreur de charge et les noeuds de travail. Il garantit que le trafic interne est chiffré, mais nécessite une rotation manuelle du certificat de l'autorité de certification stocké dans la clé secrète.
Pour spécifier le certificat à associer au jeu dorsal, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-tls-backendset-secret: <value>où <value> est le nom d'une clé secrète Kubernetes que vous avez créée pour contenir un certificat signé et la clé privée du certificat. Notez que vous devez créer la clé secrète Kubernetes avant de créer le service, car celui-ci la référence dans sa définition.
L'exemple suivant crée et utilise un certificat auto-signé, qui est généralement acceptable pour la communication interne entre l'équilibreur de charge et le jeu dorsal. Toutefois, si vous préférez, vous pouvez utiliser un certificat public qui a été signé par une autorité de certification.
Par exemple :
-
Générez une clé privée en entrant :
openssl genrsa -out ca.key 2048 -
Générez un certificat en entrant :
openssl req -x509 -new -nodes -key ca.key -subj "/CN=nginxsvc/O=nginxsvc" -days 10000 -out ca.crt -
Stockez le certificat et la clé en tant que clé secrète dans Kubernetes en entrant :
kubectl create secret generic ca-ser-secret --from-file=tls.crt=tls.crt --from-file=tls.key=tls.key --from-file=ca.crt=ca.crt - Définissez un déploiement Nginx et exposez-le au moyen d'un équilibreur de charge qui dessert http sur le port 80 et https sur le port 443.
(type: LoadBalancer}. apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
metadata:
name: nginx-service
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
oci.oraclecloud.com/oci-load-balancer-backendset-ssl-config: '{"CipherSuiteName":"oci-default-http2-tls-12-13-ssl-cipher-suite-v1", "Protocols":["TLSv1.2", "TLSv1.3"]}'
service.beta.kubernetes.io/oci-load-balancer-tls-backendset-secret: ca-ser-secret
service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
La communication entre l'équilibreur de charge et les noeuds de travail du jeu dorsal est chiffrée à l'aide de la clé et du certificat stockés dans la clé secrète Kubernetes ca-ser-secret que vous avez créée précédemment.
Spécification d'autres formes d'équilibreur de charge
La forme d'un équilibreur de charge Oracle Cloud Infrastructure indique sa bande passante totale maximale (trafic entrant et sortant). Par défaut, les équilibreurs de charge sont créés avec une forme de 100 Mbits/s. D'autres formes sont disponibles, notamment 400 Mbits/s et 8 000 Mbits/s.
Pour spécifier une autre forme pour un équilibreur de charge, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-shape: <value>où value représente la bande passante de la forme (par exemple, 100 Mbits/s, 400 Mbits/s, 8 000 Mbits/s).
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-shape: 400Mbps
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxUn quota d'équilibreurs de charge suffisant doit être disponible dans la région pour la forme que vous spécifiez. Entrez la commande kubectl suivante pour vérifier que la création de l'équilibreur de charge n'a pas échoué en raison d'un quota insuffisant :
kubectl describe service <service-name>Notez qu'Oracle recommande de mettre en oeuvre des services Kubernetes de type LoadBalancer en tant qu'équilibreurs de charge flexibles et rentables plutôt qu'en tant qu'équilibreurs de charge à forme fixe (dynamiques) (voir Spécification de formes flexibles d'équilibreur de charge).
Spécification de formes d'équilibreur de charge flexibles
La forme d'un équilibreur de charge Oracle Cloud Infrastructure indique sa bande passante totale maximale (trafic entrant et sortant). Comme décrit dans Spécification d'autres formes d'équilibreur de charge, vous pouvez spécifier différentes formes d'équilibreur de charge.
En outre, vous pouvez également spécifier une forme flexible pour un équilibreur de charge d'Oracle Cloud Infrastructure, en définissant une bande passante minimale et maximale pour l'équilibreur de charge.
Pour spécifier une forme flexible pour un équilibreur de charge, ajoutez les annotations suivantes dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "<min-value>"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "<max-value>"où :
-
"<min-value>"est la bande passante minimale pour l'équilibreur de charge, dans Mbps (par exemple, "10") -
"<max-value>"est la bande passante maximale pour l'équilibreur de charge, dans Mbps (par exemple, "100")
Notez que vous n'indiquez pas d'unité de mesure lorsque vous spécifiez des valeurs de bande passante pour les formes d'équilibreur de charge flexibles (contrairement aux formes prédéfinies). Par exemple, spécifiez la bande passante minimale sous la forme 10, et non 10 Mbits/s.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxSpécification de la temporisation de la connexion de l'équilibreur de charge
Lors du provisionnement d'un équilibreur de charge Oracle Cloud Infrastructure pour un service Kubernetes de type LoadBalancer, vous pouvez spécifier le délai d'inactivité maximal (en secondes) autorisé entre deux opérations d'envoi ou de réception successives entre le client et les serveurs dorsaux.
Pour spécifier explicitement un délai d'inactivité maximal, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-connection-idle-timeout: <value>où value correspond au nombre de secondes.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-connection-idle-timeout: 100
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxNotez que si vous ne spécifiez pas explicitement un délai d'inactivité maximal, une valeur par défaut est utilisée. La valeur par défaut dépend du type de module d'écoute :
- pour les modules d'écoute TCP, le délai d'inactivité maximal par défaut est de 300 secondes
- pour les modules d'écoute HTTP, le délai d'inactivité maximal par défaut est de 60 secondes
Spécification du nombre maximal de connexions d'équilibreur de charge autorisées aux serveurs dorsaux
Lors du provisionnement d'un équilibreur de charge Oracle Cloud Infrastructure pour un service Kubernetes de type LoadBalancer, vous pouvez spécifier le nombre maximal de connexions simultanées que l'équilibreur de charge est autorisé à établir vers des serveurs dorsaux (noeuds de travail) dans le jeu dorsal.
Pour spécifier explicitement le nombre maximal de connexions simultanées autorisées entre l'équilibreur de charge et chaque serveur dorsal individuel du jeu dorsal, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
oci-load-balancer.oraclecloud.com/backendset-backend-max-connections: "<value>"où <value> est une valeur valide pour le nombre de connexions autorisées, comme suit :
- Nombre compris entre
"256"et"65535"(inclus). Si vous spécifiez un nombre en dehors de cet intervalle (à l'exception de0), une erreur est retournée. "0". Si vous spécifiez 0 comme nombre maximal de connexions autorisées, un nombre illimité de connexions entre l'équilibreur de charge et chaque serveur dorsal individuel du jeu dorsal est autorisé.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: nginx-service
annotations:
oci-load-balancer.oraclecloud.com/backendset-backend-max-connections: "256"
spec:
selector:
app: nginx
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 80Notez ce qui suit :
- Le nombre que vous spécifiez pour l'annotation est non seulement utilisé comme valeur de la propriété
backendMaxConnectionsdu jeu dorsal, mais il est également hérité par chaque serveur dorsal individuel en tant que valeur de sa propriétémaxConnections. Par conséquent, le nombre que vous spécifiez est utilisé comme nombre de connexions autorisées entre l'équilibreur de charge et chaque serveur dorsal individuel du jeu dorsal, et non comme nombre total total de connexions autorisées entre l'équilibreur de charge et le jeu dorsal. - Si vous n'incluez pas l'annotation dans le manifeste (ou supprimez ensuite l'annotation), un nombre infini de connexions entre l'équilibreur de charge et chaque serveur dorsal sont autorisées.
- Pour plus d'informations sur la spécification du nombre maximal de connexions concurrentes au module d'écoute de l'équilibreur de charge autorisées à partir de la même adresse IP d'origine, voir Spécification du nombre maximal de règles de connexion au module d'écoute.
Spécification des règles concernant le nombre maximal de connexions au module d'écoute
Lorsque Kubernetes Engine provisionne un équilibreur de charge Oracle Cloud Infrastructure pour un service Kubernetes de type LoadBalancer, vous pouvez spécifier le nombre maximal de connexions concurrentes au module d'écoute de l'équilibreur de charge autorisées à partir de la même adresse IP d'origine. Vous utilisez une annotation pour définir une valeur par défaut de nombre maximal de connexions au module d'écoute qui s'applique à toutes les adresses IP. L'annotation définit une règle de connexion maximale au module d'écoute pour l'équilibreur de charge. Si vous ne définissez pas cette valeur maximale par défaut, il n'y a pas de limite au nombre de connexions qu'une adresse IP peut établir au module d'écoute.
Pour plus d'informations sur les règles de connexion au module d'écoute maximum, voir Règles de connexion au module d'écoute maximum dans la documentation sur l'équilibreur de charge OCI.
Pour spécifier le nombre maximal de connexions concurrentes au module d'écoute autorisées à partir de la même adresse IP d'origine, ajoutez l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets dans la section de métadonnées du fichier manifeste. Notez que vous spécifiez la valeur de l'annotation au format JSON, comme suit :
oci.oraclecloud.com/oci-load-balancer-rule-sets: |
{
"<rule-set-name>": {
"items": [
{
"action": "IP_BASED_MAX_CONNECTIONS",
"maxConnectionsPerIp": <value>
}
]
}
}
où :
-
<rule-set-name>est le nom de votre choix pour le jeu de règles (entre 1 et 32 caractères de longueur). Par exemple :IpLimitRuleSet. -
<value>est le nombre maximal de connexions simultanées de module d'écoute autorisées à partir de la même adresse IP d'origine.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
oci.oraclecloud.com/oci-load-balancer-rule-sets: |
{
"IpLimitRuleSet": {
"items": [
{
"action": "IP_BASED_MAX_CONNECTIONS",
"maxConnectionsPerIp": 20
}
]
}
}
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxCette configuration crée un jeu de règles de connexion de module d'écoute maximum nommé IpLimitRuleSet qui limite chaque adresse IP d'origine à un maximum de 20 connexions concurrentes.
Pour modifier ultérieurement le nombre maximal de connexions concurrentes, mettez à jour l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets et appliquez de nouveau le manifeste.
Lorsque vous utilisez l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets, gardez à l'esprit les éléments suivants :
-
Lorsque vous appliquez un manifeste contenant l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-sets, notez que le moteur Kubernetes prend en charge la gestion de tous les jeux de règles de l'équilibreur de charge. Le moteur Kubernetes ajoute non seulement le jeu de règles spécifié par l'annotation, mais supprime également tous les autres jeux de règles actuellement associés à l'équilibreur de charge. -
Si vous voulez plus tard supprimer un jeu de règles, spécifiez un objet JSON vide comme valeur de l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-setscomme suit :oci.oraclecloud.com/oci-load-balancer-rule-sets: "{}"Lorsque vous spécifiez un objet JSON vide comme valeur de l'annotation, le moteur Kubernetes supprime tous les jeux de règles associés à l'équilibreur de charge et abandonne la gestion des jeux de règles de l'équilibreur de charge.
-
Si vous supprimez simplement l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-setsdu manifeste et appliquez-le, le moteur Kubernetes abandonne la gestion des jeux de règles de l'équilibreur de charge. Notez que si vous supprimez l'annotation, le moteur Kubernetes ne supprime aucun des jeux de règles associés à l'équilibreur de charge. -
Si vous apportez des modifications directes aux jeux de règles de l'équilibreur de charge (ce qui n'est pas recommandé) plutôt que d'utiliser l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-sets, notez le point suivant. Si vous appliquez ultérieurement un manifeste contenant l'annotationoci.oraclecloud.com/oci-load-balancer-rule-sets, le moteur Kubernetes ajoute le jeu de règles spécifié par l'annotation et supprime tous les autres jeux de règles associés à l'équilibreur de charge. Par conséquent, si vous voulez conserver les modifications directes apportées aux jeux de règles de l'équilibreur de charge, n'incluez pas l'annotationoci.oraclecloud.com/oci-load-balancer-rule-setsdans le manifeste.
Définition des règles d'en-tête HTTP
Lorsque le moteur Kubernetes provisionne un équilibreur de charge pour un service Kubernetes de type LoadBalancer, vous pouvez spécifier la taille maximale de l'en-tête HTTP acceptée par les modules d'écoute de l'équilibreur de charge. Vous spécifiez la taille maximale de l'en-tête HTTP à l'aide d'une annotation pour spécifier la taille (en Ko) de la mémoire tampon utilisée pour lire l'en-tête. Les valeurs autorisées pour la taille de la mémoire tampon sont 8, 16, 32 et 64. L'annotation définit une règle d'en-tête HTTP pour l'équilibreur de charge. La règle d'en-tête HTTP s'applique à tous les modules d'écoute de l'équilibreur de charge, sur tous les ports.
Pour plus d'informations sur les règles d'en-tête HTTP, voir Règles d'en-tête HTTP dans la documentation sur l'équilibreur de charge OCI.
Pour spécifier la taille maximale de l'en-tête HTTP acceptée par les modules d'écoute de l'équilibreur de charge, ajoutez l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets dans la section de métadonnées du fichier manifeste. Notez que vous spécifiez la valeur de l'annotation au format JSON, comme suit :
oci.oraclecloud.com/oci-load-balancer-rule-sets: |
{
"<rule-set-name>": {
"items": [
{
"action": "HTTP_HEADER",
"httpLargeHeaderSizeInKB": <value>
}
]
}
}où :
-
<rule-set-name>est le nom de votre choix pour le jeu de règles (entre 1 et 32 caractères de longueur). Par exemple,header-size. -
<value>est la taille maximale de l'en-tête HTTP dans Ko et est l'une des valeurs suivantes :8,16,32ou64.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
oci.oraclecloud.com/oci-load-balancer-rule-sets: |
{
"header-size": {
"items": [
{
"action": "HTTP_HEADER",
"httpLargeHeaderSizeInKB": 16
}
]
}
}
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxPour modifier ultérieurement la taille maximale de l'en-tête HTTP, mettez à jour l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets et appliquez de nouveau le manifeste.
Lorsque vous utilisez l'annotation oci.oraclecloud.com/oci-load-balancer-rule-sets, gardez à l'esprit les éléments suivants :
-
Lorsque vous appliquez un manifeste contenant l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-sets, notez que le moteur Kubernetes prend en charge la gestion de tous les jeux de règles de l'équilibreur de charge. Le moteur Kubernetes ajoute non seulement le jeu de règles spécifié par l'annotation, mais supprime également tous les autres jeux de règles actuellement associés à l'équilibreur de charge. -
Si vous voulez plus tard supprimer un jeu de règles, spécifiez un objet JSON vide comme valeur de l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-setscomme suit :oci.oraclecloud.com/oci-load-balancer-rule-sets: "{}"Lorsque vous spécifiez un objet JSON vide comme valeur de l'annotation, le moteur Kubernetes supprime tous les jeux de règles associés à l'équilibreur de charge et abandonne la gestion des jeux de règles de l'équilibreur de charge.
-
Si vous supprimez simplement l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-setsdu manifeste et appliquez-le, le moteur Kubernetes abandonne la gestion des jeux de règles de l'équilibreur de charge. Notez que si vous supprimez l'annotation, le moteur Kubernetes ne supprime aucun des jeux de règles associés à l'équilibreur de charge. -
Si vous apportez des modifications directes aux jeux de règles de l'équilibreur de charge (ce qui n'est pas recommandé) plutôt que d'utiliser l'annotation
oci.oraclecloud.com/oci-load-balancer-rule-sets, notez le point suivant. Si vous appliquez ultérieurement un manifeste contenant l'annotationoci.oraclecloud.com/oci-load-balancer-rule-sets, le moteur Kubernetes ajoute le jeu de règles spécifié par l'annotation et supprime tous les autres jeux de règles associés à l'équilibreur de charge. Par conséquent, si vous voulez conserver les modifications directes apportées aux jeux de règles de l'équilibreur de charge, n'incluez pas l'annotationoci.oraclecloud.com/oci-load-balancer-rule-setsdans le manifeste.
Indiquer les protocoles du processus d'écoute
Lorsque Kubernetes Engine provisionne un équilibreur de charge pour un service Kubernetes de type LoadBalancer, vous pouvez définir le type de trafic accepté par le module d'écoute en spécifiant le protocole sur lequel le module d'écoute accepte les demandes de connexion.
Notez que si vous ne spécifiez pas explicitement un protocole, "TCP" est utilisé par défaut.
Pour spécifier explicitement le protocole du module d'écoute de l'équilibreur de charge lorsque Kubernetes Engine provisionne un équilibreur de charge pour un service Kubernetes de type LoadBalancer, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-backend-protocol: <value>où <value> est le protocole qui définit le type de trafic accepté par le module d'écoute. Par exemple, "HTTP". Les protocoles valides incluent "HTTP", "TCP" et "GRPC".
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-backend-protocol: "HTTP"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginxNotez que si vous spécifiez GRPC comme protocole, vous devez configurer les deux éléments suivants :
- SSL frontal, à l'aide des annotations
service.beta.kubernetes.io/oci-load-balancer-ssl-ports,oci.oraclecloud.com/oci-load-balancer-ssl-listener-configetservice.beta.kubernetes.io/oci-load-balancer-tls-secret. Pour plus d'informations, voir Interruption de SSL/TLS au niveau de l'équilibreur de charge (SSL frontal). - SSL dorsal, à l'aide des annotations
oci.oraclecloud.com/oci-load-balancer-backendset-ssl-configetservice.beta.kubernetes.io/oci-load-balancer-tls-backendset-secret. Pour plus d'informations, voir Mise en oeuvre de SSL/TLS entre l'équilibreur de charge et les noeuds de travail (SSL dorsal).
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: hello-grpc-service
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-ssl-ports: "443"
service.beta.kubernetes.io/oci-load-balancer-tls-secret: ssl-certificate-secret
service.beta.kubernetes.io/oci-load-balancer-backend-protocol: "GRPC"
oci.oraclecloud.com/oci-load-balancer-listener-ssl-config: '{"CipherSuiteName":"oci-default-http2-ssl-cipher-suite-v1", "Protocols":["TLSv1.2"]}'
oci.oraclecloud.com/oci-load-balancer-backendset-ssl-config: '{"CipherSuiteName":"oci-default-http2-ssl-cipher-suite-v1", "Protocols":["TLSv1.2"]}'
service.beta.kubernetes.io/oci-load-balancer-tls-backendset-secret: ca-ser-secret
spec:
type: LoadBalancer
selector:
app: hello-grpc
ports:
- port: 443
name: grpc
targetPort: 50051Spécification des options de gestion des listes de sécurité lors du provisionnement d'un équilibreur de charge OCI
Vous pouvez rencontrer des problèmes, d'évolutivité et autres, si vous utilisez la fonction de gestion des listes de sécurité de Kubernetes dans des déploiements complexes et avec des outils tels que Terraform. C'est pourquoi Oracle déconseille d'utiliser la fonction de gestion des listes de sécurité de Kubernetes dans les environnements de production.
Notez également que la possibilité d'utiliser des listes de sécurité pour gérer les règles de sécurité sera obsolète dans une version ultérieure. Pour cette raison, Oracle recommande d'utiliser des groupes de sécurité de réseau et l'annotation oci.oraclecloud.com/security-rule-management-mode (voir Spécification des options de gestion des règles de sécurité pour les équilibreurs de charge et les équilibreurs de charge de réseau).
Vous pouvez utiliser la fonction de gestion des listes de sécurité pour configurer la façon dont les règles de liste de sécurité sont gérées pour un équilibreur de charge Oracle Cloud Infrastructure que Kubernetes Engine provisionne pour un service Kubernetes de type LoadBalancer. Cette fonctionnalité est utile si vous démarrez avec Kubernetes, ou pour des déploiements de base.
Pour savoir comment la fonction de gestion des listes de sécurité de Kubernetes gère les listes de sécurité lorsque Kubernetes Engine provisionne un équilibreur de charge pour un service Kubernetes de type LoadBalancer, ajoutez l'annotation suivante dans la section de métadonnées du fichier manifeste :
service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: <value>où <value> est l'une des valeurs suivantes :
-
"None": (recommandé) La gestion des listes de sécurité n'est pas activée. Vous devez configurer une règle de sécurité autorisant le trafic entrant vers les ports appropriés pour les intervalles de ports de noeuds, le port d'état kube-proxy et les intervalles de ports de vérification de l'état. De plus, vous devez configurer des règles de sécurité pour autoriser le trafic entrant vers les équilibreurs de charge (voir Règles de sécurité pour les équilibreurs de charge et les équilibreurs de charge de réseau). -
"All": (par défaut) Toutes les règles de liste de sécurité requises pour les services d'équilibreur de charge sont gérées. -
"Frontend": Seules les règles de liste de sécurité pour le trafic entrant vers l'équilibreur de charge sont gérées. Vous devez configurer une règle de sécurité autorisant le trafic entrant vers les ports appropriés pour les intervalles de ports de noeuds, le port d'état kube-proxy et les intervalles de ports de vérification de l'état.
Oracle recommande de régler explicitement service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode à None.
Dans les grappes avec des noeuds gérés, si vous ne spécifiez pas explicitement un mode de gestion ou si vous spécifiez une valeur non valide, toutes les règles de liste de sécurité sont gérées (équivalent à "All"). Notez que dans ce cas, le moteur Kubernetes crée une règle de sécurité qui autorise le trafic entrant depuis 0.0.0.0/0 (ou depuis les intervalles de ports sources spécifiés dans le fichier manifeste) vers les ports du module d'écoute. Dans les grappes avec des noeuds virtuels, la gestion des listes de sécurité n'est jamais activée et vous devez toujours configurer manuellement des règles de sécurité (équivalent à "None").
Notez que des limites s'appliquent au nombre de règles de trafic entrant et sortant autorisées dans une liste de sécurité (voir Limites de liste de sécurité). Si le nombre de règles de trafic entrant ou sortant dépasse la limite et que <value> est réglé à "All" ou "Frontend", la création ou la mise à jour de l'équilibreur de charge échoue.
Par exemple :
apiVersion: v1
kind: Service
metadata:
name: my-nginx-svc
labels:
app: nginx
annotations:
oci.oraclecloud.com/load-balancer-type: "lb"
service.beta.kubernetes.io/oci-load-balancer-security-list-management-mode: "Frontend"
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx