Observação:

Usar a Regra de Serviço do OCI Events para Atualizar Registros de DNS entre Regiões para uma Zona Privada com o OCI Functions

Introdução

Neste tutorial, aprenderemos a atualizar automaticamente registros de DNS (Sistema de Nomes de Domínio) para instâncias de computação em uma zona privada em ambas as regiões quando uma nova instância de computação é criada ou quando ela é movida durante um cenário de switchover em um plano do Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR). Este tutorial abrange dois serviços específicos do OCI.

Esse caso de uso foi inicialmente previsto para uso durante um plano de switchover de DR do OCI Full Stack, no qual as instâncias são movidas entre regiões. Essencialmente, o processo de switchover de DR (Recuperação de Desastre) envolve a criação de uma nova instância na nova região e, em seguida, o encerramento da instância na região anterior. Com base nesse cenário, este tutorial se concentra no tipo de evento Iniciar - Fim da Instância, que aciona um OCI Functions para atualizar os registros de DNS para zonas privadas em ambas as regiões.

Essa solução também pode servir como uma automação de zona privada de DNS do OCI padrão. Ele cria um registro DNS para cada nova instância criada no compartimento selecionado ou para qualquer outro filtro especificado para identificar as instâncias de destino. Para obter mais informações, consulte Serviços que Produzem Eventos.

Arquitetura de Alto Nível

T3_1

Observação:

Objetivos

Pré-requisitos

Tarefa 1: Configurar Grupos Dinâmicos

Vá para seu domínio, clique em Grupos Dinâmicos e crie os grupos a seguir.

Nome do Grupo Dinâmico: MyFunctions.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Tarefa 2: Criar Políticas

Vá para Políticas e crie as políticas a seguir.

Nome da Política: FunctionsPolicies.

Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME

Tarefa 3: Criar o OCI Container Registry

  1. Vá para Serviços do Desenvolvedor, clique em Registro de contêiner e crie um repositório privado para a imagem Fn.

    Nome do Repositório: lab/fnpy-event-dns-update.

    T3_1

  2. Verifique os repositórios e anote o Namespace.

    T3_1

  3. Abra o shell de terminal no qual você tem a CLI e o Docker do OCI instalados e faça log-in no registro. Verifique o URL correto da sua região. Neste tutorial, estamos usando a região Leste do Brasil (São Paulo) na qual o URL do registro é gru.ocir.io.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Tarefa 4: Criar as Funções do OCI Python para Atualizar o DNS em Zonas Privadas

  1. Vá para a Console do OCI e clique em Serviços do Desenvolvedor. Em Functions, clique em Applications e Create application.

    T9_1

  2. Crie a configuração para as zonas privadas de DNS do OCI afetadas.

    Observação: Esta variável de configuração especifica os OCIDs das zonas privadas a serem atualizados. Você pode listar vários OCIDs, separados por vírgulas.

    Nome do Segredo Valor
    TARGET_ZONES_OCID Definir a lista de OCIDs PRIVATE ZONES como separados por vírgulas

    Neste tutorial, definiremos duas zonas privadas: uma para a região GRU e outra para a região VCP.

    Amostra:

    ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
    
    ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
    

    T4_2

  3. Vá para o shell de terminal no qual você tem o Docker, a CLI do OCI e a CLI do Fn Project instalados e execute os comandos a seguir para inicializar a função.

    Observação: Se você seguiu as tarefas, o comando de log-in do Docker já foi executado até agora, caso contrário, prossiga com o log-in do Docker na Tarefa 3.3.

    mkdir lab
    cd lab
    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn init --runtime python fnpy-event-dns-update
    cd fnpy-event-dns-update
    ls -lrt
    

    Observação: Neste tutorial, estamos usando a região Leste do Brasil (São Paulo), se você estiver usando outra região, será necessário alterar os locais api-url e registry.

    T4_3

    O comando init criará uma função hello world em func.py. Substituiremos esse código.

  4. Obtenha o código de amostra da função Python aqui: fnpy-event-dns-update.zip, descompacte-o e substitua os arquivos durante o comando init.

    1. Copie o arquivo zip para o diretório do laboratório no qual você executou o comando fn init e verifique os arquivos no diretório.

      ls -lrt
      
    2. Descompacte o arquivo e substitua os arquivos existentes.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. Crie o novo código e implante a função.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Tarefa 5: Criar a Regra do Serviço OCI Events

  1. Vá para a Console do OCI e clique em Observabilidade e Gerenciamento. Em Events Service, selecione Rules e clique em Create Rule.

  2. Digite as seguintes informações.

    • Nome: Informe MyAutoDNSRule.
    • Condições da Regra:
      • Condição 1:
        • Condition: Selecione Event Type.
        • Nome do Serviço: Selecione Compute.
        • Tipo de Evento: Selecione Instance - Launch End.
      • Condição 2:
        • Condition: Selecione Attribute.
        • Nome do Atributo: Selecione compartmentId.
        • Valores de Atributo: Informe o OCID do compartimento.
    • Ações:
      • Tipo de Ação: Selecione Functions.
      • Compartimento da Função: Selecione seu compartimento.
      • Aplicativo da Função: Selecione MyApp.
      • Função: Selecione fnpy-event-dns-update.

    T5_1

    Observação: Neste exemplo, estamos filtrando as instâncias por compartmentID, o que significa que qualquer instância recém-iniciada nesse compartimento acionará a função selecionada. Você pode especificar diferentes filtros e condições com base em suas necessidades.

Tarefa 6: Validar a Solução

Neste tutorial, estabelecemos zonas privadas de DNS nas regiões GRU e VCP e documentamos os OCIDs de cada zona privada de DNS. Esses OCIDs serão usados para configurar o OCI Functions.

  1. Certifique-se de que o OCI Functions esteja disponível e ative o registro em log para ele.

    1. Vá para a Console do OCI e clique em Serviços do Desenvolvedor. Em Funções, clique em Aplicativos e selecione seu aplicativo criado MyApp.

      T6_1

    2. Clique em Logs e selecione Ativar Log.

      T6_1

  2. Verifique as zonas privadas de DNS atuais. Nós configuramos um domínio chamado UBUNTUAPPS.COM em ambas as regiões, conforme mostrado nas imagens a seguir.

    T6_1

    T6_1

  3. Crie uma nova instância de computação para simular um switchover de DR do OCI Full Stack. Isso acionará o evento Instance Launch - END, que, em seguida, chamará o OCI Functions para atualizar a zona privada de DNS nas duas regiões.

    T6_2

    T6_2

  4. Depois que a instância for criada, verifique se a zona privada de DNS foi atualizada corretamente em ambas as regiões.

    T6_3

    T6_3

  5. Revise os logs do OCI Functions para verificar os detalhes da função executada.

    T6_4

Reconhecimentos

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. 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.