Nota:
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriversi a un account gratuito, vedere Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti Oracle Cloud Infrastructure. Al termine del laboratorio, sostituire questi valori con quelli specifici del tuo ambiente cloud.
Distribuisci Nextcloud su Ampere A1 su Oracle Cloud Infrastructure
In questa esercitazione, dovrai installare Nextcloud, la popolare piattaforma di collaborazione open source su Oracle Cloud Infrastructure (OCI). Verrà utilizzata un'unica istanza di computazione Ampere A1 per il server Nextcloud. Si eseguirà inoltre Nextcloud come un set di contenitori, utilizzando Podman. Podman è un container engine che consente di gestire ed eseguire container utilizzando gli standard Open Container Initiative. Offre compatibilità completa con le API con Docker e funge da drop in sostituzione del comando docker
. Tuttavia, offre alcuni vantaggi rispetto al Docker, che include un'architettura daemonless, il supporto di container rootless e il supporto di cgroupsv2.
Nextcloud offre immagini di container docker che supportano l'architettura Arm. Nextcloud richiede anche un database, per il quale possiamo usare MySQL o MariaDB. Per distribuzioni più scalabili, puoi utilizzare il servizio di database MySQL in OCI e semplificare la scalabilità, il backup e la gestione del database MySQL.
I dati creati all'interno di un contenitore non vengono resi persistenti e Nextcloud richiede uno storage persistente per memorizzare i file caricati e per lo stato interno. Per rendere persistenti i dati, possiamo utilizzare i volumi utilizzando il servizio di storage a blocchi OCI. Un volume è un dispositivo di storage creato e gestito da Podman. I volumi vengono creati direttamente mediante il comando podman volume
o durante la creazione del contenitore.
Per abilitare l'interfaccia utente basata sul Web e i servizi di Nextcloud, dobbiamo apportare le modifiche necessarie alla lista di sicurezza della rete OCI per consentire il traffico.
Abbiamo una topologia di base per la nostra distribuzione.
Descrizione dell'immagine arch.png
Introduzione
Obiettivi
In questa esercitazione:
- Creare un'istanza di calcolo Ampere A1
- Prepara l'istanza di computazione per la distribuzione di applicazioni gestite in container
- Distribuisci Nextcloud come set di contenitori.
- Connettere l'applicazione e la sincronizzazione del file di impostazione.
- Eseguire il cleanup delle distribuzioni
Prerequisiti
- Un account cloud Oracle Free Tier (Trial), Paid o LiveLabs
- Familiarità con la console OCI
- Panoramica sul networking
- Familiarità con i compartimenti
- Conoscenza concettuale di base dei contenitori e Podman
Impostare l'ambiente
Iniziare iniziando l'ambiente cloud Oracle che verrà utilizzato per creare e distribuire l'applicazione Java EE. Questo ambiente sarà contenuto in un compartimento cloud e la comunicazione all'interno del compartimento verrà eseguita tramite una rete cloud virtuale (VCN). Il compartimento e la VCN isolano e proteggono l'ambiente generale. Distribuirà l'istanza di computazione Ampere A1 per ospitare il server Nextcloud. Una volta creata l'istanza di computazione, puoi impostare i criteri di accesso per esporre l'applicazione e installare Nextcloud nell'istanza.
Impostazione di base dell'infrastruttura OCI
-
Aprire il menu di navigazione. In Governance e amministrazione, andare a Identità e fare clic su Compartimenti. Da questa schermata viene visualizzata una lista di compartimenti, fare clic su Crea compartimento.
-
Immettere quanto riportato di seguito.
- Nome: immettere "AppDev".
- Descrizione: immettere una descrizione (obbligatoria), ad esempio "AppDev compartimento per l'esercitazione introduttiva". Evitare di fornire informazioni riservate.
- Compartimento padre: selezionare il compartimento in cui si desidera che si trovi questo compartimento. Il valore predefinito è il compartimento radice (o la tenancy).
- Fare clic su Crea compartimento.
- Il compartimento è visualizzato nella lista.
Creare un'istanza di calcolo Ampere A1
-
Per creare un'istanza di computazione Ampere A1, utilizzare il menu di navigazione nell'angolo in alto a sinistra della console, quindi andare a Computazione > Istanze.
-
Aprire il flusso di creazione dell'istanza.
- Verificare di essere presenti nel compartimento AppDev
- Fare clic su Crea istanza.
-
Nella pagina di creazione dell'istanza verrà creata la nuova istanza insieme alle nuove risorse di rete, quali la rete cloud virtuale (VCN), il gateway Internet (IG) e molto altro ancora.
- Assegnare un nome all'istanza Nextcloud
- Aggiornare la selezione delle immagini per utilizzare Oracle Linux 8 o versioni successive
- Fare clic sul pulsante Modifica forma per visualizzare le forme di computazione disponibili.
-
Configurare l'immagine per l'istanza.
- Fare clic sul pulsante Modifica immagine per visualizzare le immagini del sistema operativo disponibili.
- Scegliere Oracle Linux 8 o versioni successive.
-
Configurare le risorse per l'istanza.
- Scegliete il processore Ampere Arm in base alla serie di forme.
- Scegliere la forma
VM.Standard.A1.Flex
dall'elenco di forme con processori basati su Braccio Ampere. Le forme Ampere A1 sono flessibili ed è possibile modificare il numero di memorie centrali e la quantità di memoria. Scegliere 1 core e 6 GB di memoria per la VM.
-
Scegliere le opzioni di rete. Crea una nuova VCN e una nuova subnet per la tua prossima distribuzione cloud. Assicurarsi di scegliere di assegnare un indirizzo IP pubblico per l'istanza.
-
Generare e scaricare la coppia di chiavi SSH. Questo passaggio è facoltativo, ma è vivamente consigliato per la manutenzione e gli aggiornamenti successivi. È inoltre possibile portare la chiave pubblica se si dispone già di una coppia di chiavi che si desidera utilizzare. Per informazioni su come generare le chiavi SSH, seguire le istruzioni riportate nell'esercitazione sulla generazione delle chiavi SSH.
-
Fare clic su Crea per creare le risorse di rete e avviare l'istanza di computazione.
Esponi porte applicazione agli utenti
Affinché le applicazioni siano accessibili da Internet, è necessario aprire le porte che verranno utilizzate dall'applicazione. In questa sezione, dovrai configurare le liste di sicurezza sulla tua rete cloud e le regole firewall sull'istanza di computazione per consentire alle applicazioni di inviare e ricevere traffico.
Configurare la rete VCN (Virtual Cloud Network)
Un elenco di sicurezza funge da firewall virtuale per un'istanza, con regole di entrata e uscita che specificano i tipi di traffico consentito verso e da. Elenchi di sicurezza configurati a livello di subnet, che applica le regole di sicurezza a tutti gli elementi di rete in tale subnet. La rete è dotata di una lista di sicurezza predefinita, che contiene un set iniziale di regole. La lista di sicurezza predefinita consente di connettersi all'istanza mediante SSH e affinché l'istanza effettui chiamate di rete in uscita verso qualsiasi destinazione.
- Navigare nella pagina dei dettagli dell'istanza per l'istanza creata. Computazione > Istanze > Fare clic sull'istanza creata
-
Andare alla subnet a cui è collegata l'istanza facendo clic sulla subnet
- Nella subnet, selezionare la lista di sicurezza predefinita
- Fare clic su "Aggiungi regola di entrata" per aggiungere una nuova regola per consentire il traffico in entrata corrispondente alle regole.
- Aggiungere una regola di entrata per consentire il traffico in entrata sulla porta 8080
- Impostare CIDR di origine su
0.0.0.0/0
. Ciò consente il traffico in entrata da tutte le origini. - Impostare l'opzione Intervallo di porte di destinazione su
8080
. In questo modo la destinazione viene impostata solo sulla porta8080
. La regola consente ora che il traffico da tutte le origini utilizzi la porta8080
. Questo è ciò di cui abbiamo bisogno, in modo che la nostra applicazione possa essere raggiunta da qualsiasi luogo. -
Fornire una descrizione.
- Impostare CIDR di origine su
Configurare l'istanza
Le regole del firewall controllano il traffico a livello di pacchetto all'interno/esterno di un'istanza. Puoi configurare le regole firewall direttamente sull'istanza stessa e fornire un livello aggiuntivo di sicurezza.
- Navigare nella pagina dei dettagli dell'istanza per l'istanza creata. Computazione > Istanze > Fare clic sull'istanza creata
- Copiare l'indirizzo IP pubblico dell'istanza.
- Eseguire il login all'istanza utilizzando SSH. Utilizzare la chiave generata o fornita durante il passo di creazione dell'istanza. Il nome utente predefinito per le istanze che utilizzano il sistema operativo Oracle Linux è
opc
. -
Eseguire i comandi di configurazione del firewall. Ciò modifica il firewall nell'istanza stessa per esporre la porta
8080
e accettare il traffico in entrata.sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Distribuisci Nextcloud su Ampere A1
Ora puoi eseguire Nextcloud sulla piattaforma di calcolo Ampere A1 come distribuzione di container. Inoltre, potrai utilizzare i nuovi strumenti per container come Podman, inclusi in Oracle Linux 8. Podman fornisce una utility leggera per eseguire e gestire container compatibili con Open Container Initiative (OCI). Una distribuzione Podman può riutilizzare immagini di container esistenti. Podman non richiede un daemon in esecuzione e consente l'avvio e l'esecuzione dei container senza autorizzazioni root. Per saperne di più su Podman su Oracle Linux, consulta la documentazione ufficiale
Installazione degli strumenti del contenitore
Una volta creata l'istanza con Oracle Linux 8.x, possiamo installare il pacchetto container-tools
per preparare la nostra istanza agli strumenti necessari per distribuire i carichi di lavoro in container.
-
Eseguire il login all'istanza utilizzando SSH. Utilizzare la chiave generata o fornita durante il passo di creazione dell'istanza. Il nome utente predefinito per le istanze in esecuzione sul sistema operativo Oracle Linux è
opc
. -
Installare il modulo
container-tools
che estrae tutti gli strumenti necessari per utilizzare i contenitori.sudo dnf module install container-tools:ol8
sudo dnf install git
Crea una definizione pod
Podman può gestire gruppi di contenitori chiamati Pods. Formalmente, i pod sono un gruppo di uno o più contenitori che condividono gli stessi spazi di nomi di rete, pid e ipc. Questo concetto è stato introdotto inizialmente dal progetto Kubernetes, mentre i pod Podman sono molto simili ai Pods Kubernetes.
In molti modi un pod si comporta come un host virtuale su cui vengono eseguiti i servizi all'interno di ciascun contenitore. Ciò significa che ogni contenitore può accedere ai servizi reciprocamente come se fossero in esecuzione nello stesso host. L'esecuzione di container in questo modo può rimuovere un sacco di complessità intorno alla rete e può rendere più facile limitare l'esposizione del pubblico dei porti che sono destinati solo ai servizi all'interno dell'applicazione stessa.
I pod sono un ottimo modo per gestire i container correlati, come quando un'applicazione è composta da più contenitori. In questa esercitazione verrà distribuito Nextcloud come pod. I contenitori richiesti per NextCloud sono contenuti all'interno del nostro pod e sono iniziati e fermati insieme. Il primo passo per gestire la nostra applicazione come Pod consiste nel creare una definizione di pod vuota.
Creare un pod con il comando riportato di seguito
podman pod create --hostname nextcloud --name nextcloud --publish 8080:80 --infra-image k8s.gcr.io/pause:3.1
podman pod create
: crea un pod.--hostname nextcloud
: imposta il nome host per il pod comenextcloud
--name nextcloud
: imposta il nome del pod comenextcloud
--publish 8080:80
: pubblica la porta80
sul pod nella porta8080
sull'host.
Definisci volumi memoria
Ora che il pod è definito, dovremmo definire alcune opzioni di storage anche prima di popolare il pod con i nostri contenitori. Per impostazione predefinita, i container utilizzano layer di contenitori scrivibili per tutti i file creati all'interno di un contenitore. Ciò significa che i file e i dati creati dai processi in un contenitore non vengono resi persistenti e andranno persi quando il contenitore viene rimosso o interrotto. Inoltre, rende difficile condividere i dati tra i container. I volumi sono il modo migliore per rendere persistenti i dati creati dai container. Possono essere considerate astrazioni di storage per le posizioni di storage nel computer host, ma gestite indipendentemente dal ciclo di vita del contenitore. Inoltre, facilitano la condivisione dei dati tra container installandoli contemporaneamente su più container.
In base ai suggerimenti di Nextcloud, utilizziamo 3 volumi per gestire i dati.
-
Il volume denominato
nextcloud-appdata
memorizzerà lo stato principale dell'applicazione per il cloud successivo -
Il volume denominato
nextcloud-files
memorizzerà i file caricati e creati dagli usi. -
Il volume denominato
nextcloud-db
memorizzerà i file di database per il database MySQL.podman volume create nextcloud-appdata podman volume create nextcloud-files podman volume create nextcloud-db
Esegui MySQL Database
Ora è possibile avviare il database per Nextcloud con il volume collegato. Il contenitore del database è stato avviato nel pod già creato. Il database utilizzato da Nextcloud è MySQL e qui lo eseguiamo come contenitore nel pod. Per una distribuzione più solida e completamente gestita, puoi sostituire questo container con il servizio di database MySQL OCI.
Di seguito è riportato il comando per l'avvio del database e viene illustrata ogni opzione.
Nota: assicurarsi di fornire password sicure per le variabili
MYSQL_PASSWORD
eMYSQL_ROOT_PASSWORD
riportate di seguito.
podman run --detach --pod=nextcloud \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env MYSQL_ROOT_PASSWORD=MYSQL_ROOT_PASSWORD \
--volume nextcloud-db:/var/lib/mysql:Z \
--restart on-failure \
--name nextcloud-db \
mysql/mysql-server:8.0
podman run
: il comando run indica a podman di eseguire un comando in un contenitore con i parametri specificati. In genere il comando da eseguire è definito nell'immagine stessa.--detach
- Modalità di scollegamento: eseguire il contenitore in background e stampare il nuovo ID contenitore.--pod=nextcloud
: esegue il contenitore in un pod esistente. Qui abbiamo scelto di eseguire l'int contenitore che pod abbiamo creato in precedenza per Nextcloud--env
: imposta le variabili d'ambiente arbitrarie. È possibile accedere a queste variabili di ambiente dai processi in esecuzione all'interno del contenitore.--volume nextcloud-db:/var/lib/mysql:Z
: attiva il volume denominatonextcloud-db
nella posizione/var/lib/mysql
, la posizione predefinita per i file di dati MySQL. L'opzioneZ
indica a Podman di etichettare il contenuto con un'etichetta privata non condivisa.--restart on-failure
- Riavvia il criterio da seguire quando i container vengono chiusi. Qui il contenitore verrà riavviato quando non riesce. Un errore si verifica quando il processo nel contenitore esiste con stato diverso da zero.--name nextcloud-db
: assegna il nomenextcloud-db
al contenitore.mysql/mysql-server:8.0
: l'immagine da eseguire per la creazione del contenitore.
Poiché si sta eseguendo il contenitore in modalità indipendente, Podman lo avvierà in background ed esce. Per visualizzare lo stato di avvio e dei log, è possibile eseguire il comando seguente. Premere Ctrl+C
per arrestare i log.
podman logs -f nextcloud-db
Distribuisci Nextcloud
Ora puoi distribuire Nextcloud come un altro contenitore nello stesso pod. I parametri sono simili al comando precedente e qui si passa i dettagli di connettività del database relativi al database che Nextcloud dovrebbe utilizzare.
Nota: assicurarsi che i valori per le variabili
MYSQL_DATABASE
,MYSQL_USER
eMYSQL_PASSWORD
siano gli stessi forniti all'avvio del database. Assicurarsi di aggiornare i valori perNEXTCLOUD_ADMIN_USER
eNEXTCLOUD_ADMIN_PASSWORD
a scelta.
podman run --detach --pod=nextcloud \
--env MYSQL_HOST=127.0.0.1 \
--env MYSQL_DATABASE=nextcloud \
--env MYSQL_USER=nextcloud \
--env MYSQL_PASSWORD=NEXTCLOUD_PASSWORD \
--env NEXTCLOUD_ADMIN_USER=NC_ADMIN \
--env NEXTCLOUD_ADMIN_PASSWORD=NC_PASSWORD \
--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP> \
--volume nextcloud-appdata:/var/www/html:Z \
--volume nextcloud-files:/var/www/html/data:Z \
--restart on-failure \
--name nextcloud-app \
docker.io/library/nextcloud:21
--env MYSQL_HOST=127.0.0.1
: poiché sia il database che l'applicazione si trovano nello stesso pod, l'applicazione può accedere al contenitore del database utilizzando127.0.0.1
, come se fossero entrambi in esecuzione sullo stesso host.--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP>
: i domini sicuri sono una funzione di sicurezza utilizzata da Nextcloud e occorre fornire la lista di ogni dominio a cui è possibile accedere a Nextcloud. In questo caso, sarà l'indirizzo IP pubblico dell'istanza, in quanto ci aspettiamo che Nextcloud venga eseguito.
Per visualizzare i log di avvio che è possibile utilizzare:
podman logs -f nextcloud-app
Una volta completata l'avvio, è possibile passare a http://<your_public_ip>:8080
per raggiungere il server Nextcloud. Utilizzare i valori forniti per NEXTCLOUD_ADMIN_USER
e NEXTCLOUD_ADMIN_PASSWORD
per eseguire il login.
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.
Deploy Nextcloud on Ampere A1 on Oracle Cloud Infrastructure
F50342-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.