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.
다음은 리소스 문서에 대한 링크입니다.
갈고리
문서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
이 순서도에 따라 CLI
gcloud
를 설치 및 구성합니다.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
링크
Reference
이 문제에 관하여(GCP에 GruCloud를 사용하여 HTTPS 정적 웹 사이트 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fredericheem/deploy-https-static-website-on-gcp-with-grucloud-4ojb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)