Remarques :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Configuration d'Oracle Cloud Infrastructure Container Engine for Kubernetes avec trois noeuds de processus actif
Introduction
Dans ce tutoriel, nous allons expliquer comment configurer un cluster Kubernetes composé du plan de contrôle Kubernetes et du plan de données (pool de noeuds) à l'aide d'Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE). Nous allons également déployer et supprimer deux exemples d'applications sur la plate-forme Kubernetes pour prouver son fonctionnement. Ce tutoriel préparera les futurs tutoriels en vue d'explorer les services réseau proposés dans Kubernetes pour les applications hébergées par des conteneurs.


Les exemples de modèles de déploiement OKE sont les suivants :
-
Exemple 1 : cluster avec un module d'extension CNI Flannel, une adresse d'API Kubernetes publique, des noeuds de processus actifs privés et un équilibreur de charge public.
-
Exemple 2 : cluster avec le module d'extension CNI Flannel, l'adresse d'API Kubernetes privée, les noeuds de processus actif privé et les équilibreurs de charge publics.
-
Exemple 3 : cluster avec un module d'extension CNI OCI, une adresse d'API Kubernetes publique, des noeuds de processus actifs privés et un équilibreur de charge public.
-
Exemple 4 : cluster avec le module d'extension CNI OCI, l'adresse d'API Kubernetes privée, les noeuds de processus actif privé et les équilibreurs de charge publics.
Pour plus d'informations sur les différents modèles de déploiement OKE que nous pouvons choisir, reportez-vous à Exemples de configuration de ressource réseau.
Dans ce tutoriel, nous allons implémenter le modèle de déploiement de l'Example 3.
Objectifs
- Nous allons déployer un cluster de contrôle Kubernetes et des noeuds de processus actif 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 allons déployer 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. Au final, nous allons nettoyer les applications ou les pods. Nous ne déployerons aucun service réseau pour les applications ou pods gérés par Kubernetes.
Tâche 1 : création d'un cluster Kubernetes et vérification des composants
-
Cliquez sur le menu hamburger.

- Cliquez sur Services de développeur.
- Cliquez sur Clusters Kubernetes (OKE).

-
Cliquez sur Créer un cluster.

- Sélectionnez Création rapide.
- Cliquez sur Soumettre.

-
Sur la page Créer un cluster (rapide), entrez les informations suivantes.
- Entrez un nom de cluster.
- Sélectionnez un compartiment.
- Sélectionnez la version de Kubernetes.
- Sélectionnez l'adresse d'API Kubernetes en tant qu'adresse publique.
- Sélectionnez le type de noeud à gérer.
- Faites défiler vers le bas.

- Sélectionnez les noeuds de processus actif Kubernetes en tant que processeurs privés.
- Faites défiler vers le bas.

- Conservez la valeur par défaut 3 du nombre de noeuds (noeuds de processus actif).
- Fournissez les informations relatives au jeu de transport, puis cliquez sur Suivant.

- Vérifiez les paramètres de cluster.
- Faites défiler vers le bas.

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

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

-
Vérifiez le statut des différents composants créés.

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

- Vérifiez que l'état est CREATING.
- Faites défiler vers le bas.

-
Vérifiez le statut de création du cluster et du pool de noeuds. Le cluster de contrôle Kubernetes est en cours de création et le pool de noeuds de processus actif sera créé ultérieurement.

-
Après quelques minutes, le cluster de contrôle Kubernetes a été créé.

-
Le pool de noeuds de processus actif va maintenant être créé.

-
Après quelques minutes, le pool de noeuds de processus actif a été créé.

- Cliquez sur Pools de noeuds.
- Notez que les noeuds de processus actif du pool sont toujours en cours de création.
- Cliquez sur 3 noeuds de processus actif.

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

-
Au bout de quelques minutes, elles seront prêtes.

Les noeuds de processus actif et de cluster de contrôle 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érification des composants de cluster Kubernetes déployés dans la console OCI
Lorsque nous utilisons OKE pour créer un cluster 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 cloud virtuel (VCN). Etant donné que nous avons choisi l'option Création rapide, un nouveau VCN dédié à OKE a été créé.
-
Connectez-vous à la console OCI et accédez à Networking, Virtual Cloud Networks (VCN), vous verrez le nouveau VCN qui a été créé. Cliquez sur le VCN.

Dans le VCN, vous verrez trois sous-réseaux, un 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.
10.0.0.0/16a été affecté par OCI.

- Cliquez sur Tables de routage pour vérifier les tables de routage.
- Deux tables de routage sont 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 fournit la connectivité Internet à l'aide des sous-réseaux publics vers et depuis Internet.
- Notez qu'il n'existe qu'une seule passerelle Internet.

- Cliquez sur Listes de sécurité pour consulter 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 processus actif Kubernetes, l'autre pour la protection des adresses d'API Kubernetes et la troisième pour la protection des services Kubernetes.

- Cliquez sur Passerelles NAT pour vérifier la passerelle NAT qui fournit la connectivité Internet à l'aide des sous-réseaux privés à Internet.
- Notez qu'il n'existe 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 NAT.
- Notez qu'il n'existe qu'une seule passerelle de service.

- Ouvrez la console OCI, cliquez sur le menu latéral et accédez à Compute, Instances.
- Notez que trois instances créées seront utilisées en tant que trois noeuds de processus actif Kubernetes indiqués au cours du déploiement.

- Ouvrez la console OCI, cliquez sur le menu latéral et accédez à Gestion des adresses IP, Adresses IP publiques réservées.
- Une adresse IP publique se terminant par
.166est réservée à l'adresse d'API publique Kubernetes.

Si nous plaçons toutes les informations que nous venons de collecter et les plaçons dans un diagramme, le diagramme ressemblera à ce qui est illustré dans l'image suivante.

-
Tables avec détails de configuration pour le déploiement d'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 défini sur Internet et résolveur VCN -
Sous-réseaux:
Ressource Exemple Sous-réseau public pour l'adresse d'API Kubernetes Objectif : adresse 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ée
• Options DHCP : par défaut
• Liste de sécurité : oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850aSous-réseau privé pour les noeuds de processus actif Objectif : nœuds de travail avec les propriétés suivantes :
• Type : Régional
• Bloc CIDR : 10.0.10.0/24
• Table de routage : N/A
• 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 Objectif : pods avec 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é : N/ASous-réseau public pour les équilibreurs de charge de service Objectif : équilibreurs de charge avec 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ée
• 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 un sous-réseau d'adresse d'API Kubernetes public Objectif : adresse d'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 But : routetable-pods, avec deux règles de routage définies comme suit :
• Règle pour le trafic vers Internet :
◦ Bloc CIDR de destination : 0.0.0.0/0
◦ Type de cible : NAT Gateway
◦ Cible : oke-ngw-quick-IH-OKE-CLUSTER-af593850a
• Règle pour le trafic vers les services OCI :
◦ Destination : Tous les services régionaux dans Oracle Services Network
◦ Type de cible : Service Gateway
◦ Cible : oke-sgw-quick-IH-OKE-CLUSTER-af593850aTable de routage pour le sous-réseau des équilibreurs de charge publics 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 un sous-réseau d'adresse d'API Kubernetes public
La liste de sécurité
oke-k8sApiEndpoint-quick-IH-OKE-CLUSTER-af593850acontient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.-
Règles entrantes :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 0.0.0.0/0 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Accès externe à l'adresse d'API Kubernetes No 10.0.10.0/24 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Communication de l'adresse d'API Kubernetes et du processus actif Kubernetes No 10.0.10.0/24 TCP Toutes 12 250 Trafic TCP pour les ports : 12250 Communication entre les processus actifs Kubernetes et le plan No 10.0.10.0/24 ICMP 3, 4 Trafic ICMP pour : type 3, code 4 Destination inaccessible : La fragmentation est requise mais l'option Ne pas fragmenter a été définie Repérage de chemin -
Règles sortantes:
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No Tous les services AMS dans Oracle Services Network TCP Toutes 443 Trafic TCP pour les ports : HTTPS 443 Autorise le plan de contrôle de Kubernetes à communiquer avec OKE No 10.0.10.0/24 TCP Toutes Toutes Trafic TCP pour les ports : Tout Tout le trafic vers des noeuds de processus actif No 10.0.10.0/24 ICMP 3, 4 Trafic ICMP pour : type 3, code 4 Destination inaccessible : La fragmentation est requise mais l'option Ne pas fragmenter a été définie Repérage de chemin
-
-
Règles de liste de sécurité pour un sous-réseau de noeuds de processus actif privé
La liste de sécurité
oke-nodeseclist-quick-IH-OKE-CLUSTER-af593850acontient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.Règles entrantes :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 Tous les protocoles Tout le trafic pour tous les ports Autorise les pods sur un noeud d'activité à communiquer avec des pods sur d'autres noeuds d'activité No 10.0.0.0/28 ICMP 3, 4 Trafic ICMP pour : type 3, code 4 Destination inaccessible : La fragmentation est requise mais l'option Ne pas fragmenter a été définie Repérage de chemin No 10.0.0.0/28 TCP Toutes Toutes Trafic TCP pour les ports : Tout Accès TCP à partir du plan de contrôle Kubernetes No 0.0.0.0/0 TCP Toutes 22 Trafic TCP pour les ports : Protocole de connexion distante SSH 22 Trafic SSH entrants vers les noeuds de processus actif No 10.0.20.0/24 TCP Toutes 32 291 Trafic TCP pour les ports : 32291 No 10.0.20.0/24 TCP Toutes 10 256 Trafic TCP pour les ports : 10256 No 10.0.20.0/24 TCP Toutes 31 265 Trafic TCP pour les ports : 31265 Règles sortantes:
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 Tous les protocoles Tout le trafic pour tous les ports Autorise les pods sur un noeud d'activité à communiquer avec des pods sur d'autres noeuds d'activité No 10.0.0.0/28 TCP Toutes 6 443 Trafic TCP pour les ports : 6443 Accès à l'adresse d'API Kubernetes No 10.0.0.0/28 TCP Toutes 12 250 Trafic TCP pour les ports : 12250 Communication entre les processus actifs Kubernetes et le plan No 10.0.0.0/28 ICMP 3, 4 Trafic ICMP pour : type 3, code 4 Destination inaccessible : La fragmentation est requise mais l'option Ne pas fragmenter a été définie Repérage de chemin No Tous les services AMS dans Oracle Services Network TCP Toutes 443 Trafic TCP pour les ports : HTTPS 443 Autoriser les noeuds à communiquer avec OKE pour garantir un démarrage correct et un fonctionnement continu No 0.0.0.0/0 ICMP 3, 4 Trafic ICMP pour : type 3, code 4 Destination inaccessible : La fragmentation est requise mais l'option Ne pas fragmenter a été définie Accès ICMP à partir du plan de contrôle Kubernetes No 0.0.0.0/0 Tous les protocoles Tout le trafic pour tous les ports Accès à Internet par les noeuds de processus actif -
Règles de liste de sécurité pour un sous-réseau d'équilibreurs de charge public
La liste de sécurité
oke-svclbseclist-quick-IH-OKE-CLUSTER-af593850acontient les règles entrantes et sortantes, comme indiqué dans les tableaux suivants.-
Règles entrantes :
Sans conservation de statut Source Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 0.0.0.0/0 TCP Toutes 80 Trafic TCP pour les ports : 80 -
Règles sortantes:
Sans conservation de statut Destination Protocole IP Plage de ports source Plage de ports de destination Type et code Permet Description No 10.0.10.0/24 TCP Toutes 32 291 Trafic TCP pour les ports : 32291 No 10.0.10.0/24 TCP Toutes 10 256 Trafic TCP pour les ports : 10256 No 10.0.10.0/24 TCP Toutes 31 265 Trafic TCP pour les ports : 31265
-
Tâche 3 : vérification de l'exécution du cluster Kubernetes à l'aide de l'interface de ligne de commande
-
Ouvrez la console OCI, cliquez sur le menu latéral et accédez aux services de développeur, aux clusters Kubernetes (OKE). Cliquez sur le cluster Kubernetes créé dans la tâche 1.

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

-
Cliquez sur Accéder au cluster.

- Sélectionnez Accès à Cloud Shell.
- Cliquez sur Copier pour copier la commande afin de permettre l'accès au cluster Kubernetes.
- Cliquez sur Lancer Cloud Shell.

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

-
OCI Cloud Shell démarrera.

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 OCI Cloud Shell pour accéder au cluster Kubernetes.

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

-
Exécutez la commande suivante pour obtenir des informations sur le cluster Kubernetes.
kubectl cluster-info
-
Exécutez la commande suivante pour obtenir des informations sur les noeuds de processus actif.
kubectl get nodes
-
Exécutez la commande suivante pour obtenir plus d'informations sur les noeuds de processus actif.
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 reste accessible lorsque vous faites défiler l'affichage vers le haut.
- Cliquez sur l'icône Réduire pour réduire la fenêtre OCI Cloud Shell.

-
Cliquez sur Fermer pour fermer la fenêtre Accéder au cluster.

La connexion est établie pour effectuer la gestion sur le cluster OKE à l'aide d'OCI Cloud Shell.

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

-
Exécutez la commande suivante pour obtenir la version de Kubernetes.
kubectl version
-
Exécutez la commande suivante pour vérifier les pods ou applications actuellement déployés.
kubectl get podsAucune 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 applications actuellement déployés.
kubectl get pods -
Notez que des pods sont à l'état RUNNING. L'application que nous venons de déployer est donc 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 qu'aucune adresse IP n'est affectée à la nouvelle application déployée et que seul le cluster Kubernetes dispose d'un service IP de cluster associé à une adresse IP interne.

-
Exécutez la commande suivante pour examiner spécifiquement les services (réseau) connectés de l'application nouvellement déployée.
kubectl get svc ngnix -
Notez qu'aucun service (réseau) n'est déployé ou connecté 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 dans le 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 package qui contient toutes les ressources nécessaires pour déployer une application vers un cluster 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 processus actif Kubernetes et créez également un 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 actuel (par défaut).
kubectl get pods -
Notez que seule l'application Nginx apparaît dans l'espace de noms actuel (par défaut). Cette commande affiche désormais les applications déployées à l'échelle du cluster (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.
- L'application MySQL est en cours d'exécution dans le nouvel espace de noms mysql.

Tâche 6 : nettoyage des pods et des 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 à zéro chaque fois que nous en avons besoin.
-
Utilisez la commande suivante pour obtenir tous les noeuds de processus actif (à l'échelle du cluster).
kubectl get nodes -o wide -
Utilisez la commande suivante pour obtenir tous les pods en cours d'exécution dans l'espace de noms actuel (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 spécifiquement tous les pods en cours d'exécution dans l'espace de noms (par défaut).
kubectl get pods --namespace=default -
Exécutez la commande suivante pour obtenir spécifiquement tous les pods en cours d'exécution dans l'espace de noms MySQL.
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 pods sont supprimés.
kubectl get pods --namespace=default -
Utilisez la commande suivante pour obtenir spécifiquement tous les pods en cours d'exécution dans l'espace de noms MySQL. Vérifiez simplement 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 collecter tous les espaces de noms et vérifier si l'espace de noms MySQL est supprimé.
kubectl get namespaces

Accusés de réception
- Auteur - Iwan Hoogendoorn (spécialiste réseau OCI)
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 Oracle Cloud Infrastructure Container Engine for Kubernetes with Three Worker Nodes
F95673-02