На GCP

НАСТРОЙКА УЧЕТНОЙ ЗАПИСИ GCP И СОЗДАНИЕ ПРОЕКТА Это руководство предполагает, что у вас уже настроена учетная запись GCP и создан новый проект для развертывания ноды Aptos. Если вы не знакомы с GCP (Google Cloud Platform), ознакомьтесь с разделом Предварительные условия для настройки учетной записи GCP.

ВАЖНО: ПРЕЖДЕ ЧЕМ ПРОДОЛЖИТЬ Если вы еще не сделали этого, установите перечисленные ниже предварительные компоненты:

ОДНА НОДА ВАЛИДАТОРА + ОДНА НОДА ПОЛНОГО ВАЛИДАТОРА Если вы выполните все приведенные ниже инструкции, в кластере будет работать одна нода валидатора и одна полная нода валидатора.

  1. Создайте рабочий каталог для вашей настройки.

  • Выберите имя рабочего пространства, например testnet. Примечание: это определяет имя рабочего пространства Terraform, которое, в свою очередь, используется для формирования имен ресурсов.

export WORKSPACE=testnet
  • Создайте каталог для рабочей области

mkdir -p ~/$WORKSPACE
  • Выберите имя пользователя для своей ноды, например, alice.

export USERNAME=alice

2. Создайте хранилище для хранения состояния Terraform в Google Cloud Storage. Используйте пользовательский интерфейс GCP или команду Google Cloud Storage для создания хранилища. Имя хранилища должно быть уникальным. См. документацию по Google Cloud Storage здесь: https://cloud.google.com/storage/docs/creating-buckets#prereq-cli.

gsutil mb gs://BUCKET_NAME
# for example
gsutil mb gs://<project-name>-aptos-terraform-dev

3. Создайте файл Terraform с именем main.tf в рабочем каталоге:

cd ~/$WORKSPACE
touch main.tf

4. Измените файл main.tf для настройки Terraform и создания полной ноды из модуля Terraform. Пример содержимого файла main.tf:

terraform {
  required_version = "~> 1.2.0"
  backend "gcs" {
    bucket = "BUCKET_NAME" # bucket name created in step 2
    prefix = "state/aptos-node"
  }
}

module "aptos-node" {
  # download Terraform module from aptos-labs/aptos-core repo
  source        = "github.com/aptos-labs/aptos-core.git//terraform/aptos-node/gcp?ref=testnet"
  region        = "us-central1"  # Specify the region
  zone          = "c"            # Specify the zone suffix
  project       = "<GCP Project ID>" # Specify your GCP project ID
  era           = 1              # bump era number to wipe the chain
  chain_id      = 43
  image_tag     = "testnet" # Specify the docker image tag to use
  validator_name = "<Name of Your Validator, no space, e.g. aptosbot>"
}

Для получения полной информации о возможностях настройки см. файл переменных здесь, а также значения управления.

5. Инициализируйте Terraform в том же каталоге, где находится ваш файл main.tf

terraform init

Это загрузит все зависимости Terraform для вас в папку .terraform в вашем текущем рабочем каталоге.

6. Создайте новое рабочее пространство Terraform, чтобы изолировать среды:

terraform workspace new $WORKSPACE
# This command will list all workspaces
terraform workspace list

7. Примените настройку.

terraform apply

Это может занять некоторое время (10 - 20 минут), Terraform создаст все ресурсы на вашем облачной учетной записи.

8. После завершения применения Terraform вы можете проверить, созданы ли эти ресурсы:

  • gcloud container clusters get-credentials aptos-$WORKSPACE --zone <region/zone> --project <project> для настройки доступа к кластеру k8s.

  • kubectl get pods здесь должны быть haproxy, validator и fullnode. с валидатором и fullnode pod pending(требуют дальнейших действий на последующих этапах)

  • kubectl get svc это должно быть validator-lb и fullnode-lb, с внешним IP-адресом, который вы сможете использовать позже для подключения.

9. Получите информацию об IP-адресе вашей ноды:

export VALIDATOR_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-validator-lb --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"

export FULLNODE_ADDRESS="$(kubectl get svc ${WORKSPACE}-aptos-node-0-fullnode-lb --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"

10. Сгенерируйте пары ключей (владелец ноды, голосующий, ключ оператора, ключ консенсуса и ключ сети) в своем рабочем каталоге.

aptos genesis generate-keys --output-dir ~/$WORKSPACE/keys

Это создаст 4 файла ключей в каталоге ~/$WORKSPACE/keys:

  • public-keys.yaml

  • private-keys.yaml

  • validator-identity.yaml, и

  • validator-full-node-identity.yaml.

ВАЖНО Сохраните файлы закрытых ключей в безопасном месте. Эти файлы ключей важны для установления права собственности на вашу ноду. Никогда и никому не передавайте закрытые ключи.

11. Настройте информацию о валидаторе. Это вся информация, необходимая для последующей регистрации на сайте сообщества Aptos.

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

Это создаст два файла YAML в каталоге ~/$WORKSPACE/$USERNAME: owner.yaml и operator.yaml.

12. Загрузите genesis blob и waypoint для сети, к которой вы хотите подключиться, полный список сетей можно найти здесь

Например, чтобы загрузить testnet genesis и waypoint:

curl https://raw.githubusercontent.com/aptos-labs/aptos-genesis-waypoint/main/testnet/waypoint.txt -o waypoint.txt
curl https://raw.githubusercontent.com/aptos-labs/aptos-genesis-waypoint/main/testnet/genesis.blob -o genesis.blob

13. Подводя итог, можно сказать, что в вашем рабочем каталоге должен быть список файлов:

  • main.tf: Файлы Terraform для установки модуля aptos-node (из шагов 3 и 4).

  • keys папка, в которую входят:

    • public-keys.yaml: Открытые ключи для учетной записи владельца, консенсуса, сетевого взаимодействия (из шага 10).

    • private-keys.yaml: Закрытые ключи для учетной записи владельца, консенсуса, сетевого взаимодействия (из шага 10).

    • validator-identity.yaml: Закрытые ключи для установки идентификатора валидатора (из шага 10).

    • validator-full-node-identity.yaml: Закрытые ключи для установки полной идентификации ноды валидатора (из шага 10).

  • username папка, в которую входят:

    • owner.yaml: определите сопоставление владельца, оператора и голосующего. Это все те же учетные записи в тестовом режиме (из шага 11).

    • operator.yaml: Информация о ноде, которая будет использоваться как для валидатора, так и для полной ноды (из шага 11).

  • waypoint.txt: Путевая точка для транзакции генезиса (из шага 12).

  • genesis.blob Бинарный файл genesis, содержащий всю информацию о фреймворке, validatorSet и многое другое (из шага 12).

14. Вставьте genesis.blob, waypoint.txt и файлы идентификации как секретные в кластер k8s.

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

ПРИМЕЧАНИЕ Суффикс -e1 относится к номеру эпохи. Если вы изменили номер эпохи, убедитесь, что он совпадает при создании секрета.

15. Проверьте работу всех модулей.

kubectl get pods

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

Теперь вы успешно завершили настройку ноды.

Last updated