Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta grátis, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implante a Próxima Nuvem no Ampere A1 no Oracle Cloud Infrastructure
Neste tutorial, você instalará o Nextcloud, a popular plataforma de colaboração de código aberto no Oracle Cloud Infrastructure (OCI). Você usará uma única instância de computação Ampere A1 para o servidor Nextcloud. Você também deverá executar Nextcloud como um conjunto de contêineres, usando o Podman. O Podman é um mecanismo de contêiner para gerenciar e executar contêineres usando os padrões da Open Container Initiative. Ele oferece total compatibilidade de API com o Docker e atua como uma eliminação na substituição do comando docker
. No entanto, oferece alguns benefícios em comparação com o Docker, que inclui uma arquitetura sem daemon, suporte para contêineres sem raiz e suporte a cgroupsv2.
Nextcloud oferece imagens de contêineres docker que suportam a arquitetura Arm. A próxima nuvem também requer um banco de dados, para o qual podemos usar o MySQL ou MariaDB. Para implantações mais escaláveis, você pode considerar o uso do serviço de banco de dados MySQL no OCI, o que facilita a escalabilidade, o backup e o gerenciamento do banco de dados MySQL.
Os dados criados em um contêiner não são persistidos, e a Próxima Nuvem requer armazenamento persistente para armazenar os arquivos dos quais fazemos upload e para o estado interno. Para persistir nos dados, podemos usar volumes usando o serviço OCI Block Storage. Um volume é um dispositivo de armazenamento criado e gerenciado pelo Podman. Os volumes são criados diretamente usando o comando podman volume
ou durante a criação do contêiner.
Para ativar a interface do usuário baseada na Web Nextcloud e os serviços, precisamos fazer as alterações necessárias na lista de segurança da Rede do OCI para permitir o tráfego.
Com esses componentes, temos uma topologia básica para nossa implantação.
Descrição da ilustração arch.png
Introdução
Objetivos
Neste tutorial, você vai:
- Crie uma instância de computação Ampere A1
- Preparar a instância de computação para implantar aplicativos em contêineres
- Implante a Próxima Nuvem como um conjunto de contêineres.
- Conecte o aplicativo e a sincronização do arquivo de configuração.
- Limpar as implantações
Pré-requisitos
- Uma Conta no Cloud do Oracle Free Tier (Trial), Paga ou LiveLabs
- Familiaridade com a console do OCI
- Visão Geral do Networking
- Familiaridade com Compartimentos
- Conhecimento conceitual básico de contêineres e Podman
Configurar seu Ambiente
Comece iniciando o ambiente de nuvem Oracle que será usado para criar e implantar seu aplicativo Java EE. Esse ambiente estará contido em um Compartimento da nuvem, e a comunicação dentro do Compartimento será por meio de uma VCN (Rede Virtual na Nuvem). O Compartimento e a VCN isolarão e protegerão o ambiente geral. Você implantará a instância de computação Ampere A1 para hospedar o servidor do Nextcloud. Quando a instância de computação for criada, você configurará políticas de acesso para expor o aplicativo e instalar o Nextcloud em sua instância.
Configuração Básica da Infraestrutura do OCI
-
Abra o menu de navegação. Em Governança e Administração, vá para Identidade e clique em Compartimentos. Nesta tela, você verá uma lista de compartimentos. Clique em Criar Compartimento.
-
Informe o seguinte:
- Nome: Informe "AppDev".
- Descrição: Informe uma descrição (necessária), por exemplo: "AppDev compartimento para o tutorial introdutório". Evite digitar informações confidenciais.
- Compartimento Pai: Selecione o compartimento no qual você deseja que este compartimento reside. O padrão é o compartimento (ou tenancy) raiz.
- Clique em Criar Compartimento.
- Seu compartimento é exibido na lista.
Criar uma Instância de Computação A1 Ampere
-
Para criar uma instância de computação Ampere A1, use o menu de navegação no canto superior esquerdo da Console e vá para Computação > Instâncias.
-
Abra o fluxo de criação da instância.
- Verifique se você está no Compartimento AppDev
- Clique em Criar Instância.
-
Na página de criação de instância, você criará a nova instância com os novos recursos de rede, como VCN (Virtual Cloud Network), Gateway de Internet (IG) e muito mais.
- Dê à instância o nome Nextcloud
- Atualize a seleção da Imagem para usar o Oracle Linux 8 ou mais recente
- Clique no botão Alterar Forma para ver as formas de computação disponíveis.
-
Configure a imagem para sua instância.
- Clique no botão Alterar Imagem para ver as imagens do SO disponíveis.
- Escolha Oracle Linux 8 ou mais recente.
-
Configure os recursos para sua instância.
- Escolha o processador baseado no Ampere Arm na opção da série de formas.
- Escolha a forma
VM.Standard.A1.Flex
na lista de formas com processadores baseados no Ampere Arm. As formas Ampere A1 são flexíveis e você pode modificar o número de núcleos e a quantidade de memória. Escolha 1 núcleo e 6 GB de memória para a VM.
-
Escolha suas opções de rede. Crie uma nova VCN e sub-rede para sua próxima implantação na nuvem. Certifique-se de designar um endereço IP público à sua instância.
-
Gere e faça download do par de chaves SSH. Essa etapa é opcional, mas altamente recomendada para manutenção e atualizações posteriores. Você também poderá trazer sua chave pública se já tiver um par de chaves que gostaria de usar. Se você quiser saber como gerar chaves SSH, siga as instruções no tutorial Gerar chaves SSH.
-
Clique em Criar para criar os recursos de rede e iniciar a instância de computação.
Expor Portas do Aplicativo a Usuários
Para que os aplicativos fiquem acessíveis pela Internet, você precisa abrir as portas que nosso aplicativo usará. Nesta seção, você configurará listas de segurança em sua rede na nuvem e regras de firewall na sua instância de computação para permitir que seus aplicativos enviem e recebam tráfego.
Configurar a Rede Virtual na Nuvem (VCN)
Uma lista de segurança atua como um firewall virtual para uma instância, com regras de entrada e saída que especificam os tipos de tráfego de entrada e saída permitidos. Listas de segurança, conforme configuradas no nível da sub-rede, que aplica as regras de segurança a todos os elementos de rede dessa sub-rede. Sua rede vem com uma lista de segurança padrão, que contém um conjunto inicial de regras. A lista de segurança padrão permite que você estabeleça conexão com sua instância usando SSH e, para sua instância, faça chamadas de rede de saída para qualquer destino.
- Navegue na página de detalhes da instância criada. Compute > Instâncias > Clique na instância que você criou
-
Navegue até a sub-rede à qual sua instância está anexada, clicando na sub-rede
- Na sub-rede, selecione a lista de segurança padrão
- Clique em "Adicionar Regra de Entrada" para adicionar uma nova regra para permitir o tráfego de entrada que corresponda às regras.
- Adicione uma regra de entrada para permitir tráfego de entrada na porta 8080
- Defina o CIDR de Origem como
0.0.0.0/0
. Isso permite o tráfego de entrada de todas as origens. - Defina o Intervalo de Portas de Destino como
8080
. Isso define o destino apenas como porta8080
. Agora a regra permite que o tráfego de todas as origens use a porta8080
. É isso que precisamos, para que nosso aplicativo possa ser acessado de qualquer lugar. -
Forneça uma descrição.
- Defina o CIDR de Origem como
Configurar Instância
As regras do firewall controlam o tráfego de entrada/saída de uma instância. Você configura regras de firewall diretamente na instância e fornece um nível adicional de segurança.
- Navegue na página de detalhes da instância criada. Compute > Instâncias > Clique na instância que você criou
- Copie o endereço IP público da sua instância.
- Faça log-in na instância usando SSH. Use a chave que você gerou ou forneceu durante a etapa de criação da instância. O nome de usuário padrão para instâncias que usam o sistema operacional Oracle Linux é
opc
. -
Execute os comandos de configuração do firewall. Isso modifica o firewall na própria instância para expor a porta
8080
e aceitar tráfego de entrada.sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp sudo firewall-cmd --reload
Implantar Próxima Nuvem no Ampere A1
Agora você pode executar o Nextcloud na plataforma de computação Ampere A1 como uma implantação de contêiner. Você também usará as novas ferramentas de contêiner, como Podman, incluídas no Oracle Linux 8. O Podman oferece um utilitário leve para executar e gerenciar contêineres compatíveis com o Open Container Initiative (OCI). Uma implantação de Podman pode reutilizar imagens de contêiner existentes. O podman não requer um daemon em execução e permite que os contêineres sejam iniciados e executados sem permissões root. Para saber mais sobre o Podman no Oracle Linux, visite a documentação oficial
Instale as Ferramentas de Contêiner
Assim que a instância tiver sido criada com o Oracle Linux 8.x, podemos instalar o pacote container-tools
para preparar nossa instância com as ferramentas necessárias para implantar cargas de trabalho em contêiner.
-
Faça log-in na instância usando SSH. Use a chave que você gerou ou forneceu durante a etapa de criação da instância. O nome de usuário padrão para instâncias em execução no sistema operacional Oracle Linux é
opc
. -
Instale o módulo
container-tools
que utiliza todas as ferramentas necessárias para trabalhar com contêineres.sudo dnf module install container-tools:ol8
sudo dnf install git
Criar uma Definição de Pod
Podman pode gerenciar grupos de contêineres chamados Pods. Formalmente, pods são um grupo de um ou mais contêineres que compartilham os mesmos namespaces de rede, pid e ipc. Esse conceito foi introduzido inicialmente pelo projeto Kubernetes, e os pods Podman são muito semelhantes aos Pods do Kubernetes.
Em muitos aspectos, um pod se comporta como um host virtual no qual os serviços dentro de cada contêiner são executados. Isso significa que cada contêiner pode acessar os serviços um no outro contêiner como se estivessem em execução no mesmo host. A execução de contêineres dessa forma pode remover muita complexidade em torno da rede e facilitar a limitação da exposição pública de portas que se destinam apenas a uso por serviços dentro do próprio aplicativo.
Os pods são uma ótima maneira de gerenciar contêineres relacionados, como quando um aplicativo é composto de vários contêineres. Neste tutorial, você implantará Nextcloud as a Pod. Os contêineres necessários para NextCloud estão contidos no nosso Pod e iniciados e interrompidos juntos. A primeira etapa do gerenciamento de nosso aplicativo como Pod é criar uma definição de pod vazia.
Criar um Pod com o comando abaixo
podman pod create --hostname nextcloud --name nextcloud --publish 8080:80 --infra-image k8s.gcr.io/pause:3.1
podman pod create
- cria um pod.--hostname nextcloud
- define o nome do host do pod comonextcloud
--name nextcloud
- define o nome do pod comonextcloud
--publish 8080:80
- publique a porta80
no pod para a porta8080
no host.
Definir Volumes de Armazenamento
Agora que o pod é definido, também devemos definir algumas opções de armazenamento antes de preencher o Pod com nossos contêineres. Os contêineres usam camadas de contêineres graváveis por padrão para todos os arquivos criados em um contêiner. Isso significa que os arquivos e dados criados pelos processos em um contêiner não são persistidos e são perdidos quando o contêiner é removido ou encerrado. Isso também dificulta o compartilhamento dos dados entre contêineres. Os volumes são a forma preferida de persistir os dados criados por contêineres. Elas podem ser consideradas como abstrações de armazenamento para locais de armazenamento na máquina host, mas gerenciadas independentemente do ciclo de vida do contêiner. Eles também facilitam o compartilhamento de dados entre contêineres montando-os simultaneamente em vários contêineres.
Com base nas recomendações da Próxima Nuvem, usamos 3 volumes para gerenciar dados.
-
O volume chamado
nextcloud-appdata
armazenará o estado do aplicativo principal para a próxima nuvem -
O volume chamado
nextcloud-files
armazenará os arquivos submetidos a upload e criados por usos. -
O volume chamado
nextcloud-db
armazenará os arquivos de banco de dados do banco de dados MySQL.podman volume create nextcloud-appdata podman volume create nextcloud-files podman volume create nextcloud-db
Executar o MySQL Database
Agora você pode iniciar o banco de dados para a Próxima Nuvem com o volume anexado. O contêiner do banco de dados é iniciado no pod que já foi criado. O banco de dados usado por Nextcloud é o MySQL, e aqui o estamos executando como um contêiner no pod. Para uma implantação mais robusta e totalmente gerenciada, você pode substituir esse contêiner pelo serviço de banco de dados MySQL do OCI.
O comando para iniciar o banco de dados é mostrado abaixo e cada uma das opções é explicada.
Observação: Assegure-se de fornecer senhas fortes para as variáveis
MYSQL_PASSWORD
eMYSQL_ROOT_PASSWORD
abaixo.
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
- o comando de execução informa ao podman para executar um comando em um contêiner com os parâmetros fornecidos. O comando a ser executado normalmente é definido na própria imagem.--detach
- Modo desanexado: execute o contêiner no plano de fundo e imprima o novo ID do contêiner.--pod=nextcloud
- Execute o contêiner em um pod existente. Aqui escolhemos executar o contêiner no pod que criamos anteriormente para Nextcloud--env
- Define variáveis de ambiente arbitrárias. Essas variáveis de ambiente podem ser acessadas pelos processos em execução no contêiner.--volume nextcloud-db:/var/lib/mysql:Z
- monta o volume chamadonextcloud-db
no local/var/lib/mysql
, o local padrão dos arquivos de dados do MySQL. A opçãoZ
informa ao Podman para rotular o conteúdo com um label privado não compartilhado.--restart on-failure
- Reinicie a política a ser seguida quando os contêineres sairem. Aqui o contêiner será reiniciado quando ele falhar. Uma falha é quando o processo no contêiner existe com um status de existência diferente de zero.--name nextcloud-db
- designa o nomenextcloud-db
ao contêiner.mysql/mysql-server:8.0
- a imagem a ser executada para criar o contêiner
Como você está executando o contêiner no modo desanexado, o Podman o iniciará em segundo plano e sairá. Para ver o status da inicialização e dos logs, você pode executar o comando a seguir. Pressione Ctrl+C
para parar de seguir os logs.
podman logs -f nextcloud-db
Implementar próxima nuvem
Agora você pode implantar o Nextcloud como outro contêiner no mesmo pod. Os parâmetros são semelhantes ao comando anterior e, aqui, você está informando os detalhes de conectividade do banco de dados que o Nextcloud deve usar.
Observação: Certifique-se de que os valores das variáveis
MYSQL_DATABASE
,MYSQL_USER
eMYSQL_PASSWORD
sejam os mesmos fornecidos quando você iniciou o banco de dados. Certifique-se de atualizar os valores deNEXTCLOUD_ADMIN_USER
eNEXTCLOUD_ADMIN_PASSWORD
à sua escolha.
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
- Como tanto o banco de dados quanto o aplicativo estão no mesmo pod, o aplicativo pode acessar o contêiner do banco de dados usando127.0.0.1
, como se ambos estivessem em execução no mesmo host.--env NEXTCLOUD_TRUSTED_DOMAINS=<your public IP>
- Os domínios confiáveis são um recurso de segurança usado pelo Nextcloud e você precisa fornecer a lista de todos os domínios em que o Nextcloud pode ser acessado. Nesse caso, será o endereço IP público da instância, pois é aí que esperaremos que a Nextcloud seja executada.
Para ver os logs de inicialização que você pode usar:
podman logs -f nextcloud-app
Quando a inicialização estiver concluída, você poderá navegar até http://<your_public_ip>:8080
para acessar seu servidor Nextcloud. Use os valores fornecidos para NEXTCLOUD_ADMIN_USER
e NEXTCLOUD_ADMIN_PASSWORD
para fazer log-in.
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Nextcloud on Ampere A1 on Oracle Cloud Infrastructure
F50341-01
November 2021
Copyright © 2021, Oracle and/or its affiliates.