Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Démarrer avec le niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Configurer Oracle Cloud Infrastructure Container Engine for Kubernetes avec trois noeuds de travail
Présentation
Dans ce tutoriel, nous allons expliquer comment configurer une grappe Kubernetes composée du plan de contrôle Kubernetes et du plan de données (groupe de noeuds) à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Nous allons également déployer et supprimer deux exemples d'application sur la plate-forme Kubernetes pour prouver qu'elle fonctionne. Ce tutoriel préparera les futurs tutoriels qui se pencheront sur les services de réseau offerts dans Kubernetes pour les applications hébergées dans des conteneurs.


Les exemples de modèles de déploiement OKE sont les suivants :
-
Exemple 1 : Grappe avec plugiciel CNI canal, point d'extrémité d'API Kubernetes public, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 2 : Grappe avec plugiciel CNI canal, point d'extrémité d'API Kubernetes privé, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 3 : Grappe avec plugiciel CNI OCI, point d'extrémité d'API Kubernetes public, noeuds de travail privés et équilibreurs de charge publics.
-
Exemple 4 : Grappe avec plugiciel CNI OCI, point d'extrémité d'API Kubernetes privé, noeuds de travail privés et équilibreurs de charge publics.
Pour plus d'informations sur les différents modèles de déploiement OKE que nous pouvons sélectionner, voir Exemples de configurations de ressource de réseau.
Dans ce tutoriel, nous mettrons en oeuvre le modèle de déploiement Exemple 3.
Objectifs
- Nous déploierons une grappe de contrôle Kubernetes et des noeuds de travail entièrement déployés et configurés dans Oracle Cloud Infrastructure (OCI). C'est ce que nous appelons Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Nous déploierons deux exemples d'application dans deux espaces de noms différents où une application sera déployée à l'aide d'un graphique Helm dans un nouvel espace de noms. En fin de compte, nous allons nettoyer les applications ou les pods. Nous ne déploierons aucun service réseau pour les applications ou les pods gérés par Kubernetes.
Tâche 1 : Créer une nouvelle grappe Kubernetes et vérifier les composants
-
Cliquez sur le menu hamburger.

- Cliquez sur Services de développement.
- Cliquez sur Grappes Kubernetes (OKE).

-
Cliquez sur Créer une grappe.

- Sélectionnez Créer rapidement.
- Cliquez sur Soumettre.

-
Dans la page Créer une grappe (rapide), entrez les informations suivantes.
- Entrer un nom de grappe.
- Sélectionnez un compartiment.
- Sélectionnez la version de Kubernetes.
- Sélectionnez le point d'extrémité de l'API Kubernetes à utiliser comme point d'extrémité public.
- Sélectionnez le type de noeud à Géré.
- Faire défiler vers le bas.

- Sélectionnez les noeuds de travail Kubernetes à travailleurs privés.
- Faire défiler vers le bas.

- Conservez le nombre de noeuds (noeuds de travail) par défaut 3.
- Cliquez sur Suivant.

- Vérifiez les paramètres de la grappe.
- Faire défiler vers le bas.

- Vérifiez les paramètres des groupes de noeuds.
- Faire défiler vers le bas.

- Ne cochez pas la case Créer une grappe de base.
- Cliquez sur Créer une grappe.

-
Sert à consulter le statut des différents groupes de pages créés.

- Assurez-vous que tout a un chèque vert.
- Cliquez sur Fermer.

- Vérifiez que le statut est CREATING (Création).
- Faire défiler vers le bas.

-
Vérifiez le statut de création de la grappe et du groupe de noeuds. La grappe de contrôle Kubernetes est en cours de création et le groupe de noeuds de travail sera créé plus tard.

-
Au bout de quelques minutes, la grappe de contrôle Kubernetes a été créée.

-
Le groupe de noeuds de travail va maintenant être créé.

-
Après quelques minutes, le groupe de noeuds de travail a été créé.

- Cliquez sur Groupes de noeuds.
- Notez que les noeuds de travail du groupe sont toujours en cours de création.
- Cliquez sur 3 des noeuds de travail.

-
Notez que tous les noeuds ont le statut Non prêt.

-
Au bout de quelques minutes, ils seront prêts.

La grappe de contrôle et les noeuds de travail Kubernetes sont entièrement déployés et configurés dans Oracle Cloud Infrastructure (OCI). C'est ce que nous appelons Oracle Cloud Infrastructure Container Engine for Kubernetes.
Tâche 2 : Vérifier les composants de grappe Kubernetes déployés dans la console OCI
Lorsque nous utilisons OKE pour créer une grappe Kubernetes, certaines ressources seront créées dans OCI pour prendre en charge ce déploiement.
La première et la plus importante ressource est le réseau en nuage virtuel (VCN). Comme nous avons choisi l'option Création rapide, un nouveau VCN dédié à OKE a été créé.
-
Connectez-vous à la console OCI et naviguez jusqu'à Réseau, Réseaux en nuage virtuels (VCN). Vous verrez le nouveau VCN qui a été créé. Cliquez sur le VCN.

Dans le VCN, vous verrez trois sous-réseaux, un sous-réseau privé et deux sous-réseaux publics pour prendre en charge le déploiement OKE.

-
Vérifiez les ressources.
- Cliquez sur Blocs/préfixes CIDR pour vérifier le CIDR du VCN.
- Notez que
10.0.0.0/16a été affecté par OCI.

- Cliquez sur Tables de routage pour vérifier les tables de routage.
- Notez que deux tables de routage ont été créées : route vers des sous-réseaux privés et route vers des sous-réseaux publics.

- Cliquez sur Passerelles Internet pour vérifier la passerelle Internet qui fournira une connectivité Internet à l'aide des sous-réseaux publics vers et depuis Internet.
- Notez qu'il n'y a qu'une seule passerelle Internet.

- Cliquez sur Listes de sécurité pour vérifier les listes de sécurité qui peuvent être des règles entrantes ou sortantes afin de protéger la connectivité entre les sous-réseaux.
- Notez qu'il existe trois listes de sécurité, l'une utilisée pour la protection de la connectivité des noeuds de travail Kubernetes, l'autre pour la protection des points d'extrémité de l'API Kubernetes et l'autre pour la protection des services Kubernetes.

- Cliquez sur Passerelles NAT pour vérifier la passerelle NAT qui fournira une connectivité Internet à l'aide des sous-réseaux privés vers Internet.
- Notez qu'il n'y a qu'une seule passerelle NAT.

- Cliquez sur Passerelles de service pour vérifier la passerelle de service qui fournira un accès privé à des services Oracle spécifiques, sans exposer les données à une passerelle Internet ou à une passerelle NAT.
- Notez qu'il n'y a qu'une seule passerelle de service.

- Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Calcul, Instances.
- Notez que trois instances créées seront utilisées en tant que trois noeuds de travail Kubernetes spécifiés lors du déploiement.

- Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Gestion des adresses IP, Adresses IP publiques réservées.
- Notez qu'il existe une adresse IP publique se terminant par
.166, réservée pour le point d'extrémité d'API publique Kubernetes.

Si nous plaçons chaque élément d'information que nous venons de collecter et le placer dans un diagramme, alors le diagramme ressemblera à celui illustré dans l'image suivante.

-
Tables avec détails de configuration pour déployer OKE
-
VCN :
Ressource Nom VCN • Nom : OKE-vcn-quick-IH-OKE-CLUSTER-af593850a
• Bloc CIDR : 10.0.0.0/16
• Résolution DNS : SélectionnéPasserelle Internet • Nom : OKE-igw-quick-IH-OKE-CLUSTER-af593850a Passerelle NAT • Nom : OKE-ngw-quick-IH-OKE-CLUSTER-af593850a Passerelle de service • Nom : OKE-sgw-quick-IH-OKE-CLUSTER-af593850a
• Services : Tous les services de la région dans Oracle Services NetworkOptions DHCP • Type de DNS réglé à Résolveur Internet et de réseau VCN -
Sous-réseaux :
Ressource Exemple Sous-réseau public pour le point d'extrémité de l'API Kubernetes Objectif : Point d'extrémité d'API Kubernetes avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.0.0/28
• Table de routage : OKE-public-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Public
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : OKE-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSous-réseau privé pour les noeuds de travail Objectif : Workernodes avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.10.0/24
• Table de routage : S.O.
• Accès au sous-réseau : Privé
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : OKE-nodeseclist-quick-IH-OKE-CLUSTER-af593850aSous-réseau privé pour les pods Objet : pods ayant les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.96.0.0/16
• Table de routage : OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Privé
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : S.O.Sous-réseau public pour les équilibreurs de charge de service Objectif : Équilibreurs de charge ayant les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.20.0/24
• Table de routage : OKE-private-routetable-IH-OKE-CLUSTER-af593850a
• Accès au sous-réseau : Public
• Résolution DNS : Sélectionné
• Options DHCP : Par défaut
• Liste de sécurité : OKE-svclbseclist-quick-IH-OKE-CLUSTER-af593850a -
Tables de routage :
Ressource Exemple Table de routage pour le sous-réseau de point d'extrémité d'API Kubernetes public Objectif : point d'extrémité de l'API routetable-Kubernetes, avec une règle de routage définie comme suit :
• Bloc CIDR de destination : 0.0.0.0/0
• Type de cible : Passerelle Internet
• Cible : OKE-igw-quick-IH-OKE-CLUSTER-af593850aTable de routage pour le sous-réseau de pods privés Purpose: routetable-pods, with two route rules defined as follows:
• Rule for traffic to the internet:
◦ Destination CIDR block: 0.0.0.0/0
◦ Target Type: NAT Gateway
◦ Target: oke-ngw-quick-IH-OKE-CLUSTER-af593850a
• Rule for traffic to OCI services:
◦ Destination: All region Services in Oracle Services Network
◦ Target Type: Service Gateway
◦ Target: oke-sgw-quick-IH-OKE-CLUSTER-af593850aTable de routage pour le sous-réseau d'équilibreurs de charge public Objectif : routetable-serviceloadbalancers, avec une règle de routage définie comme suit :
• Bloc CIDR de destination : 0.0.0.0/0
• Type de cible : Passerelle Internet
• Cible : OKE-igw-quick-IH-OKE-CLUSTER-af593850a
-
-
Règles de liste de sécurité pour le sous-réseau de point d'extrémité d'API Kubernetes public
La liste de sécurité
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850acontient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.-
Règles entrantes :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 0.0.0.0/0 TCP Tous 6 443 Trafic TCP pour les ports : 6443 Accès externe au point d'extrémité de l'API Kubernetes Non 10.0.10.0/24 TCP Tous 6 443 Trafic TCP pour les ports : 6443 Communication entre le travailleur Kubernetes et le point d'extrémité de l'API Kubernetes Non 10.0.10.0/24 TCP Tous 12 250 Trafic TCP pour les ports : 12250 Communication entre les noeuds de travail et le plan de contrôle Kubernetes Non 10.0.10.0/24 ICMP 3, 4 Trafic ICMP pour : 3, 4 Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin -
Règles sortantes :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non Tous les services AMS dans Oracle Services Network TCP Tous 443 Trafic TCP pour les ports : 443 HTTPS Permettre au plan de contrôle Kubernetes de communiquer avec OKE Non 10.0.10.0/24 TCP Tous Tous Trafic TCP pour les ports : Tout Tout le trafic vers les noeuds de travail Non 10.0.10.0/24 ICMP 3, 4 Trafic ICMP pour : 3, 4 Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin
-
-
Règles de liste de sécurité pour le sous-réseau de noeuds de travail privé
La liste de sécurité
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850acontient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.Règles entrantes :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 Tous les protocoles Tout trafic pour tous les ports Permettre aux pods d'un noeud de travail de communiquer avec ceux des autres noeuds de travail Non 10.0.0.0/28 ICMP 3, 4 Trafic ICMP pour : 3, 4 Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin Non 10.0.0.0/28 TCP Tous Tous Trafic TCP pour les ports : Tout Accès TCP à partir du plan de contrôle Kubernetes Non 0.0.0.0/0 TCP Tous 22 Trafic TCP pour les ports : 22 - Protocole de connexion à distance SSH Trafic SSH entrant vers les noeuds de travail Non 10.0.20.0/24 TCP Tous 32 291 Trafic TCP pour les ports : 32291 Non 10.0.20.0/24 TCP Tous 10 256 Trafic TCP pour les ports : 10256 Non 10.0.20.0/24 TCP Tous 31 265 Trafic TCP pour les ports : 31265 Règles sortantes :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 Tous les protocoles Tout trafic pour tous les ports Permettre aux pods d'un noeud de travail de communiquer avec ceux des autres noeuds de travail Non 10.0.0.0/28 TCP Tous 6 443 Trafic TCP pour les ports : 6443 Accès au point d'extrémité de l'API Kubernetes Non 10.0.0.0/28 TCP Tous 12 250 Trafic TCP pour les ports : 12250 Communication entre les noeuds de travail et le plan de contrôle Kubernetes Non 10.0.0.0/28 ICMP 3, 4 Trafic ICMP pour : 3, 4 Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Détection de chemin Non Tous les services AMS dans Oracle Services Network TCP Tous 443 Trafic TCP pour les ports : 443 HTTPS Permettre aux noeuds de communiquer avec OKE pour garantir un démarrage correct et un fonctionnement continu Non 0.0.0.0/0 ICMP 3, 4 Trafic ICMP pour : 3, 4 Destination non joignable : Fragmentation nécessaire mais l'option Ne pas fragmenter a été définie Accès ICMP à partir du plan de contrôle Kubernetes Non 0.0.0.0/0 Tous les protocoles Tout trafic pour tous les ports Noeuds de travail - Accès à Internet -
Règles de liste de sécurité pour le sous-réseau d'équilibreurs de charge public
La liste de sécurité
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850acontient les règles de trafic entrant et sortant, comme indiqué dans les tableaux suivants.-
Règles entrantes :
Sans état Source Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 0.0.0.0/0 TCP Tous 80 Trafic TCP pour les ports : 80 -
Règles sortantes :
Sans état Destination Protocole IP Intervalle de ports sources Intervalle de ports de destination Type et code Autorise Description Non 10.0.10.0/24 TCP Tous 32 291 Trafic TCP pour les ports : 32291 Non 10.0.10.0/24 TCP Tous 10 256 Trafic TCP pour les ports : 10256 Non 10.0.10.0/24 TCP Tous 31 265 Trafic TCP pour les ports : 31265
-
Tâche 3 : Vérifier que la grappe Kubernetes est en cours d'exécution à l'aide de l'interface de ligne de commande
-
Ouvrez la console OCI, cliquez sur le menu hamburger et naviguez jusqu'à Services de développement, Grappes Kubernetes (OKE). Cliquez sur la grappe Kubernetes créée dans la tâche 1.

- Faire défiler vers le bas.
- Cliquez sur Démarrage rapide.

-
Cliquez sur Accéder à la grappe.

- Sélectionner un accès Cloud Shell.
- Cliquez sur Copier pour copier la commande afin d'autoriser l'accès à la grappe Kubernetes.
- Click Launch Cloud Shell.

Le diagramme suivant montre comment la connexion sera établie pour effectuer la gestion sur la grappe OKE à l'aide d'OCI Cloud Shell.

-
Cloud Shell pour OCI va démarrer.

Certains messages d'information seront affichés sur ce qui se passe en arrière-plan.

Dans ce cas, il est possible de laisser OCI Cloud Shell s'exécuter sur différentes architectures d'UC.
-
Cliquez sur Fermer pour fermer ce message d'information.

-
Nous sommes prêts à utiliser Cloud Shell pour OCI pour accéder à la grappe Kubernetes.

-
Collez la commande copiée ci-dessus dans cette tâche.

-
Exécutez la commande suivante pour obtenir des informations sur la grappe Kubernetes.
kubectl cluster-info
-
Exécutez la commande suivante pour obtenir des informations sur les noeuds de travail.
kubectl get nodes
-
Exécutez la commande suivante pour obtenir plus d'informations sur les noeuds de travail.
kubectl get nodes -o wide
-
Exécutez la commande suivante pour effacer l'écran et commencer par un nouvel écran.
clear
- Notez que la sortie précédente a été effacée, mais toujours accessible lorsque vous faites défiler l'affichage vers le haut.
- Cliquez sur l'icône de réduction pour réduire la fenêtre OCI Cloud Shell.

-
Cliquez sur Fermer pour fermer la fenêtre Accéder à votre grappe.

La connexion est établie pour effectuer la gestion sur la grappe OKE à l'aide de Cloud Shell pour OCI.

Tâche 4 : Déployer un exemple d'application Nginx à l'aide de kubectl
-
Exécutez les commandes suivantes.
- Notez la commande pour obtenir la version de Kubernetes.
- Notez la commande de déploiement d'un exemple d'application.
- Cliquez sur Restaurer pour restaurer la fenêtre Cloud Shell pour OCI.

-
Exécutez la commande suivante pour obtenir la version de Kubernetes.
kubectl version
-
Exécutez la commande suivante pour vérifier les pods ou les applications en cours qui sont déployés.
kubectl get podsNotez qu'aucune ressource n'a été trouvée.

-
Exécutez la commande suivante pour déployer un nouvel exemple d'application.
kubectl create -f https://k8s.io/examples/application/deployment.yaml
-
Exécutez la commande suivante pour vérifier les pods ou les applications en cours qui sont déployés.
kubectl get pods -
Notez qu'il existe des pods à l'état RUNNING. Cela signifie que l'application que nous venons de déployer est en cours d'exécution.

-
Exécutez la commande suivante pour obtenir les adresses IP permettant d'accéder à l'application.
kubectl get deploy,svc -
Notez que la nouvelle application déployée n'a aucune adresse IP affectée et que seule la grappe Kubernetes est associée à un service IP de grappe avec une adresse IP interne.

-
Exécutez la commande suivante pour examiner spécifiquement les services (réseau) attachés à la nouvelle application déployée.
kubectl get svc ngnix -
Notez qu'aucun service (réseau) n'est déployé ou attaché pour l'application Nginx déployée. Pour cette raison, nous ne serons pas en mesure d'accéder à l'application à partir d'une autre application ou d'utiliser le navigateur Web pour accéder à la page Web du serveur Web Nginx. Nous en discuterons dans un autre tutoriel.

Tâche 5 : Déployer un exemple d'application MySQL à l'aide du graphique Helm
-
Un graphique Helm est un ensemble qui contient toutes les ressources nécessaires pour déployer une application dans une grappe Kubernetes. Exécutez les commandes suivantes pour :
-
Ajoutez le référentiel Bitnami pour la base de données MySQL.
helm repo add bitnami https://charts.bitnami.com/bitnami -
Déployez une base de données MySQL sur les noeuds de travail Kubernetes et créez également un nouvel espace de noms mysql.
helm install mysql bitnami/mysql -–namespace mysql --create-namespace

-
-
Pour obtenir les applications déployées, exécutez la commande suivante. Cette commande affiche uniquement les applications déployées dans l'espace de noms courant (par défaut).
kubectl get pods -
Notez que seule l'application Nginx apparaît dans l'espace de noms courant (par défaut). Cette commande affiche désormais les applications déployées à l'échelle de la grappe (tous les espaces de noms).
kubectl get pods -A -w- Notez que l'application Nginx s'exécute dans l'espace de noms par défaut.
- Notez que l'application MySQL s'exécute dans le nouvel espace de noms mysql.

Tâche 6 : Nettoyer les pods et les espaces de noms
Nous avons déployé une application dans l'espace de noms par défaut (Nginx) et une autre application dans un nouvel espace de noms (MySQL). En utilisant les graphiques Helm, nettoyons l'environnement afin que nous puissions commencer à nouveau chaque fois que nous en avons besoin.
-
Utilisez la commande suivante pour obtenir tous les noeuds de travail (à l'échelle de la grappe).
kubectl get nodes -o wide -
Utilisez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms courant (par défaut).
kubectl get pods -o wide -
Exécutez la commande suivante pour obtenir tous les espaces de noms.
kubectl get namespaces -
Exécutez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms courant (par défaut).
kubectl get pods --namespace=default -
Exécutez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms MySQL spécifiquement.
kubectl get pods --namespace=mysql



-
Exécutez la commande suivante pour supprimer tous les déploiements ou pods dans l'espace de noms par défaut.
kubectl delete --all deployments --namespace=default -
Utilisez la commande suivante pour vérifier si les déploiements ou les pods sont supprimés.
kubectl get pods --namespace=default -
Utilisez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms MySQL spécifiquement. Il suffit de vérifier si cela existe encore.
kubectl get pods --namespace=mysql

-
Exécutez la commande suivante pour supprimer tous les déploiements ou pods et l'espace de noms MySQL complet.
kubectl delete namespace mysql -
Utilisez cette commande pour rassembler tous les espaces de noms et vérifier si l'espace de noms MySQL est supprimé.
kubectl get namespaces

Remerciements
- Auteur - Iwan Hoogendoorn (spécialiste du réseau OCI)
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 Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95672-02