Remarque :

Déployer un environnement natif Oracle Cloud

Introduction

L'environnement natif Oracle Cloud est une suite entièrement intégrée pour le développement et la gestion d'applications cloud natives. Le module Kubernetes est le module de base. Il est utilisé pour déployer et gérer les conteneurs et installe et configure également automatiquement les conteneurs CRI-O, runC et Kata. CRI-O gère l'exécution de conteneur pour un cluster Kubernetes. L'exécution peut être des conteneurs runC ou Kata.

Objectifs

Ce laboratoire montre comment :

Prérequis

Les systèmes hôtes pour effectuer les étapes de ce tutoriel sont répertoriés dans cette section. Pour réussir, il faut :

Configurer l'environnement des exercices

Remarque : lorsque vous utilisez l'environnement d'atelier gratuit, reportez-vous à Oracle Linux Lab Basics pour obtenir des instructions de connexion et d'utilisation.

Ce laboratoire implique plusieurs systèmes, chacun nécessitant des étapes différentes. Il est recommandé d'ouvrir trois fenêtres de terminal et de se connecter aux noeuds ocne-operator, ocne-control et ocne-worker. Cela évite de devoir se connecter et se déconnecter à plusieurs reprises.

  1. Ouvrez un terminal et connectez-vous via SSH à chacun des trois noeuds.

    ssh oracle@<ip_address_of_ol_node>
    

Remarque Lorsqu'une étape indique "(On all node)" dans l'exercice, effectuez ces actions sur ocne-operator, ocne-control et ocne-worker. La raison de cette approche est d'éviter la répétition, car l'action requise sera identique sur chaque noeud.

(Facultatif) Mise à niveau d'Oracle Linux

  1. (Sur tous les noeuds) Assurez-vous qu'Oracle Linux est à jour.

    sudo dnf -y update
    

    Cette opération peut prendre quelques minutes. Elle peut gagner du temps si cette étape est exécutée en parallèle sur chaque noeud séparément.

  2. (Sur tous les noeuds), réinitialisez et reconnectez-vous.

    sudo reboot
    
  3. (Sur tous les noeuds) Après la réinitialisation du système, reconnectez-vous aux noeuds via ssh.

    ssh oracle@<ip_address_of_ol_node>
    

Installer et activer le référentiel Yum de l'environnement natif Oracle Cloud

  1. (Sur tous les noeuds) Installez le référentiel yum.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (Sur tous les noeuds) Activez le référentiel Oracle Cloud Native Environment en cours.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_UEKR6
    
  3. (Sur tous les noeuds) Désactivez toutes les versions précédentes du référentiel.

    sudo dnf config-manager --disable ol8_olcne12 ol8_olcne13 ol8_olcne14 ol8_developer
    

Installer et activer Chrony

  1. (Sur tous les noeuds) S'il n'est pas déjà disponible sur le système, installez et activez le service chronologique.

    Vérifiez si chrony est installé.

    sudo dnf list --installed chrony
    

    Dans le cas contraire, installez l'ordre chronologique.

    sudo dnf -y install chrony
    sudo systemctl enable --now chronyd
    

    Remarque : le service chrony (time) est déjà installé et configuré dans l'environnement d'atelier gratuit.

Désactiver le swap

  1. (Sur tous les noeuds) Désactivez le swap sur tous les noeuds.

    sudo swapoff -a
    sudo sed -i '/swap/ s/^#*/#/' /etc/fstab
    

Configuration du pare-feu Oracle Linux

Remarque : le service firewalld est installé et s'exécute par défaut sur Oracle Linux.

  1. (Sur ocne-operator) Définissez les règles de pare-feu pour le noeud opérateur.

    sudo firewall-cmd --add-port=8091/tcp --permanent
    sudo firewall-cmd --reload
    
  2. (Sur ocne-control) Définissez les règles de pare-feu pour les noeuds de plan de contrôle.

    sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent
    sudo firewall-cmd --add-port=8090/tcp --permanent
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=10255/tcp --permanent
    sudo firewall-cmd --add-port=8472/udp --permanent
    sudo firewall-cmd --add-port=6443/tcp --permanent
    sudo firewall-cmd --reload
    
  3. (Sur ocne-control) Ajoutez les éléments suivants qui sont utilisés pour la haute disponibilité et requis pour réussir la validation.

    sudo firewall-cmd --add-port=10251/tcp --permanent
    sudo firewall-cmd --add-port=10252/tcp --permanent
    sudo firewall-cmd --add-port=2379/tcp --permanent
    sudo firewall-cmd --add-port=2380/tcp --permanent
    sudo firewall-cmd --reload
    
  4. (Sur ocne-worker) Définissez les règles de pare-feu pour les noeuds de processus actif.

    sudo firewall-cmd --zone=trusted --add-interface=cni0 --permanent
    sudo firewall-cmd --add-port=8090/tcp --permanent
    sudo firewall-cmd --add-port=10250/tcp --permanent
    sudo firewall-cmd --add-port=10255/tcp --permanent
    sudo firewall-cmd --add-port=8472/udp --permanent
    sudo firewall-cmd --reload
    

Chargement du module de filtrage de pont

  1. (Sur ocne-control et ocne-worker) Activez et chargez le module.

    sudo modprobe br_netfilter
    sudo sh -c 'echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf'
    

Configurer le noeud opérateur

Le noeud opérateur exécute et gère le déploiement des environnements, y compris le déploiement du cluster Kubernetes. Un noeud opérateur peut être un noeud dans le cluster Kubernetes ou un hôte distinct, comme dans ce tutoriel. Installez l'interface de ligne de commande, le serveur d'API de plate-forme et les utilitaires Oracle Cloud Native Environment Platform sur le noeud opérateur.

  1. (Sur ocne-operator) Installez l'interface de ligne de commande de plate-forme, le serveur d'API de plate-forme et les utilitaires.

    sudo dnf -y install olcnectl olcne-api-server olcne-utils
    
  2. (Sur ocne-operator) Activez le service olcne-api-server, mais ne le démarrez pas.

    sudo systemctl enable olcne-api-server.service
    

Configuration des noeuds Kubernetes

Le plan de contrôle Kubernetes et les noeuds de processus actif contiennent l'agent Oracle Cloud Native Environment Platform et les packages utilitaires.

  1. (Sur ocne-control et ocne-worker) Installez le package et les utilitaires de l'agent de plate-forme.

    sudo dnf -y install olcne-agent olcne-utils
    
  2. (Sur ocne-control et ocne-worker) Activez olcne-agent (mais pas le démarrer).

    sudo systemctl enable olcne-agent.service
    

Les étapes ci-dessus complètent la configuration initiale et l'installation logicielle de chaque noeud.

(Facultatif) Configuration du serveur proxy

Si vous utilisez un serveur proxy, configurez-le avec CRI-O sur chaque noeud Kubernetes.

Remarque : cette opération n'est pas requise dans l'environnement d'atelier gratuit.

  1. (Sur tous les noeuds) Créez le service CRIO.

    sudo mkdir /etc/systemd/system/crio.service.d
    
  2. (Sur tous les noeuds) Ouvrez le fichier de configuration proxy avec vi et définissez-le sur le mode "insert".

    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. (Sur tous les noeuds), remplacez les valeurs de proxy appropriées pour celles de votre environnement à l'aide du fichier exemple ci-dessous.

    [Service]
    Environment="HTTP_PROXY=proxy.example.com:80"
    Environment="HTTPS_PROXY=proxy.example.com:80"
    Environment="NO_PROXY=.example.com,192.0.2.*"
    

Configurer des certificats d'autorité de certification privés X.509

Utilisez le script /etc/olcne/gen-certs-helper.sh fourni pour générer une CA privée et des certificats pour les noeuds. Exécutez le script à partir du répertoire /etc/olcne sur le noeud opérateur, en enregistrant les fichiers de certificat dans le répertoire en cours.

  1. (Sur ocne-operator, créez les certificats X.509.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-request-organization-unit "My Company Unit" \
    --cert-request-organization "My Company" \
    --cert-request-locality "My Town" \
    --cert-request-state "My State" \
    --cert-request-country US \
    --cert-request-common-name pub.linuxvirt.oraclecvn.com \
    --nodes ocne-worker.pub.linuxvirt.oraclevcn.com,ocne-control.pub.linuxvirt.oraclevcn.com,ocne-operator.pub.linuxvirt.oraclevcn.com
    

    Fournissez les informations d'autorité de certification privée à l'aide des options --cert-request*. Certaines de ces options existent dans l'exemple. Exécutez la commande gen-certs-helper.sh --help pour obtenir la liste complète des options.

    • --cert-request-common-name : indiquez le nom de domaine DNS approprié pour votre environnement.
    • --nodes : indiquez le nom de domaine qualifié complet de vos noeuds d'opérateur, de plan de contrôle et de processus actif.

Transfert des certificats d'autorité de certification privés X.509

Après avoir généré les certificats, copiez-les sur chacun des noeuds.

  1. (Sur ocne-operator) Mettez à jour les détails utilisateur dans le script de transfert fourni.

    sudo sed -i 's/USER=opc/USER=oracle/g' configs/certificates/olcne-tranfer-certs.sh
    

    Ce tutoriel nécessite cette étape car l'utilisateur par défaut du script est opc. Depuis l'installation du produit à l'aide de l'utilisateur oracle, mettez à jour la variable USER dans le script en conséquence.

  2. (Sur ocne-operator) Définissez les autorisations pour chaque noeud.key généré par le script de création de certificat.

    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-control.pub.linuxvirt.oraclevcn.com/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-operator.pub.linuxvirt.oraclevcn.com/node.key
    sudo chmod 644 /etc/olcne/configs/certificates/tmp-olcne/ocne-worker.pub.linuxvirt.oraclevcn.com/node.key
    
  3. (Sur ocne-operator) Transférez les scripts vers chaque noeud.

    Cette étape nécessite une connexion SSH sans mot de passe configurée entre les noeuds. La configuration de ce didacticiel n'est pas comprise dans le cadre de ce didacticiel, mais elle est préconfigurée dans l'environnement d'exercices gratuits.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    
  4. (Sur tous les noeuds) Vérifiez que les fichiers ont été copiés correctement.

    sudo -u olcne ls /etc/olcne/configs/certificates/production
    

    Exemple de sortie :

    [oracle@ocne-control ~]$ sudo -u olcne ls /etc/olcne/configs/certificates/production
    ca.cert  node.cert  node.key
    

Configuration de certificats X.509 pour le service Kubernetes externalIPs

Le service Kubernetes externalip-validation-webhook-service requiert la configuration de certificats X.509 avant le déploiement de Kubernetes.

  1. (Sur ocne-operator) Générez les certificats.

    cd /etc/olcne
    sudo ./gen-certs-helper.sh \
    --cert-dir /etc/olcne/configs/certificates/restrict_external_ip/ \
    --cert-request-organization-unit "My Company Unit" \
    --cert-request-organization "My Company" \
    --cert-request-locality "My Town" \
    --cert-request-state "My State" \
    --cert-request-country US \
    --cert-request-common-name cloud.example.com \
    --nodes externalip-validation-webhook-service.externalip-validation-system.svc,\
    externalip-validation-webhook-service.externalip-validation-system.svc.cluster.local \
    --one-cert \
    --byo-ca-cert /etc/olcne/configs/certificates/production/ca.cert \
    --byo-ca-key /etc/olcne/configs/certificates/production/ca.key
    
    • --byo-ca-* : cette option utilise la clé et le certificat CA précédemment créés.
  2. (Sur ocne-operator) Définissez les autorisations pour le répertoire contenant node.key généré par le script de création de certificat.

    sudo chown -R oracle:oracle /etc/olcne/configs/certificates/restrict_external_ip/
    

Démarrer le serveur d'API de plate-forme

  1. (Sur ocne-operator) Exécutez le script d'initialisation pour configurer le serveur d'API de plate-forme afin qu'il utilise les certificats.

    sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component api-server
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ sudo /etc/olcne/bootstrap-olcne.sh \
    > --secret-manager-type file \
    > --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    > --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    > --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    > --olcne-component api-server
    * olcne-api-server.service - API server for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-api-server.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-api-server.service.d
               `-10-auth.conf
       Active: active (running) since Wed 2022-05-11 13:35:19 GMT; 2s ago
     Main PID: 96132 (olcne-api-serve)
        Tasks: 7 (limit: 203120)
       Memory: 12.2M
       CGroup: /system.slice/olcne-api-server.service
               `-96132 /usr/libexec/olcne-api-server -i /etc/olcne/modules --secret-manager-type file --olcne-ca-path /etc/olcne...
    
    May 11 13:35:19 ocne-operator systemd[1]: Started API server for Oracle Linux Cloud Native Environments.
    May 11 13:35:19 ocne-operator olcne-api-server[96132]: time=11/05/22 13:35:19 level=info msg=Api server listening on: 8091
    
    • Vous pouvez également utiliser des certificats gérés par HashiCorp Vault. L'utilisation de cette méthode n'est pas incluse dans ce tutoriel.
  2. (Sur ocne-operator) Vérifiez que le serveur d'API de plate-forme est en cours d'exécution.

    sudo systemctl status olcne-api-server
    

    Exemple de sortie :

    [oracle@ocne-operator olcne]$ sudo systemctl status olcne-api-server
     * olcne-api-server.service - API server for Oracle Linux Cloud Native Environments
       Loaded: loaded (/usr/lib/systemd/system/olcne-api-server.service; enabled; vendor preset: disabled)
      Drop-In: /etc/systemd/system/olcne-api-server.service.d
               `-10-auth.conf
       Active: active (running) since Wed 2022-05-11 10:44:30 GMT; 9min ago
     Main PID: 59600 (olcne-api-serve)
        Tasks: 7 (limit: 203120)
       Memory: 12.6M
       CGroup: /system.slice/olcne-api-server.service
               `-59600 /usr/libexec/olcne-api-server -i /etc/olcne/modules --secret-manager-type file --olcne-ca-path /etc/olcne/c>
    
    May 11 10:44:30 ocne-operator systemd[1]: Started API server for Oracle Linux Cloud Native Environments.
    May 11 10:44:30 ocne-operator olcne-api-server[59600]: time=11/05/22 10:44:30 level=info msg=Api server listening on: 8091 ...
    
  3. (Sur ocne-operator), appuyez sur "q" pour quitter le processus et passer à l'étape suivante.

Démarrer les agents de plate-forme

  1. (Sur ocne-control et ocne-worker), exécutez le script bootstrap pour configurer l'agent de plate-forme afin qu'il utilise les certificats.

    sudo /etc/olcne/bootstrap-olcne.sh \
    --secret-manager-type file \
    --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
    --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
    --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
    --olcne-component agent
    

Exemple de sortie :

[oracle@ocne-worker ~]$ sudo /etc/olcne/bootstrap-olcne.sh \
> --secret-manager-type file \
> --olcne-node-cert-path /etc/olcne/configs/certificates/production/node.cert \
> --olcne-ca-path /etc/olcne/configs/certificates/production/ca.cert \
> --olcne-node-key-path /etc/olcne/configs/certificates/production/node.key \
> --olcne-component agent
* olcne-agent.service - Agent for Oracle Linux Cloud Native Environments
   Loaded: loaded (/usr/lib/systemd/system/olcne-agent.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/olcne-agent.service.d
           `-10-auth.conf
   Active: active (running) since Wed 2022-05-11 11:13:58 GMT; 2s ago
 Main PID: 66500 (olcne-agent)
    Tasks: 8 (limit: 203120)
   Memory: 7.1M
   CGroup: /system.slice/olcne-agent.service
           `-66500 /usr/libexec/olcne-agent --secret-manager-type file --olcne-ca-path /etc/olcne/configs/certificates/produc...

May 11 11:13:58 ocne-control systemd[1]: Started Agent for Oracle Linux Cloud Native Environments.
May 11 11:13:58 ocne-control olcne-agent[66500]: time=11/05/22 11:13:58 level=info msg=Started server on[::]:8090

Création d'un fichier de configuration de la CLI de plate-forme

Les administrateurs peuvent utiliser un fichier de configuration pour simplifier la création et la gestion des environnements et des modules. Le fichier de configuration, écrit dans une syntaxe YAML valide, inclut toutes les informations sur les environnements et les modules à créer. L'utilisation d'un fichier de configuration enregistre les entrées répétées des options de commande de la CLI de plate-forme.

Lors du déploiement de l'exercice, un fichier de configuration est automatiquement généré et prêt à être utilisé. Pour plus d'informations sur la création manuelle d'un fichier de configuration, reportez-vous à la documentation à l'adresse Utilisation d'un fichier de configuration.

  1. (Sur ocne-operator) Affichez le contenu du fichier de configuration.

    cat ~/myenvironment.yaml
    

Création de l'environnement et du module Kubernetes

  1. (Sur ocne-operator) Créez l'environnement.

    cd ~
    olcnectl environment create --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. (Sur ocne-operator) Créez le module Kubernetes.

    olcnectl module create --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (Sur ocne-operator) Validez le module Kubernetes.

    olcnectl module validate --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module validate --config-file myenvironment.yaml
    Validation of module mycluster succeeded.
    

    Dans cet exemple, il n'y a aucune erreur de validation. En cas d'erreur, les commandes requises pour corriger les noeuds sont fournies en sortie de cette commande.

  4. (Sur ocne-operator) Installez le module Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Le déploiement de Kubernetes sur les noeuds peut prendre plusieurs minutes.

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. (Sur ocne-operator) Validez le déploiement du module Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module instances --config-file myenvironment.yaml
    INSTANCE                                     	MODULE    	STATE    
    mycluster                                    	kubernetes	installed
    ocne-control.pub.linuxvirt.oraclevcn.com:8090	node      	installed
    ocne-worker.pub.linuxvirt.oraclevcn.com:8090 	node      	installed
    

Configurer kubectl

  1. (Sur ocne-control) Configurez la commande kubectl.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    export KUBECONFIG=$HOME/.kube/config
    echo 'export KUBECONFIG=$HOME/.kube/config' >> $HOME/.bashrc
    
  2. (Sur ocne-control) Vérifiez que kubectl fonctionne.

    kubectl get nodes
    

    Exemple de sortie :

    [oracle@ocne-control ~]$ kubectl get nodes
    NAME           STATUS   ROLES                  AGE   VERSION
    ocne-control   Ready    control-plane,master   10m   v1.22.8+1.el8
    ocne-worker    Ready    <none>                 10m   v1.22.8+1.el8
    

Pour plus d'informations

Ressources de formation supplémentaires

Explorez d'autres exercices sur docs.oracle.com/learn ou accédez à davantage de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir Oracle Learning Explorer.

Pour consulter la documentation du produit, consultez le centre d'aide Oracle.