arrow_back

Cómo borrar direcciones IP sin uso

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cómo borrar direcciones IP sin uso

Lab 1 hora universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP646

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, usarás Cloud Functions y Cloud Scheduler para identificar y borrar recursos de nube desperdiciados. En Google Cloud, las direcciones IP estáticas son recursos gratuitos cuando se vinculan a una instancia de un balanceador de cargas o de una máquina virtual (VM). Cuando se reserva una dirección IP estática, pero no se la utiliza, se acumula un cargo por hora. En las aplicaciones que dependen en gran medida de direcciones IP estáticas y de aprovisionamiento dinámico a gran escala, ese desperdicio puede aumentar de forma significativa con el paso del tiempo.

Actividades

  • Crearás una VM de Compute Engine con una dirección IP externa estática y otra dirección IP externa estática sin uso.
  • Implementarás una función de Cloud Function para identificar las direcciones sin uso.
  • Crearás un trabajo de Cloud Scheduler para programar la función de modo que se ejecute con un activador HTTP.

Arquitectura

En el siguiente diagrama, se describe la arquitectura utilizada en la primera sección de este lab, donde programarás una Cloud Function para identificar y borrar direcciones IP sin uso.

Diagrama de arquitectura

Configuración y requisitos

En esta sección, configurarás la infraestructura y las identidades requeridas para completar este lab.

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1. Habilita las APIs y clona el repositorio

  1. En Cloud Shell, habilita la API de Cloud Scheduler:

    gcloud services enable cloudscheduler.googleapis.com Nota: La API de Cloud Scheduler tarda un tiempo en habilitarse.

Haz clic en Revisar mi progreso para verificar el objetivo.

Habilitar la API de Cloud Scheduler
  1. Clona el repositorio:

    git clone https://github.com/GoogleCloudPlatform/gcf-automated-resource-cleanup.git && cd gcf-automated-resource-cleanup/
  2. Configura las variables de entorno y convierte la carpeta del repositorio en tu $WORKDIR donde ejecutarás todos los comandos relacionados con este lab:

    export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null) export region={{{project_0.default_region | Region}}} WORKDIR=$(pwd)

Tarea 2. Crea direcciones IP

  1. En Cloud Shell, navega al directorio de IP sin uso, unused-ip:

    cd $WORKDIR/unused-ip
  2. Exporta los nombres de las direcciones IP como variables:

    export USED_IP=used-ip-address export UNUSED_IP=unused-ip-address
  3. Crea dos direcciones IP estáticas:

    gcloud compute addresses create $USED_IP --project=$PROJECT_ID --region={{{project_0.default_region | Region}}} gcloud compute addresses create $UNUSED_IP --project=$PROJECT_ID --region={{{project_0.default_region | Region}}}

    En este lab, se usa la región , pero puedes elegir otra y hacer referencia a ella de forma consistente durante el resto del lab.

  4. Controla que se hayan creado las dos direcciones:

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

    Si el resultado muestra el estado RESERVED, significa que las direcciones IP no están en uso:

    NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS unused-ip-address 35.232.144.85 EXTERNAL {{{project_0.default_region | Region}}} RESERVED used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} RESERVED

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear dos direcciones IP estáticas
  1. Configura la dirección IP utilizada como una variable de entorno:

    export USED_IP_ADDRESS=$(gcloud compute addresses describe $USED_IP --region={{{project_0.default_region | Region}}} --format=json | jq -r '.address')

Tarea 3. Crea una VM

  1. En Cloud Shell, crea una instancia:

    gcloud compute instances create static-ip-instance \ --zone={{{project_0.default_zone | Zone}}} \ --machine-type=e2-medium \ --subnet=default \ --address=$USED_IP_ADDRESS

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una instancia con una dirección IP estática creada anteriormente
  1. Confirma que una de las direcciones IP esté en uso:

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

    El resultado es similar al siguiente:

    NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS unused-ip-address 35.232.144.85 EXTERNAL {{{project_0.default_region | Region}}} RESERVED used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} IN_USE

Tarea 4. Revisa el código de la Cloud Function

  • En Cloud Shell, obtén el resultado de la sección principal del código:

    cat $WORKDIR/unused-ip/function.js | grep "const compute" -A 31

El resultado es el siguiente:

const compute = new Compute(); compute.getAddresses(function(err, addresses){ // gets all addresses across regions if(err){ console.log("there was an error: " + err); } if (addresses == null) { console.log("no addresses found"); return; } console.log("there are " + addresses.length + " addresses"); // iterate through addresses for (let item of addresses){ // get metadata for each address item.getMetadata(function(err, metadata, apiResponse) { // if the address is not used: if (metadata.status=='RESERVED'){ // compute age by convering ISO 8601 timestamps to Date var creationDate = new Date(metadata.creationTimestamp); var currDate = new Date(); var addressAge = Math.floor((currDate - creationDate)/86400e3);; // delete address item.delete(function(err, operation, apiResponse2){ if (err) { console.log("could not delete address: " + err); } }) }

Estos son los aspectos importantes de la muestra de código anterior:

  • compute.getAddresses(function(err, addresses) utiliza el método getAddresses para obtener las direcciones IP en todas las regiones del proyecto.

  • item.getMetadata(function(err, metadata, apiResponse) obtiene los metadatos de cada dirección IP y verifica el campo STATUS.

  • if ((metadata.status=='RESERVED') & (calculateAge(metadata.creationTimestamp) >= ageToDelete)){ verifica si la dirección IP está en uso, calcula su antigüedad con una función auxiliar y realiza una comparación entre la antigüedad y una constante (en el lab, el valor debe ser 0).

  • item.delete(function(err, operation, apiResponse2){ borra la dirección IP.

Tarea 5. Implementa la Cloud Function

  1. En Cloud Shell, implementa la Cloud Function:

    gcloud functions deploy unused_ip_function --trigger-http --runtime=nodejs12 --region={{{project_0.default_region | Region}}}
    • Cuando se te solicite, ingresa Y para permitir las invocaciones sin autenticar.
    Nota: La implementación de una Cloud Function puede tardar entre 2 y 5 minutos, según la región.

Haz clic en Revisar mi progreso para verificar el objetivo.

Implementar la Cloud Function
  1. Configura la URL activadora como una variable de entorno:

    export FUNCTION_URL=$(gcloud functions describe unused_ip_function --region={{{project_0.default_region | Region}}} --format=json | jq -r '.httpsTrigger.url')

Tarea 6. Programa y prueba la Cloud Function

  1. En Cloud Shell, crea una aplicación de App Engine para usar Cloud Scheduler:

    gcloud app create --region {{{project_0.startup_script.app_region | REGION}}}
  2. En Cloud Shell, crea una tarea de Cloud Scheduler para ejecutar la Cloud Function todas las noches a las 2 a.m.:

    gcloud scheduler jobs create http unused-ip-job \ --schedule="* 2 * * *" \ --uri=$FUNCTION_URL \ --location={{{project_0.default_region | Region}}}

Haz clic en Revisar mi progreso para verificar el objetivo.

Crear una aplicación de App Engine
  1. Activa el trabajo de forma manual para probarlo:

    gcloud scheduler jobs run unused-ip-job \ --location={{{project_0.default_region | Region}}}

No deberías recibir resultados.

Haz clic en Revisar mi progreso para verificar el objetivo.

Ejecutar un trabajo de Cloud Scheduler
  1. Confirma que se haya borrado la dirección IP sin uso:

    gcloud compute addresses list --filter="region:({{{project_0.default_region | Region}}})"

El resultado es similar al siguiente:

NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS used-ip-address 104.197.56.87 EXTERNAL {{{project_0.default_region | Region}}} IN_USE

Haz clic en Revisar mi progreso para verificar el objetivo.

Confirmar que se haya borrado la dirección IP sin uso

¡Felicitaciones!

En este lab, realizaste las siguientes tareas:

  • Creaste una VM de Compute Engine con una dirección IP externa estática y otra dirección IP externa estática sin uso.
  • Implementaste una Cloud Function para identificar las direcciones sin uso.
  • Creaste un trabajo de Cloud Scheduler para programar la función de modo que se ejecute con un activador HTTP.

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Actualización más reciente del manual: 23 de noviembre de 2023

Prueba más reciente del lab: 23 de noviembre de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.