在 GCP 上运行

在GCP上运行

💡 注意

该指南假设您已经完成了 GCP 账户的创建,并且已经创建了一个用于部署 Aptos 节点的新项目。如果您对 GCP(谷歌云工作平台) 不熟悉,可以先查看这份 GCP 账户注册文件。

如果尚未安装请按下述步骤先安装:

  1. 为您的配置创建一个工作目录。

    • 选择一个工作区名称,例如测试网。注意:这定义了 Terraform 工作空间名称,该名称又用于形成资源名称。

      export WORKSPACE=testnet
    • 为工作区创建一个目录。

      mkdir -p ~/$WORKSPACE
    • 为您的节点选择一个用户名称,例如: alice.

      export USERNAME=alice
  2. 创建一个存储 bucket,用于在Google云存储上存储 Terraform 状态。使用 GCP UI 或 Google Cloud Storage 命令创建 bucket。存储桶的名称必须是唯一的。请参阅此处的 Google 云存储文档: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. 在您的工作目录中创建名为 main.tf 的 Terraform 文件:

    cd ~/$WORKSPACE
    vi 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>"
    }

    有关完整的自定义选项,请参阅此处的变量文件和 Helm 值。

  5. main.tf 文件的同一目录中初始化 Terraform。

    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 申请完成,您可以检查是否这些资源文件已经被创建:

    • az aks get-credentials --resource-group aptos-$WORKSPACE --name aptos-$WORKSPACE 为您的 k8s 集群配置访问权限。

    • kubectl get pods 这应该有 haproxy、验证者和全节点。当验证器和全节点 Pod 处于待处理状态时候(需要在后续步骤中采取进一步措施)

    • kubectl get svc 这个需要有 validator-lbfullnode-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.

      <aside> 💡 需要注意:

      将您的私钥文件备份到安全的地方。这些关键文件对于您建立节点的所有权很重要。 永远不要与任何人共享私钥。

      </aside>

  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

    这里需要创建2个 YAML 文件在 ~/$WORKSPACE/$USERNAME 目录下: owner.yamloperator.yaml

  12. 创建一个布局模板文件,该文件定义了 Aptos 中的节点 validatorSet.

    aptos genesis generate-layout-template --output-file ~/$WORKSPACE/layout.yaml

    编辑 layout.yaml, 添加 root_key, 验证者节点用户名和 chain_id:

    root_key: "D04470F43AB6AEAA4EB616B72128881EEF77346F2075FFE68E14BA7DEBD8095E"
    users: ["<username you specified from previous step>"]
    chain_id: 43
    allow_new_validators: false
    epoch_duration_secs: 7200
    is_test: true
    min_stake: 100000000000000
    min_voting_threshold: 100000000000000
    max_stake: 100000000000000000
    recurring_lockup_duration_secs: 86400
    required_proposer_stake: 100000000000000
    rewards_apy_percentage: 10
    voting_duration_secs: 43200
    voting_power_increase_limit: 20

    请确保您使用与示例中所示相同的根公钥和相同的链 ID,这些配置将在注册期间用于验证您的节点。

  13. 下载 Aptos 框架 Move 页面在 ~/$WORKSPACE 目录下展示为 framework.mrb

    wget <https://github.com/aptos-labs/aptos-core/releases/download/aptos-framework-v0.3.0/framework.mrb> -P ~/$WORKSPACE
  14. 编译 genesis blob 和路标。

    aptos genesis generate-genesis --local-repository-dir ~/$WORKSPACE --output-dir ~/$WORKSPACE

    这将在您的工作目录中创建两个文件:genesis.blob and waypoint.txt.

  15. 总而言之,在您的工作目录中,您应该有一个文件列表:

    • main.tf: 用于安装 aptos-node 模块的 Terraform 文件(来自步骤 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)。

    • layout.yaml: 布局文件包含根密钥、验证器用户和链ID的键值(来自步骤12)。

    • framework.mrb: Aptos Framework Move 安装包(来自步骤13)。

    • waypoint.txt:genesis事务的航路点(来自步骤14)。

    • genesis.blob genesis二进制文件,包含关于框架、验证器集等的所有信息(来自步骤14)。

  16. 插入 genesis.blob, waypoint.txt 和身份文件作为 secret 到 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 后缀表示时代编号。如果您更改了时代编号,请确保在创建 secret 时将它匹配。

  17. 检查所有 pods 正在运行。

    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

现在您已经成功地完成了在测试模式下的节点设置。您可以跳转到 Aptos 社区平台来进行注册。

Last updated