GCP에서 Terraform으로 Geth 시작

이therm으로 Dapps의 개발 환경을 GCP에 게재하고 싶어 그때 만든 테라form을 소개했다.

사용법


https://github.com/k2wanko/gcp-gethgit clone다음 명령을 실행합니다.
gcloud auth application-default login
terraform에서 사용하는 로그인입니다.
새 프로젝트에서 GCE가 활성화되지 않은 경우 다음 명령을 실행하여 활성화합니다.
실행
gcloud services enable compute.googleapis.com
terraform apply.project_id를 묻습니다. 입력하십시오.
$ terraform apply
var.project_id
  Enter a value: [project_id]

geth attach

terraform apply 성공 후 instance_name 출력되므로 다음 명령을 사용하여 SSH Port Forwarding에서 geth httpport을 로컬 시스템에 매핑합니다.
gcloud config set project [project_id]
gcloud compute ssh [instance_name] -- -N -L 8545:localhost:8545
다른 터미널 실행geth attach을 열면console에 접근할 수 있습니다.
geth attach rpc:http://localhost:8545
geth의 시작 옵션은 main.tf에 기록되어 있으니 적당히 덮어쓰고 사용하십시오.

해설


지금부터 해설main.tf의 내용을 시작하겠습니다.
기본 개념은'GCP의 무료 테두리로 수납'이기 때문에 GKE가 아닌 GCE를 사용했다.
우선 GCE의 무료 상자는 아래 3개 구역f1-micro의 실례와 30GB의 HDD Storage, 1GB의 외부 네트워크 전송량이다.이것은 매달 무료로 사용할 수 있다.
  • Oregon: us-west1
  • Iowa: us-central1
  • South Carolina: us-east1
  • 지역은 이 중 일본에 가장 가까운 것us-west1을 선택했다.
    구역 내의 구역은 어디든지 사용할 수 있습니다.shuffle를 이용하여 세 군데에서 무작위로 선택하세요.
    resource "random_shuffle" "zone" {
      input        = ["us-west1-a", "us-west1-b", "us-west1-c"]
      result_count = 1
    }
    
    다음은 인스턴스 설정입니다.google_compute_instance를 사용하여 GCE 인스턴스를 생성합니다.
    resource "google_compute_instance" "geth" {
      name         = "geth-${random_integer.instance_id_suffix.id}"
      machine_type = "f1-micro"
    
      boot_disk {
        initialize_params {
          size  = 30
          type  = "pd-standard"
          image = "cos-cloud/cos-stable"
        }
      }
    
    name에 인스턴스 이름이 설정되어 있습니다.machine_type는 무료 서류 설정f1-micro이다.boot_disksize는 GB로 설정됩니다.무료 최대 한도액30을 설정했다.typepd-standard인데 이것도 무료 테두리를 위해 고정된 것이다.네트워크를 통해 HDD를 사용합니다.image 어떤 OS를 사용하는지에 대해 이번 Docker는 Geth를 이용하기 때문에'Container-Optimized OS'를 사용한다.

    Container-Optimzed OS 정보


    Container-Optimzed OS는 Docker 컨테이너를 실행하기에 가장 적합한 GCE용 OS입니다.
    GCE 기능의 metadata에 필요한 설정만 추가하면 Docker 컨테이너를 빠르게 실행하고 OS 업데이트도 자동으로 할 수 있다.
      metadata = {
        cos-metrics-enabled    = true
        google-logging-enabled = true
        user-data              = <<EOF
    #cloud-config
    write_files:
    - path: /etc/systemd/system/ethereum.service
      permissions: 0644
    
    설정cos-metrics-enabled은 클라우드 모니터에 인스턴스의 메트릭을 기록할 수 있습니다.google-logging-enabled Google에서 준비한flumentd를 시작하여 실례적인 로그를 Cloud Logging으로 내보냅니다.user-data에는 Docker 용기를 시스템의 서비스로 설정하는 cloud-config가 기술되어 있다.
    Geth의 볼륨을 설치하기 전에 /var/ethereum를 선택한 것은 COS의 제한으로 인해 영구화하려는 데이터를 /home 또는 /var에 저장해야 하기 때문입니다.저는 /opt파 또는 /etc파입니다. 주의하세요.재부팅하면 데이터가 사라집니다.
    자세한 내용은 문서를 확인하세요.
    https://cloud.google.com/container-optimized-os/docs/concepts/disks-and-filesystem?hl=ja

    좋은 웹페이지 즐겨찾기