청사진 만들기 및 업로드

블루프린트는 Open Container Initiative (OCI) 이미지로 패키징된 Terraform 구성입니다. Terraform 구성은 SaaS 런타임이 Google Cloud에 배포하는 인프라와 애플리케이션을 지정합니다.

이 페이지에서는 기존 Terraform 구성에서 OCI 이미지를 만드는 방법과 SaaS 런타임에 업로드하는 방법을 설명합니다.

이러한 Terraform 구성에 관한 자세한 내용은 SaaS 런타임의 청사진을 참고하세요.

시작하기 전에

  1. SaaS 런타임을 사용 설정했는지 확인합니다.
  2. SaaS 런타임에 사용하는 프로젝트에 Docker 형식으로 설정된 Artifact Registry 저장소가 있는지 확인합니다. 자세한 내용은 SaaS 런타임용 저장소 만들기를 참고하세요.
  3. SaaS 런타임을 사용하여 배포할 Terraform 구성을 식별합니다.
    • 청사진을 사용하여 SaaS 제품을 모델링하는 방법을 결정하는 방법에 관한 자세한 내용은 SaaS 제품의 모델 결정을 참고하세요.
    • Terraform 구성 요구사항에 대한 자세한 내용은 청사진 요구사항을 참고하세요.

청사진 만들기 및 업로드

SaaS 런타임을 사용하여 Google Cloud 에 Terraform 구성을 배포하려면 다음 단계를 따라야 합니다.

  • Terraform 구성을 OCI 이미지로 패키징합니다. 이러한 OCI 이미지를 청사진이라고 합니다.
  • 이러한 OCI 이미지를 식별하거나 설정한 Artifact Registry 저장소에 넣습니다.

블루프린트를 만들고 업로드하는 방법에 따라 모든 단계를 수동으로 실행하거나 SaaS 런타임에서 일부 단계를 실행할 수 있습니다.

다음 방법 중 하나를 사용하여 OCI 이미지를 만들고 저장소에 업로드할 수 있습니다.

  • Terraform 구성이 포함된 zip 보관 파일을 업로드합니다. SaaS 런타임은 zip 보관 파일을 사용하여 OCI 이미지를 만듭니다.

    자세한 내용은 ZIP 보관 파일 업로드 섹션을 참고하세요.

  • Terraform 파일이 있는 Git 저장소를 연결합니다. SaaS 런타임은 파일을 사용하여 OCI 이미지를 만듭니다. 그런 다음 SaaS 런타임은 저장소를 업데이트할 때마다 Cloud Build를 사용하여 청사진을 빌드하고 업로드합니다.

    자세한 내용은 Git 저장소에 연결 섹션을 참고하세요.

  • OCI 이미지를 로컬로 빌드하고 Artifact Registry의 저장소에 이미지를 푸시합니다.

    자세한 내용은 이미지 수동 빌드 및 푸시 섹션을 참고하세요.

  • OCI 이미지를 만들고 Artifact Registry의 저장소에 푸시하는 작업을 자동화합니다. 이 프로세스를 자동화하면 SaaS 런타임을 CI/CD 파이프라인에 통합할 수 있습니다.

    자세한 내용은 블루프린트 생성 자동화 섹션을 참고하세요.

ZIP 보관 파일 업로드

Terraform 파일의 zip 보관 파일을 만들 수 있습니다. 버전 또는 단위 종류를 만들 때 이 보관 파일을 SaaS 런타임에 업로드합니다. SaaS 런타임은 zip 보관 파일을 사용하여 필요한 OCI 이미지를 만듭니다.

zip 보관 파일을 사용하여 청사진을 제공하려면 다음 단계를 따르세요.

  1. Terraform 프로젝트 디렉터리로 이동합니다.
  2. Terraform 구성이 포함된 zip 보관 파일을 만듭니다.
    • 다음 내용을 확인합니다.
      • ZIP 파일에는 Terraform 파일만 포함되어 있습니다. 예를 들어 main.tf, variables.tf, outputs.tf, versions.tf, 모듈이 있습니다.
      • zip 파일에 .git 디렉터리나 Dockerfile과 같은 불필요한 파일이 포함되지 않습니다.
    • zip 보관 파일을 만드는 명령어는 다음과 비슷하게 표시됩니다. zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. 출시 버전을 만들 때 또는 단위 종류를 만들 때 zip 파일을 업로드합니다.

SaaS 런타임은 zip 보관 파일을 사용하여 필요한 OCI 이미지를 만들고 Artifact Registry 저장소에 푸시합니다.

Git 저장소에 연결

Git 저장소에 Terraform 구성을 저장하는 경우 SaaS 런타임을 이 저장소에 연결할 수 있습니다. SaaS 런타임은 단위를 만들거나 버전을 만들 때 필요한 OCI 이미지를 만들기 위해 파일을 사용합니다.

Git 저장소를 사용하여 청사진을 제공하려면 다음 단계를 따르세요.

  1. Terraform 파일이 Git 저장소의 루트 디렉터리에 있는지 확인합니다.
  2. 버전을 만들거나 단위 종류를 만들 때 Git 저장소를 SaaS 런타임에 연결합니다.

SaaS 런타임은 Developer Connect를 사용하여 Git 저장소에 연결합니다. Developer Connect에 대한 자세한 내용은 Developer Connect 문서를 참고하세요.

SaaS 런타임은 Git 저장소의 Terraform 파일을 사용하여 필요한 OCI 이미지를 만들고 이를 Artifact Registry 저장소에 푸시합니다.

이 통합은 저장소에서 Terraform 코드를 업데이트할 때마다 청사진 생성 프로세스를 자동화합니다. 연결된 Git 저장소에 변경사항이 있으면 SaaS 런타임은 변경된 파일을 사용하여 새 OCI 이미지를 자동으로 빌드한 후 Artifact Registry 저장소에 푸시합니다.

수동으로 이미지 빌드 및 푸시

이 메서드를 사용하면 청사진 생성 프로세스를 세밀하게 제어할 수 있습니다.

블루프린트를 수동으로 만들려면 다음 단계를 따르세요.

  1. Terraform 파일의 루트 디렉터리에서 다음 내용이 포함된 Dockerfile 파일을 만듭니다.

    # syntax=docker/dockerfile:1-labs
    FROM scratch
    COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /
    

    Dockerfile는 최소 기본 이미지 (scratch)를 사용합니다. 다음과 같이 관련 없는 파일을 제외하도록 dockerignore를 명령어에 포함하는 것이 좋습니다.

    • Dockerfile 자체
    • .git 디렉터리
    • .gitignore 파일
  2. Docker 빌더가 없으면 다음 명령어를 사용하여 docker buildxdocker-container 빌더를 만듭니다.

    docker buildx create --name container --driver=docker-container
    
  3. Terraform 디렉터리에서 다음 docker buildx build 명령어를 실행하여 블루프린트를 빌드하고 Artifact Registry에 푸시합니다.

    IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=TERRAFORM_VERSION
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • REPOSITORY_NAME: Artifact Registry 저장소의 이름입니다.
    • IMAGE_NAME: 블루프린트 이미지의 이름입니다.
    • TAG: 이미지 버전의 태그입니다 (예: latest 또는 v1.0.0). 설명이 포함된 태그를 선택하면 청사진 버전을 효과적으로 관리할 수 있습니다.
    • TERRAFORM_VERSION: 사용할 지원되는 Terraform 버전입니다. Infrastructure Manager에서 지원하는 버전 목록은 지원되는 Terraform 버전을 참고하세요.

    명령어는 다음 예시와 비슷하게 표시될 수 있습니다.

    IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0
    ENGINE_TYPE=inframanager
    ENGINE_VERSION=1.5.7
    
    docker buildx build -t $IMAGE_NAME \
      --builder=container \
      --push \
      --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \
      --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \
      --provenance=false .
    

OCI 이미지가 Artifact Registry 저장소에 있습니다.

SaaS 런타임에서 이 이미지를 사용하려면 버전을 만들 때 또는 단위 종류를 만들 때 이 이미지를 선택하세요.

청사진 생성 자동화

Cloud Build를 사용하여 OCI 이미지 생성 및 Artifact Registry 푸시를 자동화할 수 있습니다. Terraform 코드가 변경될 때마다 OCI 이미지가 자동으로 빌드되고 Artifact Registry에 푸시되도록 트리거를 설정할 수 있습니다.

이 자동화를 설정하려면 다음 단계를 따르세요.

  1. Terraform 저장소의 루트에서 다음 구성으로 cloudbuild.yaml 파일을 만듭니다.

    steps:
    - id: 'Create Dockerfile'
      name: 'bash'
      args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint']
    - id: 'Create docker-container driver'
      name: 'docker'
      args: ['buildx', 'create', '--name', 'container', '--driver=docker-container']
    - id: 'Build and Push docker image'
      name: 'docker'
      args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.']
    serviceAccount: '${_SERVICE_ACCOUNT}'
    substitutions:
      _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT'
      _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest'
      _ENGINE_TYPE: 'inframanager'
      _ENGINE_VERSION: 'TERRAFORM_VERSION'
    options:
      logging: CLOUD_LOGGING_ONLY
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • CLOUD_BUILD_SERVICE_ACCOUNT: Cloud Build 서비스 계정의 전체 이름입니다. SaaS 런타임 및 서비스 계정에 관한 자세한 내용은 SaaS 런타임 서비스 계정을 참고하세요.
    • REPOSITORY_NAME: Artifact Registry 저장소의 이름입니다.
    • IMAGE_NAME: 블루프린트 이미지의 이름입니다.
    • TAG: 이미지 버전의 태그입니다 (예: latest 또는 v1.0.0). 설명이 포함된 태그를 선택하면 청사진 버전을 효과적으로 관리할 수 있습니다.
    • TERRAFORM_VERSION: 사용할 지원되는 Terraform 버전입니다. Infrastructure Manager에서 지원하는 버전 목록은 지원되는 Terraform 버전을 참고하세요.
  2. cloudbuild.yaml 파일이 포함된 디렉터리에서 gcloud builds submit 명령어를 사용하여 Cloud Build 작업을 시작합니다.

    gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • REPOSITORY_NAME: Artifact Registry 저장소의 이름입니다.
    • IMAGE_NAME: 블루프린트 이미지의 이름
    • TAG: 이미지 버전의 태그입니다 (예: latest 또는 v1.0.0). 설명이 포함된 태그를 선택하면 청사진 버전을 효과적으로 관리할 수 있습니다.
  3. Terraform 코드가 변경될 때마다 OCI 이미지가 자동으로 빌드되고 Artifact Registry에 푸시되도록 트리거를 설정할 수 있습니다. 자세한 내용은 빌드 트리거 만들기 및 관리를 참고하세요.

이제 OCI 이미지가 Artifact Registry 저장소에 있습니다.

SaaS 런타임에서 이 이미지를 사용하려면 버전을 만들 때 또는 단위 종류를 만들 때 이 이미지를 선택하세요.

다음 단계