Nota:

Distribuisci ambiente nativo Oracle Cloud

Introduzione

Oracle Cloud Native Environment è una suite completamente integrata per lo sviluppo e la gestione di applicazioni cloud native. Il modulo Kubernetes è il modulo principale. Viene utilizzato per distribuire e gestire i container e anche per installare e configurare automaticamente i contenitori CRI-O, runC e Kata. CRI-O gestisce il runtime dei container per un cluster Kubernetes. Il runtime può essere runC o Kata Containers.

Obiettivi

Questo laboratorio offre una dimostrazione su come:

Prerequisiti

In questa sezione vengono elencati i sistemi host per eseguire i passi di questa esercitazione. Per avere successo è necessario:

Imposta ambiente laboratorio

Nota: quando si utilizza l'ambiente di laboratorio gratuito, vedere Oracle Linux Lab Basics per le connessioni e altre istruzioni d'uso.

Questo laboratorio coinvolge più sistemi, ognuno dei quali richiede fasi diverse. Si consiglia di iniziare aprendo tre finestre di terminale e collegandosi ai nodi ocne-operator, ocne-control e ocne-worker. Ciò evita la necessità di eseguire ripetutamente il login e il logout.

  1. Aprire un terminale e connettersi tramite ssh a ciascuno dei tre nodi.

    ssh oracle@<ip_address_of_ol_node>
    

Nota Quando un passo indica "(su tutti i nodi)" nel laboratorio, eseguire tali azioni su ocne-operator, ocne-control e ocne-worker. Il motivo di questo approccio è quello di evitare la ripetizione, perché l'azione richiesta sarà identica su ogni nodo.

(Opzionale) Aggiornamento di Oracle Linux

  1. (Su tutti i nodi) Assicurarsi che Oracle Linux sia aggiornato.

    sudo dnf -y update
    

    Il completamento di questa operazione potrebbe richiedere alcuni minuti. È possibile risparmiare tempo se questo passo viene eseguito in parallelo su ogni nodo separatamente.

  2. (Su tutti i nodi) Eseguire il reboot e riconnettersi.

    sudo reboot
    
  3. (Su tutti i nodi) Dopo il reboot del sistema, riconnettersi ai nodi tramite ssh.

    ssh oracle@<ip_address_of_ol_node>
    

Installare e abilitare il repository Yum dell'ambiente nativo Oracle Cloud

  1. (Su tutti i nodi) Installare il repository yum.

    sudo dnf -y install oracle-olcne-release-el8
    
  2. (Su tutti i nodi) Abilita il repository dell'ambiente nativo Oracle Cloud corrente.

    sudo dnf config-manager --enable ol8_olcne15 ol8_addons ol8_baseos_latest ol8_appstream ol8_UEKR6
    
  3. (In tutti i nodi) Disabilita tutte le versioni precedenti del repository.

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

Installa e abilita Chrony

  1. (Su tutti i nodi) Se non è già disponibile nel sistema, installare e abilitare il servizio chrony.

    Controllare se è installato chrony.

    sudo dnf list --installed chrony
    

    Se non è installato, installare chrony.

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

    Nota: l'ambiente di laboratorio gratuito dispone già del servizio cronico (tempo) installato e configurato.

Disabilita swap

  1. (Su tutti i nodi) Disabilitare lo swap su tutti i nodi.

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

Configurare il firewall Oracle Linux

Nota: il servizio firewall è installato e in esecuzione per impostazione predefinita su Oracle Linux.

  1. (In ocne-operator) Impostare le regole firewall per il nodo operatore.

    sudo firewall-cmd --add-port=8091/tcp --permanent
    sudo firewall-cmd --reload
    
  2. In ocne-control impostare le regole firewall per i nodi del piano di controllo.

    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. (In ocne-control) Aggiungere gli elementi seguenti utilizzati per l'alta disponibilità e necessari per superare la convalida.

    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. In ocne-worker, impostare le regole firewall per i nodi di lavoro.

    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
    

Carica modulo filtro bridge

  1. (In ocne-control e ocne-worker) Abilitare e caricare il modulo.

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

Impostazione del nodo operatore

Il nodo operatore esegue e gestisce la distribuzione di ambienti, inclusa la distribuzione del cluster Kubernetes. Un nodo operatore può essere un nodo nel cluster Kubernetes o un host separato, ad esempio in questa esercitazione. Installare Oracle Cloud Native Environment Platform CLI, il server API di piattaforma e le utility sul nodo operatore.

  1. (su ocne-operator) installare l'interfaccia CLI della piattaforma, il server API della piattaforma e le utility.

    sudo dnf -y install olcnectl olcne-api-server olcne-utils
    
  2. (In ocne-operator) Abilitare il servizio olcne-api-server, ma non avviarlo.

    sudo systemctl enable olcne-api-server.service
    

Impostazione dei nodi Kubernetes

Il piano di controllo e i nodi di lavoro Kubernetes contengono i package di agenti e utility della piattaforma dell'ambiente nativa di Oracle Cloud.

  1. In ocne-control e ocne-worker, installare il pacchetto e le utility Platform Agent.

    sudo dnf -y install olcne-agent olcne-utils
    
  2. In ocne-control e ocne-worker abilitare olcne-agent (ma non avviarlo).

    sudo systemctl enable olcne-agent.service
    

I passi precedenti completano l'impostazione iniziale e l'installazione software per ciascun nodo.

(Opzionale) Configurazione server proxy

Se si utilizza un server proxy, configurarlo con CRI-O su ciascun nodo Kubernetes.

Nota: non è richiesto nell'ambiente di laboratorio gratuito.

  1. (Su tutti i nodi) Creare il servizio CRIO.

    sudo mkdir /etc/systemd/system/crio.service.d
    
  2. (Su tutti i nodi) Aprire il file di configurazione proxy con vi e impostarlo sulla modalità di inserimento.

    sudo vi /etc/systemd/system/crio.service.d/proxy.conf
    
  3. (Su tutti i nodi) Sostituire i valori proxy appropriati per quelli nell'ambiente utilizzando il file di esempio riportato di seguito.

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

Impostare i certificati CA privati X.509

Utilizzare lo script /etc/olcne/gen-certs-helper.sh fornito per generare una CA privata e certificati per i nodi. Eseguire lo script dalla directory /etc/olcne sul nodo operatore, salvando i file di certificato nella directory corrente.

  1. In ocne-operator creare i certificati 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
    

    Fornire le informazioni sulla CA privata utilizzando le opzioni --cert-request*. Alcune di queste opzioni esistono nell'esempio. Eseguire il comando gen-certs-helper.sh --help per ottenere un elenco completo delle opzioni.

    • --cert-request-common-name: fornire il nome di dominio DNS (Domain Name System) appropriato per l'ambiente in uso.
    • --nodes: fornire il nome dominio completamente qualificato (FQDN) dei nodi operatore, piano di controllo e di lavoro.

Trasferire i certificati CA privati X.509

Dopo aver generato i certificati, copiarli in ogni nodo.

  1. (In ocne-operator) Aggiornare i dettagli utente nello script di trasferimento fornito.

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

    L'esercitazione richiede questo passo perché l'utente predefinito dello script è opc. Dopo aver installato il prodotto utilizzando l'utente oracle, aggiornare di conseguenza la variabile USER all'interno dello script.

  2. (In ocne-operator) Impostare le autorizzazioni per ogni node.key generato dallo script di creazione del certificato.

    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. In ocne-operator trasferire gli script su ciascun nodo.

    Questo passo richiede la configurazione SSH senza password tra i nodi. Questa configurazione è esterna all'ambito di questa esercitazione, ma è preconfigurata nell'ambiente di laboratorio gratuito.

    bash -ex /etc/olcne/configs/certificates/olcne-tranfer-certs.sh
    
  4. (In tutti i nodi) Verificare che i file siano stati copiati correttamente.

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

    Output di esempio:

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

Impostare i certificati X.509 per il servizio Kubernetes externalIPs

Il servizio Kubernetes externalip-validation-webhook-service richiede l'impostazione dei certificati X.509 prima della distribuzione di Kubernetes.

  1. (In ocne-operator) Generare i certificati.

    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-*: questa opzione utilizza il certificato e la chiave CA creati in precedenza.
  2. (In ocne-operator) Impostare le autorizzazioni per la directory contenente node.key generato dallo script di creazione del certificato.

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

Eseguire il bootstrap del server API della piattaforma

  1. (In ocne-operator) Eseguire lo script bootstrap per configurare il server API della piattaforma per l'utilizzo dei certificati.

    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
    

    Output di esempio:

    [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
    
    • In alternativa, è possibile utilizzare i certificati gestiti da HashiCorp Vault. L'utilizzo di tale metodo non è incluso in questa esercitazione.
  2. (In ocne-operator) Verificare che il server API della piattaforma sia in esecuzione.

    sudo systemctl status olcne-api-server
    

    Output di esempio:

    [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. (In ocne-operator) Premere 'q' per uscire dal processo e passare al passo successivo.

Bootstrap degli agenti della piattaforma

  1. (In ocne-control e ocne-worker) Eseguire lo script bootstrap per configurare l'agente della piattaforma per l'utilizzo dei certificati.

    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
    

Output di esempio:

[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

Creare un file di configurazione CLI della piattaforma

Gli amministratori possono utilizzare un file di configurazione per semplificare la creazione e la gestione di ambienti e moduli. Il file di configurazione, scritto con sintassi YAML valida, include tutte le informazioni relative agli ambienti e ai moduli da creare. L'uso di un file di configurazione salva le voci ripetute delle opzioni di comando CLI della piattaforma.

Durante la distribuzione del laboratorio, viene generato automaticamente un file di configurazione e pronto per l'uso nell'esercizio. Per ulteriori informazioni sulla creazione manuale di un file di configurazione, consultare la documentazione all'indirizzo Using a Configuration File.

  1. (In ocne-operator) visualizzare il contenuto del file di configurazione.

    cat ~/myenvironment.yaml
    

Creare l'ambiente e il modulo Kubernetes

  1. (su ocne-operator) creare l'ambiente.

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

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl environment create --config-file myenvironment.yaml
    Environment myenvironment created.
    
  2. In ocne-operator, creare il modulo Kubernetes.

    olcnectl module create --config-file myenvironment.yaml
    

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module create --config-file myenvironment.yaml
    Modules created successfully.
    
  3. (In ocne-operator) convalidare il modulo Kubernetes.

    olcnectl module validate --config-file myenvironment.yaml
    

    Output di esempio:

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

    In questo esempio non sono presenti errori di convalida. In caso di errori, i comandi necessari per correggere i nodi vengono forniti come output di questo comando.

  4. In ocne-operator installare il modulo Kubernetes.

    olcnectl module install --config-file myenvironment.yaml
    

    Il completamento della distribuzione di Kubernetes sui nodi potrebbe richiedere alcuni minuti.

    Output di esempio:

    [oracle@ocne-operator ~]$ olcnectl module install --config-file myenvironment.yaml
    Modules installed successfully.
    
  5. In ocne-operator, convalidare la distribuzione del modulo Kubernetes.

    olcnectl module instances --config-file myenvironment.yaml
    

    Output di esempio:

    [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
    

Imposta kubectl

  1. (In ocne-control) Impostare il comando 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. (In ocne-control) Verificare il funzionamento di kubectl.

    kubectl get nodes
    

    Output di esempio:

    [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
    

Ulteriori informazioni

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di apprendimento gratuito sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare il sito Oracle Help Center.