Implementación de una base de datos de Azure Cosmos DB en Azure Container Instances

En este artículo, aprenderá a usar Terraform para implementar una base de datos de Azure Cosmos en Azure Container Instances.

En este artículo aprenderá a:

  • Creación de una instancia de Azure Cosmos DB
  • Creación de una instancia de Azure Container Instance
  • Creación de una aplicación que funcione en estos dos recursos

1. Configurar su entorno

  • Suscripción de Azure: Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

2. Creación de la primera configuración

En esta sección, creará la configuración para una instancia de Azure Cosmos DB.

  1. Inicie sesión en Azure Portal.

  2. Abra Azure Cloud Shell.

  3. Inicie el editor de Cloud Shell:

    code main.tf
    
  4. La configuración de este paso modela un par de recursos de Azure. Estos recursos incluyen un grupo de recursos de Azure y una instancia de Azure Cosmos DB. Se usa un entero aleatorio para crear un nombre de instancia de Cosmos DB único. Se configuran también varios valores de Cosmos DB. Para más información, consulte la referencia de Terraform para Cosmos DB. Inserte el código siguiente en el archivo :

    resource "azurerm_resource_group" "vote-resource-group" {
      name     = "vote-resource-group"
      location = "westus"
    }
    
    resource "random_integer" "ri" {
      min = 10000
      max = 99999
    }
    
    resource "azurerm_cosmosdb_account" "vote-cosmos-db" {
      name                = "tfex-cosmos-db-${random_integer.ri.result}"
      location            = azurerm_resource_group.vote-resource-group.location
      resource_group_name = azurerm_resource_group.vote-resource-group.name
      offer_type          = "Standard"
      kind                = "GlobalDocumentDB"
    
      consistency_policy {
        consistency_level       = "BoundedStaleness"
        max_interval_in_seconds = 10
        max_staleness_prefix    = 200
      }
    
      geo_location {
        location          = "westus"
        failover_priority = 0
      }
    }
    
  5. Guarde el archivo ( Ctrl > S) y salga del editor (>).

3. Ejecución de la configuración

En esta sección, se usan varios comandos de Terraform para ejecutar la configuración.

  1. El comando terraform init inicializa el directorio de trabajo. En Cloud Shell, ejecute el comando siguiente:

    terraform init
    
  2. Se puede usar el comando terraform plan para validar la sintaxis de configuración. El parámetro -out dirige los resultados a un archivo. El archivo de salida se puede usar más adelante para aplicar la configuración. En Cloud Shell, ejecute el comando siguiente:

    terraform plan --out plan.out
    
  3. El comando terraform apply se usa para aplicar la configuración. Se especifica el archivo de salida del paso anterior. Este comando hace que se creen los recursos de Azure. En Cloud Shell, ejecute el comando siguiente:

    terraform apply plan.out
    
  4. Para comprobar los resultados en Azure Portal, vaya al nuevo grupo de recursos. La nueva instancia de Azure Cosmos DB está en el nuevo grupo de recursos.

4. Actualización de la configuración

En esta sección se muestra cómo actualizar la configuración para incluir una instancia de Azure Container Instances. El contenedor ejecuta una aplicación que lee y escribe datos en Cosmos DB.

  1. Inicie el editor de Cloud Shell:

    code main.tf
    
  2. La configuración de este paso establece dos variables de entorno: COSMOS_DB_ENDPOINT y COSMOS_DB_MASTERKEY. Estas variables contienen la ubicación y la clave para acceder a la base de datos. Los valores de estas variables se obtienen de la instancia de la base de datos que se creó en el paso anterior. Este proceso se denomina interpolación. Para más información acerca de la interpolación de Terraform, consulte Sintaxis de interpolación. La configuración también incluye un bloque de salida, que devuelve el nombre de dominio completo (FQDN) de la instancia del contenedor. Inserte el código siguiente en el archivo :

    resource "azurerm_container_group" "vote-aci" {
      name                = "vote-aci"
      location            = azurerm_resource_group.vote-resource-group.location
      resource_group_name = azurerm_resource_group.vote-resource-group.name
      ip_address_type     = "public"
      dns_name_label      = "vote-aci"
      os_type             = "linux"
    
      container {
        name   = "vote-aci"
        image  = "microsoft/azure-vote-front:cosmosdb"
        cpu    = "0.5"
        memory = "1.5"
        ports {
          port     = 80
          protocol = "TCP"
        }
    
        secure_environment_variables = {
          "COSMOS_DB_ENDPOINT"  = azurerm_cosmosdb_account.vote-cosmos-db.endpoint
          "COSMOS_DB_MASTERKEY" = azurerm_cosmosdb_account.vote-cosmos-db.primary_master_key
          "TITLE"               = "Azure Voting App"
          "VOTE1VALUE"          = "Cats"
          "VOTE2VALUE"          = "Dogs"
        }
      }
    }
    
    output "dns" {
      value = azurerm_container_group.vote-aci.fqdn
    }
    
  3. Guarde el archivo ( Ctrl > S) y salga del editor (>).

  4. Como hizo en la sección anterior, ejecute el siguiente comando para ver los cambios que se deben realizar:

    terraform plan --out plan.out
    
  5. Por último, ejecute el comando terraform apply para aplicar la configuración.

    terraform apply plan.out
    
  6. Tome nota del nombre de dominio completo de la instancia de contenedor.

5. Aplicación de prueba

Para probar la aplicación, navegue hasta el FQDN de la instancia de contenedor. Debería ver resultados similares a lo siguiente:

Aplicación Azure Vote

6. Limpieza de recursos

Cuando ya no los necesite, elimine los recursos creados en este artículo.

Ejecute el comando terraform destroy para quitar los recursos de Azure creados en este artículo:

terraform destroy -auto-approve

Solución de problemas de Terraform en Azure

Solución de problemas comunes al usar Terraform en Azure

Pasos siguientes