GCP에 GruCloud를 사용하여 HTTPS 정적 웹 사이트 배포

36472 단어 devopsgooglecloud

GCP에서 AWS Route53이 관리하는 안전한 정적 웹 사이트 호스팅


이 사례의 목표는 GruCloud를 통해 곡가 클라우드 플랫폼 GCP에 HTTPS가 있는 정적 사이트를 자동으로 배치하는 것이다.
도메인 및 DNS 설정은 AWS Route53에서 처리됩니다.
hosting static website의 수동 방법 참조
Google Domain는 API를 제공하지 않으며 다른 구글 DNS 서비스Cloud Domain는 전송역을 지원하지 않습니다.
따라서 이 예에서는 AWS Route53을 사용합니다.

리소스


이 배포는 다음 그림과 같이 리소스로 구성됩니다.

The command gc graph generates this diagram from the code iac.js.


다음은 리소스 문서에 대한 링크입니다.
  • Object
  • Bucket
  • Backend Bucket
  • Global Forwarding Rule
  • Https Target Proxy
  • SSL Certificate
  • Url Map
  • 갈고리


    문서hook.js는 인프라 시설의 배치와 소각 후 실행할 조작을 포함한다.
    이 파일route53Utils.js에는 AWS CLI를 호출하여 도메인 이름을 로드 밸런서의 IP 주소에 매핑하는 a형 DNS 레코드를 추가 및 삭제하는 기능이 포함되어 있습니다.
  • aws route53 list-hosted-zones-by-name --dns-name ${domainName}
  • aws route53 list-resource-record-sets --hosted-zone-id ${hostedZoneId}
  • aws route53 change-resource-record-sets --hosted-zone-id ${hostedZoneId} --change-batch '${changeBatch}'
  • 요구 사항


    GruCloud CLI


    GruCloud CLI가 설치되어 있는지 확인합니다.

    GCP


    이 순서도에 따라 CLIgcloud를 설치 및 구성합니다.

    AWS


    DNS 레코드를 추가하고 삭제하기 위해 hook.js에서 호출되므로 AWS CLI가 설치되어 있는지 확인합니다. 따라서 도메인 이름이 로드 밸런서의 IP 주소에 매핑됩니다.

    라우팅 53 도메인


    AWS 계정이 도메인 이름을 등록했는지 확인합니다.
    aws route53domains list-domains --region us-east-1
    
    {
        "Domains": [
            {
                "DomainName": "grucloud.org",
                "AutoRenew": true,
                "TransferLock": false,
                "Expiry": "2021-11-16T13:56:10+01:00"
            }
        ]
    }
    
    또는 Route53 Domain Listing 참조

    라우팅 53 관리 영역


    관리되는 영역을 만들고 나중에 이 영역에 a 유형의 DNS 레코드를 만듭니다.
    aws route53 create-hosted-zone --name grucloud.org --caller-reference 2021-06-30-2
    
    액세스할 수 있음Route53 Dashboard

    소스 코드 가져오기



    This example is located at examples/google/storage/website-https


    프로비저닝


    편집config.js 및 다음 변수를 설정합니다.

  • 프로젝트 Id: 프로젝트 Id가 유일해야 합니다. 제한 참조here

  • bucketName: bucket 이름이자 도메인 이름, 즉 mywebsite입니다.com 또는 하위 도메인내 웹 사이트.com, 참조bucket naming guideline

  • hostedZoneName: Route53의 호스팅 영역 이름, 즉 mywebsite입니다.com

  • 웹사이트Dir: 정적 웹 사이트가 포함된 디렉토리입니다.
  • 초기화


    init 명령은 프로젝트 생성, 청구서 설정, API 서비스 활성화, 서비스 계정 및 자격 증명 파일 생성, IAM 역할을 이 서비스 계정에 연결
    gc init
    

    서비스 계정을 도메인 소유자로 추가


    grucloud에서 작업하는 서비스 계정은 도메인 소유자로 추가해야 합니다.
    이전에 init 명령을 사용하여 만든 이 서비스 계정의 형식은[email protected]
    이 서비스 계정은 또한 생성된 자격 증명 파일에 클라이언트 e-메일 속성으로 저장됩니다.
    자격 증명 파일의 위치를 찾으려면 다음과 같이 하십시오.
    gc info
    
      - provider:
          name: google
          type: google
        stage: dev
        projectId: grucloud-test
        projectName: grucloud-test
        applicationCredentialsFile: /Users/yourusername/.config/gcloud/your-project-id.json
        serviceAccountName: grucloud
        hasGCloud: true
        config:
          bucketName: grucloud.org
          websiteDir: ./websites/simple
          managedByTag: -managed-by-gru
          managedByKey: managed-by
          managedByValue: grucloud
          region: europe-west4
          zone: europe-west4-a
    
    domain name verification documentation의 수동 절차를 따릅니다.

    GruCloud CLI 워크플로우


    이 차트는 GruCloud CLI의 주요 명령을 보여 줍니다.

    배치하다


    apply 명령을 사용하여 이 기초 구조를 배치합니다
    gc apply
    
    Querying resources on 1 provider: google
    ✓ google
      ✓ Initialising
      ✓ Listing 7/7
      ✓ Querying
        ✓ Bucket 1/1
        ✓ Object 1/1
        ✓ SslCertificate 1/1
        ✓ BackendBucket 1/1
        ✓ UrlMap 1/1
        ✓ HttpsTargetProxy 1/1
        ✓ GlobalForwardingRule 1/1
    ┌────────────────────────────────────────────────────────────────────┐
    │ Plan summary for provider google                                   │
    ├────────────────────────────────────────────────────────────────────┤
    │ DEPLOY RESOURCES                                                   │
    ├────────────────────┬───────────────────────────────────────────────┤
    │ Bucket             │ grucloud.org                                  │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ Object             │ index.html                                    │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ SslCertificate     │ ssl-certificate                               │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ BackendBucket      │ backend-bucket                                │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ UrlMap             │ url-map                                       │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ HttpsTargetProxy   │ https-target-proxy                            │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ GlobalForwardingR… │ global-forwarding-rule                        │
    └────────────────────┴───────────────────────────────────────────────┘
    Deploying resources on 1 provider: google
    ✓ google
      ✓ Initialising
      ✓ Deploying
        ✓ Bucket 1/1
        ✓ Object 1/1
        ✓ SslCertificate 1/1
        ✓ BackendBucket 1/1
        ✓ UrlMap 1/1
        ✓ HttpsTargetProxy 1/1
        ✓ GlobalForwardingRule 1/1
      ✓ default::onDeployed
        ✓ add dns record for the load balancer
        ✓ get https://storage.googleapis.com/grucloud.org/index.html
        ✓ get https://storage.googleapis.com/grucloud.org
        ✓ ssl certificate ready
        ✓ get https://grucloud.org
    7 resources deployed of 7 types and 1 provider
    Running OnDeployedGlobal resources on 1 provider: google
    Command "gc a -f" executed in 11m 48s
    fredericheem@pc7 website-https %
    
    GCP 자원의 배치가 끝날 때 onDeployed 갈고리를 호출합니다.
    먼저 DNS 유형 a 레코드를 추가하여 도메인 이름을 로드 밸런서의 IPv4 주소, 즉 Global Forwarding Rule 자원에 매핑합니다.
    SSL 인증서가 도메인의 소유권을 확인하기 위해 이 레코드를 기다리고 있습니다.SSL 인증서는 준비가 완료되기까지 몇 분 정도 걸릴 수 있습니다.
    마지막 단계는 HTTPS를 사용하여 웹 페이지를 가져오는 것입니다.
    그것은 배치가 성공적으로 완성되었음을 확보한다.

    리소스를 나열합니다.


    gc list 명령을 사용하여 자원의 상태를 검증하고 --graph에서 활동 자원의 도표를 생성합니다.
    gc list --graph
    

    Listing resources on 1 provider: google
    ✓ google
      ✓ Initialising
      ✓ Listing 7/7
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 SslCertificate from google                                        │
    ├─────────────────┬────────────────────────────────────────────┬──────┤
    │ Name            │ Data                                       │ Our  │
    ├─────────────────┼────────────────────────────────────────────┼──────┤
    │ ssl-certificate │ id: 6441474765553268206                    │ Yes  │
    │                 │ creationTimestamp: 2021-06-30T03:44:17.99… │      │
    │                 │ name: ssl-certificate                      │      │
    │                 │ description: Managed By GruCloud           │      │
    │                 │ selfLink: https://www.googleapis.com/comp… │      │
    │                 │ certificate: -----BEGIN CERTIFICATE-----   │      │
    │                 │ MIIFUTCCBDmgAwIBAgIRAPkAAOJC7+5VCgAAAADtD… │      │
    │                 │ RjELMAkGA1UEBhMCVVMxIjAgBgNVBAoTGUdvb2dsZ… │      │
    │                 │ TEMxEzARBgNVBAMTCkdUUyBDQSAxRDQwHhcNMjEwN… │      │
    │                 │ MTA0ODQyWjAXMRUwEwYDVQQDEwxncnVjbG91ZC5vc… │      │
    │                 │ AQUAA4IBDwAwggEKAoIBAQCwg05xlwu+1ypsJgQ5W… │      │
    │                 │ I6TrqTwTpTq8lIwpEBvksGz2w99nJ5lLiCBhH7MRW… │      │
    │                 │ 4z4l7D+s/u8xCe7XB2D/B6suXPdVpPjl21kHLQUQC… │      │
    │                 │ dwrlJS4M3KfRYXhesJxZEeO3+PoXKw3wBkIpSRfvk… │      │
    │                 │ jqdpROyJRaJ/gH1/1Ixe9wxQ0xRf9jAZClyfL8M/D… │      │
    │                 │ aQiL+jB/x1AJYwuud04PPZuBNE3ouln8UnD5MD65C… │      │
    │                 │ BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBB… │      │
    │                 │ ADAdBgNVHQ4EFgQUn0Lwt6ba79AHuJDIGAlW2310Y… │      │
    │                 │ DrJXkZQq5dRdhpCD3lOzuJIwagYIKwYBBQUHAQEEX… │      │
    │                 │ dHRwOi8vb2NzcC5wa2kuZ29vZy9ndHMxZDQwMQYIK… │      │
    │                 │ a2kuZ29vZy9yZXBvL2NlcnRzL2d0czFkNC5kZXIwF… │      │
    │                 │ dWQub3JnMCEGA1UdIAQaMBgwCAYGZ4EMAQIBMAwGC… │      │
    │                 │ BDUwMzAxoC+gLYYraHR0cDovL2NybHMucGtpLmdvb… │      │
    │                 │ V0NrLmNybDCCAQYGCisGAQQB1nkCBAIEgfcEgfQA8… │      │
    │                 │ Vo7jTRMZM7/fDC8gC8xO8WTjAAABelyN0mYAAAQDA… │      │
    │                 │ 64j1+EfMUP7z2a1r49DvMLeIKdM1AiEA/JSBRq8oP… │      │
    │                 │ POCDVgsI/BQAdwDuwJXujXJkD5Ljw7kbxxKjaWoJe… │      │
    │                 │ jdKCAAAEAwBIMEYCIQDoxrQxCcEH2vVeg2AtstxI1… │      │
    │                 │ AOsmu4oulyYswA7MTs/Dy29W+nXk0D0mGAOzAHkCz… │      │
    │                 │ A4IBAQAoD2cok3xHy87yVKdF7NUtjVAS6/jB6/KUd… │      │
    │                 │ ZXvfhKYWZuc9WCaEUNZo45y582uuf/Wv1dBXSiH6v… │      │
    │                 │ fsiQzTeOA5+5EmnQLkvaSpfs1VgMwwc0w+bd3mhHa… │      │
    │                 │ NlSHP9oWk4Y4sk9ngaDu6p+nilPNXpKOXeVWchB5f… │      │
    │                 │ fSjfQ5lMpeZMQi68FPuiNkcaJ5CY0ntHcwenhUpew… │      │
    │                 │ 7hT0UnMmPf21WKP4EdMmmw+4dHwx               │      │
    │                 │ -----END CERTIFICATE-----                  │      │
    │                 │ -----BEGIN CERTIFICATE-----                │      │
    │                 │ MIIFjDCCA3SgAwIBAgINAgCOsgIzNmWLZM3bmzANB… │      │
    │                 │ CQYDVQQGEwJVUzEiMCAGA1UEChMZR29vZ2xlIFRyd… │      │
    │                 │ MBIGA1UEAxMLR1RTIFJvb3QgUjEwHhcNMjAwODEzM… │      │
    │                 │ MDQyWjBGMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZR… │      │
    │                 │ Y2VzIExMQzETMBEGA1UEAxMKR1RTIENBIDFENDCCA… │      │
    │                 │ ggEPADCCAQoCggEBAKvAqqPCE27l0w9zC8dTPIE89… │      │
    │                 │ UebUQpK0yv2r678RJExK0HWDjeq+nLIHN1Em5j6rA… │      │
    │                 │ saztIIJ7O0g/82qj/vGDl//3t4tTqxiRhLQnTLXJd… │      │
    │                 │ H3Rcsejcqj8p5Sj19vBm6i1FhqLGymhMFroWVUGO3… │      │
    │                 │ 2190Q0Lm/SiKmLbRJ5Au4y1euFJm2JM9eB84Fkqa3… │      │
    │                 │ zvxtxvusLJzLWYHk55zcRAacDA2SeEtBbQfD1qsCA… │      │
    │                 │ DwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDA… │      │
    │                 │ AQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUJeIYDrJXk… │      │
    │                 │ VR0jBBgwFoAU5K8rJnEaK0gnhS9SZizv8IkTcT4wa… │      │
    │                 │ CCsGAQUFBzABhhpodHRwOi8vb2NzcC5wa2kuZ29vZ… │      │
    │                 │ AoYkaHR0cDovL3BraS5nb29nL3JlcG8vY2VydHMvZ… │      │
    │                 │ MCswKaAnoCWGI2h0dHA6Ly9jcmwucGtpLmdvb2cvZ… │      │
    │                 │ A1UdIARGMEQwCAYGZ4EMAQIBMDgGCisGAQQB1nkCB… │      │
    │                 │ aHR0cHM6Ly9wa2kuZ29vZy9yZXBvc2l0b3J5LzANB… │      │
    │                 │ IVToy24jwXUr0rAPc924vuSVbKQuYw3nLflLfLh5A… │      │
    │                 │ FZbhXkBH0PNcw97thaf2BeoDYY9Ck/b+UGluhx06z… │      │
    │                 │ K+Xh3I0tqJy2rgOqNDflr5IMQ8ZTWA3yltakzSBKZ… │      │
    │                 │ uPCJvscp1/m2pVTtyBjYPRQ+QuCQGAJKjtN7R5DFr… │      │
    │                 │ 3cTIfzE7cmALskMKNLuDz+RzCcsYTsVaU7Vp3xL60… │      │
    │                 │ YgPmOT4X3+7L51fXJyRH9KfLRP6nT31D5nmsGAOgZ… │      │
    │                 │ VS5H0HyIBMEKyGMIPhFWrlt/hFS28N1zaKI0ZBGD3… │      │
    │                 │ lVlWPzXe81vdoEnFbr5M272HdgJWo+WhT9BYM0Ji+… │      │
    │                 │ 1dFpgJu8fF3LG0gl2ibSYiCi9a6hvU0TppjJyIWXh… │      │
    │                 │ JDwRjW/656r0KVB02xHRKvm2ZKI03TglLIpmVCK3k… │      │
    │                 │ x/9tpNFlQTl7B39rJlJWkR17QnZqVptFePFORoZmF… │      │
    │                 │ -----END CERTIFICATE-----                  │      │
    │                 │ -----BEGIN CERTIFICATE-----                │      │
    │                 │ MIIFYjCCBEqgAwIBAgIQd70NbNs2+RrqIQ/E8FjTD… │      │
    │                 │ MQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU… │      │
    │                 │ CxMHUm9vdCBDQTEbMBkGA1UEAxMSR2xvYmFsU2lnb… │      │
    │                 │ OTAwMDA0MloXDTI4MDEyODAwMDA0MlowRzELMAkGA… │      │
    │                 │ GUdvb2dsZSBUcnVzdCBTZXJ2aWNlcyBMTEMxFDASB… │      │
    │                 │ MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCA… │      │
    │                 │ ladAPKH9gvl9MgaCcfb2jH/76Nu8ai6Xl6OMS/kr9… │      │
    │                 │ iV6nqlKr+CMny6SxnGPb15l+8Ape62im9MZaRw1NE… │      │
    │                 │ KSUjB6G00j0uYODP0gmHu81I8E3CwnqIiru6z1kZ1… │      │
    │                 │ DrXYfiYaRQM9sHmklCitD38m5agI/pboPGiUU+6DO… │      │
    │                 │ j5ZPaK49l8KEj8C8QMALXL32h7M1bKwYUH+E4EzNk… │      │
    │                 │ cuHKZPfmghCN6J3Cioj6OGaK/GP5Afl4/Xtcd/p2h… │      │
    │                 │ CruOC7XFxYpVq9Os6pFLKcwZpDIlTirxZUTQAs6qz… │      │
    │                 │ iYH6TKX/1Y7DzkvgtdizjkXPdsDtQCv9Uw+wp9U7D… │      │
    │                 │ Eua++tgy/BBjFFFy3l3WFpO9KWgz7zpm7AeKJt8T1… │      │
    │                 │ sZWwpbkNFhHax2xIPEDgfg1azVY80ZcFuctL7TlLn… │      │
    │                 │ 9f6BQdgAmD06yK56mDcYBZUCAwEAAaOCATgwggE0M… │      │
    │                 │ BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTkrysmc… │      │
    │                 │ BgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9S… │      │
    │                 │ JQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnBraS5nb… │      │
    │                 │ MAKGHWh0dHA6Ly9wa2kuZ29vZy9nc3IxL2dzcjEuY… │      │
    │                 │ oCOGIWh0dHA6Ly9jcmwucGtpLmdvb2cvZ3NyMS9nc… │      │
    │                 │ MAgGBmeBDAECATAIBgZngQwBAgIwDQYLKwYBBAHWe… │      │
    │                 │ AwMwDQYJKoZIhvcNAQELBQADggEBADSkHrEoo9C0d… │      │
    │                 │ NR3t5P+T4Vxfq7vqfM/b5A3Ri1fyJm9bvhdGaJQ3b… │      │
    │                 │ WprKASOshIArAoyZl+tJaox118fessmXn1hIVw41o… │      │
    │                 │ 9U5pCZEt4Wi4wStz6dTZ/CLANx8LZh1J7QJVj2fhM… │      │
    │                 │ +qduBmpvvYuR7hZL6Dupszfnw0Skfths18dG9ZKb5… │      │
    │                 │ d0lIKO2d1xozclOzgjXPYovJJIultzkMu34qQb9Sz… │      │
    │                 │ -----END CERTIFICATE-----                  │      │
    │                 │                                            │      │
    │                 │ managed:                                   │      │
    │                 │   domains:                                 │      │
    │                 │     - "grucloud.org"                       │      │
    │                 │   status: ACTIVE                           │      │
    │                 │   domainStatus:                            │      │
    │                 │     grucloud.org: ACTIVE                   │      │
    │                 │ type: MANAGED                              │      │
    │                 │ subjectAlternativeNames:                   │      │
    │                 │   - "grucloud.org"                         │      │
    │                 │ expireTime: 2021-09-28T03:48:42.000-07:00  │      │
    │                 │ kind: compute#sslCertificate               │      │
    │                 │                                            │      │
    └─────────────────┴────────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 Bucket from google                                                │
    ├──────────────┬───────────────────────────────────────────────┬──────┤
    │ Name         │ Data                                          │ Our  │
    ├──────────────┼───────────────────────────────────────────────┼──────┤
    │ grucloud.org │ kind: storage#bucket                          │ Yes  │
    │              │ selfLink: https://www.googleapis.com/storage… │      │
    │              │ id: grucloud.org                              │      │
    │              │ name: grucloud.org                            │      │
    │              │ projectNumber: 91170824493                    │      │
    │              │ metageneration: 2                             │      │
    │              │ location: EUROPE-WEST4                        │      │
    │              │ storageClass: STANDARD                        │      │
    │              │ etag: CAI=                                    │      │
    │              │ timeCreated: 2021-06-30T10:44:18.829Z         │      │
    │              │ updated: 2021-06-30T10:44:19.640Z             │      │
    │              │ website:                                      │      │
    │              │   mainPageSuffix: index.html                  │      │
    │              │   notFoundPage: 404.html                      │      │
    │              │ labels:                                       │      │
    │              │   managed-by: grucloud                        │      │
    │              │   stage: dev                                  │      │
    │              │ iamConfiguration:                             │      │
    │              │   bucketPolicyOnly:                           │      │
    │              │     enabled: true                             │      │
    │              │     lockedTime: 2021-09-28T10:44:18.829Z      │      │
    │              │   uniformBucketLevelAccess:                   │      │
    │              │     enabled: true                             │      │
    │              │     lockedTime: 2021-09-28T10:44:18.829Z      │      │
    │              │   publicAccessPrevention: unspecified         │      │
    │              │ locationType: region                          │      │
    │              │ iam:                                          │      │
    │              │   kind: storage#policy                        │      │
    │              │   resourceId: projects/_/buckets/grucloud.org │      │
    │              │   version: 1                                  │      │
    │              │   etag: CAI=                                  │      │
    │              │   bindings:                                   │      │
    │              │     - role: roles/storage.legacyBucketOwner   │      │
    │              │       members:                                │      │
    │              │         - "projectEditor:grucloud-test"       │      │
    │              │         - "projectOwner:grucloud-test"        │      │
    │              │     - role: roles/storage.legacyBucketReader  │      │
    │              │       members:                                │      │
    │              │         - "projectViewer:grucloud-test"       │      │
    │              │     - role: roles/storage.legacyObjectOwner   │      │
    │              │       members:                                │      │
    │              │         - "projectEditor:grucloud-test"       │      │
    │              │         - "projectOwner:grucloud-test"        │      │
    │              │     - role: roles/storage.legacyObjectReader  │      │
    │              │       members:                                │      │
    │              │         - "projectViewer:grucloud-test"       │      │
    │              │     - role: roles/storage.objectViewer        │      │
    │              │       members:                                │      │
    │              │         - "allUsers"                          │      │
    │              │                                               │      │
    └──────────────┴───────────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 Object from google                                                │
    ├────────────┬─────────────────────────────────────────────────┬──────┤
    │ Name       │ Data                                            │ Our  │
    ├────────────┼─────────────────────────────────────────────────┼──────┤
    │ index.html │ kind: storage#object                            │ NO   │
    │            │ id: grucloud.org/index.html/1625049860598468    │      │
    │            │ selfLink: https://www.googleapis.com/storage/v… │      │
    │            │ mediaLink: https://storage.googleapis.com/down… │      │
    │            │ name: index.html                                │      │
    │            │ bucket: grucloud.org                            │      │
    │            │ generation: 1625049860598468                    │      │
    │            │ metageneration: 1                               │      │
    │            │ contentType: text/html                          │      │
    │            │ storageClass: STANDARD                          │      │
    │            │ size: 333                                       │      │
    │            │ md5Hash: tVxlJ6kUMyBVNUg4XlUdJA==               │      │
    │            │ crc32c: TISzGQ==                                │      │
    │            │ etag: CMTVu72Wv/ECEAE=                          │      │
    │            │ timeCreated: 2021-06-30T10:44:20.599Z           │      │
    │            │ updated: 2021-06-30T10:44:20.599Z               │      │
    │            │ timeStorageClassUpdated: 2021-06-30T10:44:20.5… │      │
    │            │ metadata:                                       │      │
    │            │   managed-by: grucloud                          │      │
    │            │   stage: dev                                    │      │
    │            │                                                 │      │
    └────────────┴─────────────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 BackendBucket from google                                         │
    ├────────────────┬─────────────────────────────────────────────┬──────┤
    │ Name           │ Data                                        │ Our  │
    ├────────────────┼─────────────────────────────────────────────┼──────┤
    │ backend-bucket │ id: 8720064536531564011                     │ Yes  │
    │                │ creationTimestamp: 2021-06-30T03:44:20.676… │      │
    │                │ name: backend-bucket                        │      │
    │                │ description: Managed By GruCloud            │      │
    │                │ selfLink: https://www.googleapis.com/compu… │      │
    │                │ bucketName: grucloud.org                    │      │
    │                │ enableCdn: false                            │      │
    │                │ kind: compute#backendBucket                 │      │
    │                │                                             │      │
    └────────────────┴─────────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 UrlMap from google                                                │
    ├──────────┬───────────────────────────────────────────────────┬──────┤
    │ Name     │ Data                                              │ Our  │
    ├──────────┼───────────────────────────────────────────────────┼──────┤
    │ url-map  │ id: 1187115894224057828                           │ Yes  │
    │          │ creationTimestamp: 2021-06-30T03:44:27.793-07:00  │      │
    │          │ name: url-map                                     │      │
    │          │ description: Managed By GruCloud                  │      │
    │          │ selfLink: https://www.googleapis.com/compute/v1/… │      │
    │          │ defaultService: https://www.googleapis.com/compu… │      │
    │          │ fingerprint: AFWyLkZ6QVA=                         │      │
    │          │ kind: compute#urlMap                              │      │
    │          │                                                   │      │
    └──────────┴───────────────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 HttpsTargetProxy from google                                      │
    ├────────────────────┬─────────────────────────────────────────┬──────┤
    │ Name               │ Data                                    │ Our  │
    ├────────────────────┼─────────────────────────────────────────┼──────┤
    │ https-target-proxy │ id: 6271089959767242210                 │ Yes  │
    │                    │ creationTimestamp: 2021-06-30T03:44:29… │      │
    │                    │ name: https-target-proxy                │      │
    │                    │ description: Managed By GruCloud        │      │
    │                    │ selfLink: https://www.googleapis.com/c… │      │
    │                    │ urlMap: https://www.googleapis.com/com… │      │
    │                    │ c:                        │      │
    │                    │   - "https://www.googleapis.com/comput… │      │
    │                    │ fingerprint: _7WjZisemFI=               │      │
    │                    │ kind: compute#targetHttpsProxy          │      │
    │                    │                                         │      │
    └────────────────────┴─────────────────────────────────────────┴──────┘
    
    
    ┌─────────────────────────────────────────────────────────────────────┐
    │ 1 GlobalForwardingRule from google                                  │
    ├────────────────────────┬─────────────────────────────────────┬──────┤
    │ Name                   │ Data                                │ Our  │
    ├────────────────────────┼─────────────────────────────────────┼──────┤
    │ global-forwarding-rule │ id: 953550543260874208              │ Yes  │
    │                        │ creationTimestamp: 2021-06-30T03:4… │      │
    │                        │ name: global-forwarding-rule        │      │
    │                        │ description: Managed By GruCloud    │      │
    │                        │ IPAddress: 34.149.122.91            │      │
    │                        │ IPProtocol: TCP                     │      │
    │                        │ portRange: 443-443                  │      │
    │                        │ target: https://www.googleapis.com… │      │
    │                        │ selfLink: https://www.googleapis.c… │      │
    │                        │ loadBalancingScheme: EXTERNAL       │      │
    │                        │ networkTier: PREMIUM                │      │
    │                        │ labelFingerprint: 42WmSpB8rSM=      │      │
    │                        │ fingerprint: 3GGsVKhNuO4=           │      │
    │                        │ kind: compute#forwardingRule        │      │
    │                        │                                     │      │
    └────────────────────────┴─────────────────────────────────────┴──────┘
    
    
    List Summary:
    Provider: google
    ┌────────────────────────────────────────────────────────────────────┐
    │ google                                                             │
    ├────────────────────┬───────────────────────────────────────────────┤
    │ SslCertificate     │ ssl-certificate                               │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ Bucket             │ grucloud.org                                  │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ Object             │ index.html                                    │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ BackendBucket      │ backend-bucket                                │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ UrlMap             │ url-map                                       │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ HttpsTargetProxy   │ https-target-proxy                            │
    ├────────────────────┼───────────────────────────────────────────────┤
    │ GlobalForwardingR… │ global-forwarding-rule                        │
    └────────────────────┴───────────────────────────────────────────────┘
    7 resources, 7 types, 1 provider
    Command "gc list" executed in 4s
    

    업데이트


    이 간단한 예시에서 편집website/simple/index.html을 하고 내용을 변경한 후에 파일을 저장할 새로운 버전의 사이트를 배치합시다.
    plan 명령은 배포할 내용을 이해하는 데 도움이 됩니다.
    gc plan
    
    Querying resources on 1 provider: google
    ✓ google
      ✓ Initialising
      ✓ Listing 7/7
      ✓ Querying
        ✓ Bucket 1/1
        ✓ Object 1/1
        ✓ SslCertificate 1/1
        ✓ BackendBucket 1/1
        ✓ UrlMap 1/1
        ✓ HttpsTargetProxy 1/1
        ✓ GlobalForwardingRule 1/1
    ┌───────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ 1 Object from google                                                                                  │
    ├───────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │ ┌─────────────────────────────────────────────────────────────────────────────────────────────────┐   │
    │ │ UPDATE: name: index.html, id: grucloud.org/index.html/1625068113228566                          │   │
    │ ├─────────────────────────────────────────────────────────────────────────────────────────────────┤   │
    │ │ Key: md5                                                                                        │   │
    │ ├────────────────────────────────────────────────┬────────────────────────────────────────────────┤   │
    │ │ - nnLSNGP9RyK8uy7mni91nA==                     │ + tVxlJ6kUMyBVNUg4XlUdJA==                     │   │
    │ └────────────────────────────────────────────────┴────────────────────────────────────────────────┘   │
    └───────────────────────────────────────────────────────────────────────────────────────────────────────┘
    
    
    ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ Plan summary for provider google                                                               │
    ├────────────────────────────────────────────────────────────────────────────────────────────────┤
    │ DEPLOY RESOURCES                                                                               │
    ├────────────────────┬───────────────────────────────────────────────────────────────────────────┤
    │ Object             │ index.html                                                                │
    └────────────────────┴───────────────────────────────────────────────────────────────────────────┘
    1 resource to deploy on 1 provider
    Command "gc p" executed in 4s
    
    이 예에서는 MDGC 버전의 해시와 비교합니다.
    다음은 apply 명령을 사용하여 효과적인 배치를 진행합니다.

    부수다


    올바른 순서로 인프라를 폐기하는 방법:
    gc destroy
    
    ┌─────────────────────────────────────────────────────────────────────────────┐
    │ Destroy summary for provider google                                         │
    ├────────────────────┬────────────────────────────────────────────────────────┤
    │ SslCertificate     │ ssl-certificate                                        │
    ├────────────────────┼────────────────────────────────────────────────────────┤
    │ Bucket             │ grucloud.org                                           │
    ├────────────────────┼────────────────────────────────────────────────────────┤
    │ BackendBucket      │ backend-bucket                                         │
    ├────────────────────┼────────────────────────────────────────────────────────┤
    │ UrlMap             │ url-map                                                │
    ├────────────────────┼────────────────────────────────────────────────────────┤
    │ HttpsTargetProxy   │ https-target-proxy                                     │
    ├────────────────────┼────────────────────────────────────────────────────────┤
    │ GlobalForwardingR… │ global-forwarding-rule                                 │
    └────────────────────┴────────────────────────────────────────────────────────┘
    Destroying resources on 1 provider: google
    ✓ google
      ✓ Initialising
      ✓ Destroying
        ✓ SslCertificate 1/1
        ✓ Bucket 1/1
        ✓ BackendBucket 1/1
        ✓ UrlMap 1/1
        ✓ HttpsTargetProxy 1/1
        ✓ GlobalForwardingRule 1/1
      ✓ default::onDestroyed
        ✓ remove the load balancer A DNS record
    6 resources destroyed, 6 types on 1 provider
    Running OnDestroyedGlobal resources on 1 provider: google
    Command "gc d -f" executed in 56s
    

    링크

  • GitHub
  • Documentation
  • Website

  • 좋은 웹페이지 즐겨찾기