Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, 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.
Usar Instâncias de Contêiner do OCI para programar o início e a interrupção das Instâncias de Computação do OCI
Introdução
O Oracle Cloud Infrastructure (OCI) Container Instance é um serviço de computação sem servidor que permite executar contêineres de forma rápida e fácil sem gerenciar servidores.
Você pode usar o serviço OCI Compute para criar instâncias de computação bare metal ou de máquina virtual (VM) para implantar e executar seus aplicativos. O OCI Compute permite que você provisione e gerencie hosts de computação, conhecidos como instâncias.
Este tutorial descreve um exemplo de como usar Instâncias de Contêiner para gerenciar o estado do ciclo de vida das Instâncias de Computação em um compartimento (também pode ser estendido à tenancy). Há casos em que você precisa de uma maneira automatizada de programar a interrupção/início das Instâncias do Serviço Compute - como um job crontab. Por exemplo, você precisa de algumas de suas instâncias de computação para serem executadas durante o dia e pará-las durante a noite para economizar no custo. Esse tipo de job "crontab" pode ser criado com o serviço OCI Container Instance.
Basicamente, a instância de contêiner executa código Python procurando uma tag de formato livre específica em cada instância de computação de um compartimento, em um loop. Se encontrar a tag específica, ela comparará o valor da tag com o horário atual (quando o script for executado) para estabelecer se a instância de computação deve estar no estado em execução ou interrompida nesse momento e decidirá interromper ou iniciar a instância de computação.
Objetivos
- Crie uma imagem Docker
- Crie uma instância de contêiner com base em sua própria imagem
- Trabalhar com o Oracle Cloud Infrastructure Registry
- Passar um argumento para o contêiner ENTRYPOINT
Pré-requisitos
- Conhecimento de Docker, imagens, registro.
- Privilégios de usuário para poder criar políticas de grupo dinâmico (isso permitirá que a instância de contêiner gerencie Instâncias de Computação). Se o usuário não tiver esses privilégios, um administrador da tenancy poderá criar o grupo dinâmico e a política.
- Docker em execução na máquina na qual você executa este tutorial.
- Privilégios de usuário para trabalhar com imagens (push, pull, tag) no Oracle Cloud Infrastructure Registry e um token criado para log-in no Oracle Cloud Infrastructure Registry.
- Familiaridade com o envio de imagens para o Oracle Cloud Infrastructure Registry.
Tarefa 1: Criar um grupo dinâmico para permitir que a Instância do Contêiner gerencie Instâncias do Serviço Compute
-
Isso é necessário para permitir (usando uma política) que sua instância de contêiner em execução gerencie instâncias de computação em seu compartimento.
-
Crie uma regra de correspondência para seu grupo dinâmico conforme mostrado no comando a seguir.
ALL {resource.type = 'computecontainerinstance', resource.compartment.id = 'ocid1.compartment.oc1…… '}
Tarefa 2: Criar uma política para permitir que os recursos do grupo dinâmico gerenciem instâncias de computação
-
Crie a política a seguir.
allow dynamic-group <dynamic group name> to manage instances in compartment <compartment name>
Tarefa 3: Criar a imagem do Docker
-
Criar uma pasta local.
-
Extraia o conteúdo de files.zip e copie todos os arquivos para a pasta local.
-
O arquivo
requirements.txt
contém pacotes Python que serão instalados. Por enquanto, precisamos apenas do pacote oci. -
Crie a imagem usando o Docker.
docker build -t start_stop_compute:latest .
Tarefa 4: Fazer upload da imagem para o Oracle Cloud Infrastructure Registry
-
Faça log-in antes de enviar a imagem para o Oracle Cloud Infrastructure Registry. Para obter mais informações, consulte Fazendo Log-in no Oracle Cloud Infrastructure Registry.
-
Marque a imagem que você acabou de criar conforme mostrado no exemplo a seguir. Para obter mais informações sobre como definir o identificador de imagem e a tag de destino para seu repositório da tenancy/Oracle Cloud Infrastructure Registry, consulte Enviando Imagens Usando a CLI do Docker.
docker tag start_stop_compute:latest fra.ocir.io/orasenatdpltintegration03/fvassrepo1/start_stop_compute:latest
-
Envie a imagem para o Oracle Cloud Infrastructure Registry.
docker push fra.ocir.io/orasenatdpltintegration03/fvassrepo1/start_stop_compute:latest
Tarefa 5: Definir tag de formato livre na instância de computação
-
Se você estiver usando o código fornecido neste tutorial, a tag de formato livre deverá ser chamada
myschedule
. Isso acontece porque o código Python em execução dentro do contêiner está procurando uma tag de formato livre (em metadados de computação) chamadamyschedule
. -
Se quiser que suas instâncias de computação sejam gerenciadas conforme fornecido neste tutorial, adicione a tag de formato livre chamada
myschedule
a cada instância de computação. -
O valor da tag de formato livre deve ser conforme mostrado na seção a seguir, em que "s" significa STOPPED e "r" significa RUNNING.
s,s,s,s,s,s,s,s,r,r,r,r,r,r,r,r,r,s,s,s,s,s,s,s
-
Cada elemento da lista corresponde a uma hora do dia que começa com meia-noite (de 00 a 01 AM). Portanto, o elemento 0 corresponde ao intervalo entre 00 e 01 AM do dia e "s" significa que a instância deve ser interrompida.
myschedule[0] from 00 to 01 AM => s means instance should be stopped myschedule[8] from 08 to 09 AM => r means instance should be running
-
Com base nos detalhes acima, a instância deve ser executada conforme mostrado na seção a seguir.
00-08 stopped 08-17 running 17-00 stopped
Tarefa 6: Criar a instância de contêiner
-
Siga o workflow da console Web do OCI e crie uma nova instância de contêiner.
-
Escolha a imagem que você enviou para o Oracle Cloud Infrastructure Registry na Tarefa 4.
-
Informe como argumento de ponto de entrada o OCID do compartimento no qual você gerenciará as instâncias de computação com o código, conforme mostrado na imagem a seguir.
Links Relacionados
Aquisições
- Francisc Vass (Arquiteto de Nuvem Principal)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site 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.
Use OCI Container Instances to schedule start and stop for OCI Compute Instances
F79241-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.