Saltearse al contenido

Usando GCP

Esta es una guía paso a paso para desplegar un validator de Aptos y validator fullnode (VFN) usando Google Cloud Platform Services (GCP). Usando esta guía, el validator y VFN serán desplegados en máquinas separadas.

  1. Crea un directorio de trabajo para tus nodos Aptos, y elige un nombre de usuario para tus nodos, ej.,

    Ventana de terminal
    export WORKSPACE=mainnet
    export USERNAME=alice
    mkdir ~/$WORKSPACE
    cd ~/$WORKSPACE
  2. Crea un bucket de almacenamiento para almacenar el estado de Terraform en Google Cloud Storage.

    Usa la UI de GCP o el comando de Google Cloud Storage para crear el bucket:

    Ventana de terminal
    gsutil mb gs://BUCKET_NAME
    # Aquí hay un ejemplo de crear un bucket
    gsutil mb gs://<project-name>-aptos-terraform-dev
  3. Crea un archivo Terraform llamado main.tf en tu directorio de trabajo:

    Ventana de terminal
    cd ~/$WORKSPACE
    vi main.tf
  4. Modifica el archivo main.tf para configurar Terraform y crear el módulo Terraform. Ver el ejemplo abajo:

    terraform {
    required_version = "~> 1.3.6"
    backend "gcs" {
    bucket = "BUCKET_NAME" # El nombre del bucket creado arriba
    prefix = "state/aptos-node"
    }
    }
    module "aptos-node" {
    # Descargar el módulo Terraform del repositorio aptos-core.
    source = "github.com/aptos-labs/aptos-core.git//terraform/aptos-node/gcp"
    region = "us-central1" # Especificar la región GCP
    zone = "c" # Especificar el sufijo de zona
    project = "<GCP Project ID>" # Especificar tu ID de proyecto GCP
    era = 1 # Incrementar el número de era para limpiar los datos de cadena
    chain_id = 1 # Usar 1 para mainnet, o valores diferentes para otras redes.
    image_tag = "mainnet" # Especificar el tag de imagen a usar basado en la red
    validator_name = "<Name of your validator>" # Especificar el nombre de tu validator
    }

    Para todas las opciones de personalización, ver:

  5. Inicializa Terraform en el directorio $WORKSPACE donde creaste el archivo main.tf.

    Ventana de terminal
    terraform init

    Esto descargará todas las dependencias de Terraform en la carpeta .terraform en tu directorio de trabajo actual.

  6. Crea un nuevo workspace de Terraform para aislar tus entornos, y ver la lista de workspaces.

    Ventana de terminal
    terraform workspace new $WORKSPACE
    # Este comando listará todos los workspaces
    terraform workspace list
  7. Aplica la configuración de Terraform.

    Ventana de terminal
    terraform apply

    Esto puede tomar un tiempo en terminar (ej., >20 minutos). Terraform creará todos los recursos en tu cuenta de nube.

  8. Después de que terraform apply termine, puedes verificar si los recursos han sido creados correctamente, ejecutando los siguientes comandos:

    • gcloud container clusters get-credentials aptos-$WORKSPACE --zone <region/zone> --project <project>: Este comando configurará acceso para tu cluster k8s.
    • kubectl get pods: Este comando mostrará todos los pods en el cluster. Deberías ver haproxy, el validator y el VFN (con el pod del validator y VFN pending debido a acción adicional en pasos posteriores).
    • kubectl get svc: Este comando mostrará todos los servicios en el cluster. Deberías ver el validator-lb y fullnode-lb, con una IP externa para conectividad de red.
  9. Siguiente, necesitamos inyectar la información IP de tu nodo en tu entorno. Puedes hacer esto ejecutando los siguientes comandos:

    Ventana de terminal
    export VALIDATOR_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-validator-lb --output jsonpath='{.status.loadBalancer.ingress[0].hostname}')"
    export FULLNODE_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-fullnode-lb --output jsonpath='{.status.loadBalancer.ingress[0].hostname}')"
  10. Ahora, genera los pares de claves para tus nodos en tu directorio de trabajo. Puedes hacer esto ejecutando el siguiente comando con el CLI de Aptos:

    Ventana de terminal
    aptos genesis generate-keys --output-dir ~/$WORKSPACE/keys

    Esto creará 4 archivos de clave bajo el directorio ~/$WORKSPACE/keys:

    • public-keys.yaml: Este archivo contiene todas las claves públicas para tu validator y VFN, así como tu dirección de cuenta.
    • private-keys.yaml: Este archivo contiene todas las claves privadas para tu validator y VFN.
    • validator-identity.yaml: Este archivo contiene las claves públicas y privadas para tu validator, así como tu dirección de cuenta.
    • validator-full-node-identity.yaml: Este archivo contiene las claves públicas y privadas para tu VFN, así como tu dirección de cuenta.
  11. Siguiente, necesitarás establecer tu configuración de validator. Esto incluye establecer los nombres de host del validator y VFN, que pueden ser direcciones IP o direcciones DNS. Esto puede hacerse ejecutando el siguiente comando:

    Ventana de terminal
    aptos genesis set-validator-configuration \
    --local-repository-dir ~/$WORKSPACE \
    --username $USERNAME \
    --owner-public-identity-file ~/$WORKSPACE/keys/public-keys.yaml \
    --validator-host $VALIDATOR_ADDRESS:6180 \
    --full-node-host $FULLNODE_ADDRESS:6182 \
    --stake-amount 100000000000000

    Configurar el validator creará dos archivos YAML en el directorio ~/$WORKSPACE/$USERNAME: owner.yaml y operator.yaml. Estos serán útiles para conectar tus nodos a la red de Aptos (después).

  12. Descarga los siguientes archivos siguiendo las instrucciones en las páginas Archivos del Nodo. Necesitarás seleccionar la red apropiada (ej., mainnet, testnet, devnet) y descargar los siguientes archivos:

    • genesis.blob
    • waypoint.txt
  13. Para recapitular, en tu directorio de trabajo (~/$WORKSPACE), deberías tener una lista de archivos:

    • main.tf: Los archivos Terraform para instalar el módulo aptos-node.
    • carpeta keys conteniendo:
      • public-keys.yaml: Claves públicas para ambos nodos.
      • private-keys.yaml: Claves privadas para ambos nodos.
      • validator-identity.yaml: Información de clave y cuenta para el validator.
      • validator-full-node-identity.yaml: Información de clave y cuenta para el VFN.
    • carpeta $username conteniendo:
      • owner.yaml: Los mapeos de propietario, operador y votante.
      • operator.yaml: Información del operador del validator y VFN.
    • waypoint.txt: El waypoint para la transacción génesis en la red a la que te estás conectando.
    • genesis.blob El blob génesis para la red a la que te estás conectando.
  14. Finalmente, inserta el genesis.blob, waypoint.txt y los archivos de identidad como secretos en el cluster k8s, ejecutando el siguiente comando:

    Ventana de terminal
    kubectl create secret generic ${WORKSPACE}-aptos-node-0-genesis-e1 \
    --from-file=genesis.blob=genesis.blob \
    --from-file=waypoint.txt=waypoint.txt \
    --from-file=validator-identity.yaml=keys/validator-identity.yaml \
    --from-file=validator-full-node-identity.yaml=keys/validator-full-node-identity.yaml
  15. Ahora, deberíamos poder ver que todos los pods están ejecutándose, incluyendo el validator y VFN. Puedes verificar esto ejecutando el siguiente comando:

    Ventana de terminal
    kubectl get pods
    # Salida de ejemplo
    NAME READY STATUS RESTARTS AGE
    node1-aptos-node-0-fullnode-e9-0 1/1 Running 0 4h31m
    node1-aptos-node-0-haproxy-7cc4c5f74c-l4l6n 1/1 Running 0 4h40m
    node1-aptos-node-0-validator-0 1/1 Running 0 4h30m

Ahora has completado la configuración de tu validator y VFN usando GCP. Procede a Conectar Nodos para los siguientes pasos.