Remarque :

Utiliser l'installation rapide pour déployer Oracle Cloud Native Environment

Introduction

Oracle Cloud Native Environment est une suite entièrement intégrée dédiée au 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 des conteneurs, ainsi que pour installer et configurer 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 runC ou Kata Containers.

Oracle Cloud Native Environment version 1.5.7 a permis d'utiliser l'interface de ligne de commande de la plate-forme Oracle Cloud Native Environment pour effectuer une installation rapide de lui-même. Pour ce faire, utilisez la commande olcnectl provision sur un hôte d'installation (noeud operator). La commande olcnectl provision peut effectuer les opérations suivantes sur les noeuds cible :

Ce tutoriel explique comment effectuer une installation rapide en utilisant la série d'étapes la plus simple possible pour installer Oracle Cloud Native Environment et un cluster Kubernetes. Ce tutoriel utilise des certificats CA privés. Il est recommandé d'utiliser vos propres certificats CA dans un environnement de production.

Vous pouvez obtenir des topologies d'installation plus complexes en écrivant votre propre fichier de configuration Oracle Cloud Native Environment, puis en le transmettant à la commande olcnectl provision à l'aide de l'option -config-file. Pour plus d'informations sur les options de syntaxe fournies par la commande olcnectl provision et sur la façon d'écrire un fichier de configuration, reportez-vous au guide Platform Command-Line Interface.

Objectifs

Ce laboratoire explique 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. La plupart des opérations seront lancées à partir du noeud ocne-operator. Il est donc recommandé d'ouvrir une fenêtre de terminal sur ce noeud au minimum.

  1. Ouvrez un terminal et connectez-vous via SSH à chaque noeud.

    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 vers Unbreakable Enterprise Kernel 7 (UEK7)

Oracle Cloud Native Environment version 1.5.7 a introduit la prise en charge d'Oracle Linux 8 Unbreakable Enterprise Kernel 7. Les étapes suivantes indiquent donc comment effectuer une mise à niveau vers cette nouvelle version de noyau. Les étapes suivantes décrivent la mise à jour de l'environnement d'atelier qui utilise Oracle Linux 8 Update 6 UEK R6 vers Unbreakable Enterprise Kernel 7 (UEK7).

  1. (Sur tous les noeuds) Vérifiez quels référentiels sont actuellement configurés :

    dnf repolist
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ dnf repolist
    repo id                          repo name
    ol8_MySQL80                      MySQL 8.0 for Oracle Linux 8 (x86_64)
    ol8_MySQL80_connectors_community MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)
    ol8_MySQL80_tools_community      MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)
    ol8_UEKR6                        Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
    ol8_addons                       Oracle Linux 8 Addons (x86_64)
    ol8_appstream                    Oracle Linux 8 Application Stream (x86_64)
    ol8_baseos_latest                Oracle Linux 8 BaseOS Latest (x86_64)
    
  2. (Sur tous les noeuds) Vérifiez que le noyau Enterpriose instable est installé

    dnf list installed kernel-uek
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ dnf list installed kernel-uek
    Installed Packages
    kernel-uek.x86_64            5.4.17-2136.311.6.1.el8uek            @@commandline
    kernel-uek.x86_64            5.4.17-2136.312.3.4.el8uek            @ol8_UEKR6   
    kernel-uek.x86_64            5.4.17-2136.313.6.el8uek              @ol8_UEKR6  
    
  3. (Sur tous les noeuds) Activez le nouveau noyau Unbreakable Enterprise Kernel et désactivez l'ancien.

    sudo dnf config-manager --set-disabled ol8_UEKR6
    sudo dnf config-manager --set-enabled ol8_UEKR7
    
  4. (Sur tous les noeuds) Vérifiez quels nouveaux référentiels Unbreakable Enterprise Kernel sont désormais activés.

    dnf repolist
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ dnf repolist
    repo id                            repo name
    ol8_MySQL80                        MySQL 8.0 for Oracle Linux 8 (x86_64)
    ol8_MySQL80_connectors_community   MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)
    ol8_MySQL80_tools_community        MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)
    ol8_UEKR7                          Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)
    ol8_addons                         Oracle Linux 8 Addons (x86_64)
    ol8_appstream                      Oracle Linux 8 Application Stream (x86_64)
    ol8_baseos_latest                  Oracle Linux 8 BaseOS Latest (x86_64)
    
  5. (Sur tous les noeuds) Mettez à niveau l'environnement.

    sudo dnf -y upgrade kernel-uek
    

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

  6. (Sur tous les noeuds) Vérifiez que le noyau Enterpriose instable est installé

    dnf list installed kernel-uek
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ dnf list installed kernel-uek
    Installed Packages
    kernel-uek.x86_64            5.4.17-2136.311.6.1.el8uek            @@commandline
    kernel-uek.x86_64                              5.4.17-2136.312.3.4.el8uek                              @ol8_UEKR6
    kernel-uek.x86_64                              5.4.17-2136.313.6.el8uek                                @ol8_UEKR6
    kernel-uek.x86_64                              5.15.0-3.60.5.1.el8uek                                  @ol8_UEKR7
    
  7. (Sur tous les noeuds), réinitialisez et reconnectez-vous.

    sudo reboot
    
  8. (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>
    
  9. (Sur tous les noeuds) Vérifiez que le nouveau noyau est installé.

    uname -a
    

    Exemple de sortie :

    [oracle@ocne-worker ~]$ uname -a
    Linux ocne-worker 5.15.0-3.60.5.1.el8uek.x86_64 #2 SMP Wed Oct 19 20:04:48 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux
    

Configuration de l'hôte d'installation (noeud Operator) sur Oracle Linux 8

Ces étapes permettent de configurer l'hôte Oracle Linux (noeud operator) afin qu'il puisse être utilisé pour l'installation rapide d'Oracle Cloud Native Environment.

  1. (Sur ocne-operator) Installez le package de version oracle-olcne-release-el8.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (Sur ocne-operator) Activez le référentiel Oracle Cloud Native Environment actuel.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_kvm_appstream ol8_UEKR6
    

    Remarque importante : si vous avez suivi l'étape (facultatif) pour mettre à niveau le noyau vers UEK7, utilisez la commande suivante à la place :

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

    sudo dnf config-manager --disable ol8_olcne14 ol8_olcne13 ol8_olcne12 ol8_developer
    
  4. (Sur ocne-operator) Installez le package logiciel olcnectl.

    sudo dnf -y install olcnectl
    

Effectuer une installation rapide

Les étapes suivantes décrivent la méthode la plus rapide pour configurer un déploiement de base d'Oracle Cloud Native Environment et installer un cluster Kubernetes. Elle nécessite au moins trois noeuds, à savoir :

  1. (Sur ocne-operator), utilisez la commande olcnectl provision pour démarrer l'installation.

    olcnectl provision \
    --api-server ocne-operator \
    --master-nodes ocne-control \
    --worker-nodes ocne-worker \
    --environment-name myenvironment \
    --name mycluster
    

    Remarque importante : cette opération peut prendre entre 10 et 15 minutes et il n'y aura aucune indication visible indiquant que quelque chose se produit jusqu'à la fin.

    Où :

    • -api-server : nom de domaine qualifié complet du noeud sur lequel l'API de plate-forme doit être configurée.
    • -master-nodes - Nom de domaine qualifié complet des noeuds qui seront configurés avec l'agent de plate-forme et auxquels le rôle de plan de contrôle Kubernetes sera affecté. Si plusieurs noeuds sont présents, il doit s'agir d'une liste séparée par des virgules.
    • -worker-nodes - Nom de domaine qualifié complet des noeuds qui seront configurés avec l'agent de plate-forme et auxquels le rôle de processus actif Kubernetes sera affecté. Si plusieurs noeuds sont présents, il doit s'agir d'une liste séparée par des virgules.
    • -environment-name - utilisé pour identifier l'environnement.
    • -name : permet de définir le nom du module Kubernetes.

    Remarque Lors de l'exécution de cette commande, une invite s'affiche et répertorie les modifications à apporter aux hôtes et demande confirmation. Pour éviter cette invite, utilisez l'option --yes. Cette option définit la commande olcnectl provision pour considérer que la réponse à une invite de confirmation est positive (yes).

    Exemple de sortie : affiche un exemple de sortie lorsque le commutateur de commande --yes n'est pas utilisé :

    [oracle@ocne-operator ~]$ olcnectl provision --api-server ocne-operator --master-nodes ocne-control --worker-nodes ocne-worker --environment-name  myenvironment --name mycluster
    INFO[31/10/22 11:31:35] Generating certificate authority             
    INFO[31/10/22 11:31:35] Generating certificate for ocne-operator     
    INFO[31/10/22 11:31:35] Generating certificate for ocne-control      
    INFO[31/10/22 11:31:35] Generating certificate for ocne-worker       
    INFO[31/10/22 11:31:35] Creating directory "/etc/olcne/certificates/" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ocne-operator/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-operator 
    INFO[31/10/22 11:31:35] Copying local file at "certificates/ocne-operator/node.key" to "/etc/olcne/certificates/node.key" on ocne-operator 
    INFO[31/10/22 11:31:35] Creating directory "/etc/olcne/certificates/" on ocne-control 
    The authenticity of host 'ocne-control (10.0.0.151)' can't be established.
    ECDSA key fingerprint is SHA256:NzPd6SBTbrcEgHoaYHY2bnDB357dfPysBXkJLuMVT98.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    INFO[31/10/22 11:31:49] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-control 
    INFO[31/10/22 11:31:49] Copying local file at "certificates/ocne-control/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-control
    INFO[31/10/22 11:31:50] Copying local file at "certificates/ocne-control/node.key" to "/etc/olcne/certificates/node.key" on ocne-control 
    INFO[31/10/22 11:31:50] Creating directory "/etc/olcne/certificates/" on ocne-worker 
    The authenticity of host 'ocne-worker (10.0.0.152)' can't be established.
    ECDSA key fingerprint is SHA256:FV6mTb92EBzV2SRYsdDFfNVYhlJe5s9rWBTPWgAL6VU.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    INFO[31/10/22 11:31:53] Copying local file at "certificates/ca/ca.cert" to "/etc/olcne/certificates/ca.cert" on ocne-worker 
    INFO[31/10/22 11:31:53] Copying local file at "certificates/ocne-worker/node.cert" to "/etc/olcne/certificates/node.cert" on ocne-worker 
    INFO[31/10/22 11:31:54] Copying local file at "certificates/ocne-worker/node.key" to "/etc/olcne/certificates/node.key" on ocne-worker 
    ? Apply api-server configuration on ocne-operator:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Install API Server
        Add firewall port 8091/tcp
    
    Proceed? yes/no(default) yes
    ? Apply control-plane configuration on ocne-control:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Configure firewall rule:
        Add interface cni0 to trusted zone
        Add ports: 8090/tcp 10250/tcp 10255/tcp 8472/udp 6443/tcp
    * Disable swap
    * Load br_netfilter module
    * Load Bridge Tunable Parameters:
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1
    * Set SELinux to permissive
    * Install and enable olcne-agent
    
    Proceed? yes/no(default) yes
    ? Apply worker configuration on ocne-worker:
    * Install oracle-olcne-release
    * Enable olcne15 repo
    * Configure firewall rule:
        Add interface cni0 to trusted zone
        Add ports: 8090/tcp 10250/tcp 10255/tcp 8472/udp
    * Disable swap
    * Load br_netfilter module
    * Load Bridge Tunable Parameters:
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1
    * Set SELinux to permissive
    * Install and enable olcne-agent
    
    Proceed? yes/no(default) yes
    INFO[31/10/22 11:41:48] Kubeconfig for instance "mycluster" in environment "myenvironment" written to kubeconfig.myenvironment.mycluster 
    
  2. (Sur ocne-operator) La plate-forme Oracle Cloud Native Environment et le logiciel de cluster Kubernetes sont désormais installés et configurés sur tous les noeuds. Cela peut être confirmé à l'aide des éléments suivants :

    olcnectl module instances \
    --api-server ocne-operator:8091 \
    --environment-name myenvironment
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module instances --api-server ocne-operator:8091 --environment-name myenvironment
    INSTANCE         	MODULE    	STATE    
    ocne-worker:8090 	node      	installed
    mycluster        	kubernetes	installed
    ocne-control:8090	node      	installed
    
  3. (Sur ocne-operator) Pour éviter d'avoir à utiliser l'indicateur --api-server dans les futures commandes olcnectl, exécutez à nouveau la commande précédente en ajoutant l'indicateur --update-config.

    olcnectl module instances \
    --api-server ocne-operator:8091 \
    --environment-name myenvironment \
    --update-config
    
  4. (Sur ocne-operator) Vous pouvez obtenir des informations plus détaillées sur le déploiement à l'aide de la commande olcnectl module report.

    olcnectl module report \
    --environment-name myenvironment \
    --name mycluster \
    --children \
    --format yaml
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module report --environment-name myenvironment --name mycluster  --children --format yaml
    Environments:
      myenvironment:
        ModuleInstances:
        - Name: mycluster
          Properties:
          - Name: kubectl
          - Name: cloud-provider
          - Name: kubecfg
            Value: file exist
    ...
          - Name: kubecfg
               Value: file exist
          - Name: selinux
            Value: permissive
          - Name: swap
            Value: "off"
    

    Remarque : il est possible de modifier la sortie pour renvoyer cette sortie au format Table. Cependant, cette valeur exige que l'encodage de l'application Terminal soit défini sur UTF-8 (définissez ce qui suit dans le menu de l'application Terminal : Terminal -> Set Encoding -> Unicode -> UTF-8). Exécutez ensuite à nouveau la commande sans l'option --format yaml.

    olcnectl module report \
    --environment-name myenvironment \
    --name mycluster \
    --children
    

    Exemple de sortie :

    [oracle@ocne-operator ~]$ olcnectl module report --environment-name myenvironment --name mycluster --children
    ╭─────────────────────────────────────────────────────────────────────┬─────────────────────────╮
    │ myenvironment                                                       │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ mycluster                                                           │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ Property                                                            │ Current Value           │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ podnetworking                                                       │ running                 │
    │ status_check                                                        │ healthy                 │
    │ cloud-provider                                                      │                         │
    │ kubecfg                                                             │ file exist              │
    │ externalip-webhook                                                  │ uninstalled             │
    │ extra-node-operations                                               │                         │
    │ extra-node-operations-update                                        │ running                 │
    │ kubectl                                                             │                         │
    │ master:ocne-control:8090                                            │                         │
    │ worker:ocne-worker:8090                                             │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ ocne-control:8090                                                   │                         │
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    ...
    ├─────────────────────────────────────────────────────────────────────┼─────────────────────────┤
    │ networking                                                          │ active                  │
    │ swap                                                                │ off                     │
    │ kubecfg                                                             │ file exist              │
    ╰─────────────────────────────────────────────────────────────────────┴─────────────────────────╯
    

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   26m   v1.24.5+1.el8
    ocne-worker    Ready    <none>          25m   v1.24.5+1.el8
    

    ou

    kubectl get pods --all-namespaces
    

    Exemple de sortie :

    [oracle@ocne-control ~]$ kubectl get pods --all-namespaces
    NAMESPACE              NAME                                    READY   STATUS    RESTARTS      AGE
    kube-system            coredns-664c775d6f-6gbcc                1/1     Running   0             26m
    kube-system            coredns-664c775d6f-dvht7                1/1     Running   0             26m
    kube-system            etcd-ocne-control                       1/1     Running   0             27m
    kube-system            kube-apiserver-ocne-control             1/1     Running   0             27m
    kube-system            kube-controller-manager-ocne-control    1/1     Running   1 (27m ago)   27m
    kube-system            kube-flannel-ds-cv9cl                   1/1     Running   0             26m
    kube-system            kube-flannel-ds-cxtz8                   1/1     Running   1 (25m ago)   26m
    kube-system            kube-proxy-cbm8s                        1/1     Running   0             26m
    kube-system            kube-proxy-rxkhb                        1/1     Running   0             26m
    kube-system            kube-scheduler-ocne-control             1/1     Running   0             27m
    

Cela confirme qu'Oracle Cloud Native Environment est configuré et en cours d'exécution sur les trois noeuds.

Pour plus d'informations

Ressources de formation supplémentaires

Explorez d'autres exercices sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir explorateur Oracle Learning.

Pour consulter la documentation du produit, consultez Oracle Help Center.