Note:

Uso de la regla del servicio OCI Events para actualizar registros de DNS entre regiones para una zona privada con OCI Functions

Introducción

En este tutorial, aprenderemos a actualizar automáticamente los registros del sistema de nombres de dominio (DNS) para las instancias informáticas de una zona privada en ambas regiones cuando se crea una nueva instancia informática o cuando se mueve durante un escenario de switchover en un plan de Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR). En este tutorial se tratan dos servicios de OCI específicos.

Este caso de uso se ha previsto inicialmente para su uso durante un plan de switchover de recuperación ante desastres de pila completa de OCI, donde las instancias se mueven entre regiones. Básicamente, el proceso de switchover de Disaster Recovery (DR) implica la creación de una nueva instancia en la nueva región y, a continuación, la terminación de la instancia en la región anterior. En función de este escenario, este tutorial se centra en el tipo de evento Inicio - Fin de instancia, que dispara una función de OCI para actualizar los registros de DNS para zonas privadas en ambas regiones.

Esta solución también puede servir como automatización de zonas privadas de DNS de OCI por defecto. Crea un registro DNS para cada instancia nueva creada en el compartimento seleccionado o cualquier otro filtro que especifique para identificar las instancias de destino. Para obtener más información, consulte Servicios que generan eventos.

Arquitectura de alto nivel

T3_1

Nota:

Objetivos

Requisitos

Tarea 1: Configurar grupos dinámicos

Vaya al dominio, haga clic en Grupos dinámicos y cree los siguientes grupos.

Nombre de grupo dinámico: MyFunctions.

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

Tarea 2: Crear políticas

Vaya a Políticas y cree las siguientes políticas.

Nombre de la 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

Tarea 3: Creación de OCI Container Registry

  1. Vaya a Servicios para desarrolladores, haga clic en Registro de contenedores y cree un repositorio privado para la imagen de Fn.

    Nombre de repositorio: lab/fnpy-event-dns-update.

    T3_1

  2. Compruebe los repositorios y observe el espacio de nombres.

    T3_1

  3. Abra el shell de terminal donde tiene instalada la CLI de OCI y Docker, y conéctese al registro. Compruebe la URL correcta para su región. En este tutorial, estamos utilizando la región Este de Brasil (Sao Paulo), donde la URL de registro es gru.ocir.io.

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

    T3_3

Tarea 4: Creación de las funciones de OCI de Python para actualizar el DNS en zonas privadas

  1. Vaya a la consola de OCI y haga clic en Servicios para desarrolladores. En Funciones, haga clic en Solicitudes y Crear aplicación.

    T9_1

  2. Cree la configuración para las zonas privadas de DNS de OCI afectadas.

    Nota: Esta variable de configuración especifica los OCID de zonas privadas que se van a actualizar. Puede mostrar varios OCID, separados por comas.

    Nombre de secreto Valor
    TARGET_ZONES_OCID Definir la lista de OCID de zonas privadas como separadas por comas

    En este tutorial, estableceremos dos zonas privadas: una para la región de GRU y otra para la región de VCP.

    Ejemplo:

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

    T4_2

  3. Vaya al shell de terminal donde tiene instalado Docker, la CLI de OCI, la CLI de Fn Project y ejecute los siguientes comandos para inicializar la función.

    Nota: Si ha seguido las tareas, el comando de inicio de sesión de Docker ya se ha ejecutado en este momento, si no es así, continúe con el inicio de sesión de Docker en la tarea 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
    

    Nota: En este tutorial, estamos utilizando la región Este de Brasil (São Paulo). Si está utilizando una región diferente, debe cambiar las ubicaciones api-url y registry.

    T4_3

    El comando init creará una función hello world en func.py. Sobrescribiremos este código.

  4. Obtenga el código de ejemplo de la función Python desde aquí: fnpy-event-dns-update.zip, descomprímalo y sobrescriba los archivos durante el comando init.

    1. Copie el archivo zip en el directorio de prácticas en el que ha ejecutado el comando fn init y compruebe los archivos del directorio.

      ls -lrt
      
    2. Descomprima el archivo y sobrescriba los archivos existentes.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. Cree el nuevo código y despliegue la función.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Tarea 5: Creación de la regla del servicio OCI Events

  1. Vaya a la consola de OCI y haga clic en Observación y gestión. En Servicio de eventos, seleccione Reglas y haga clic en Crear regla.

  2. Introduzca la siguiente información.

    • Nombre: introduzca MyAutoDNSRule.
    • Condiciones de Regla:
      • Condición 1:
        • Condition: seleccione Event Type.
        • Nombre de servicio: seleccione Compute.
        • Tipo de evento: seleccione Instance - Launch End.
      • Condición 2:
        • Condition: seleccione Attribute.
        • Nombre de atributo: seleccione compartmentId.
        • Valores de atributo: introduzca el OCID del compartimento.
    • Acciones:
      • Tipo de acción: seleccione Functions.
      • compartimento de función: seleccione el compartimento.
      • Aplicación de función: seleccione MyApp.
      • Función: seleccione fnpy-event-dns-update.

    T5_1

    Nota: En este ejemplo, estamos filtrando las instancias por compartmentID, lo que significa que cualquier instancia recién iniciada en ese compartimento disparará la función seleccionada. Puede especificar diferentes filtros y condiciones en función de sus necesidades.

Tarea 6: Validar la solución

En este tutorial, hemos establecido zonas privadas de DNS en las regiones GRU y VCP y documentado los OCID para cada zona privada de DNS. Estos OCID se utilizarán para configurar las funciones de OCI.

  1. Asegúrese de que OCI Functions está disponible y active el registro para él.

    1. Vaya a la consola de OCI y haga clic en Servicios para desarrolladores. En Funciones, haga clic en Aplicaciones y seleccione la aplicación creada MyApp.

      T6_1

    2. Haga clic en Logs y seleccione Activar log.

      T6_1

  2. Compruebe las zonas privadas de DNS actuales. Hemos configurado un dominio denominado UBUNTUAPPS.COM en ambas regiones, como se muestra en las siguientes imágenes.

    T6_1

    T6_1

  3. Cree una nueva instancia informática para simular un switchover de recuperación ante desastres de pila completa de OCI. Esto disparará el evento Instance Launch - END, que a continuación llamará a OCI Functions para actualizar la zona privada de DNS en ambas regiones.

    T6_2

    T6_2

  4. Una vez creada la instancia, verifique que la zona privada de DNS se haya actualizado correctamente en ambas regiones.

    T6_3

    T6_3

  5. Revise los logs de OCI Functions para verificar los detalles de la función ejecutada.

    T6_4

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.