Membuat dan mengupload cetak biru

Blueprint adalah konfigurasi Terraform yang dikemas sebagai image Open Container Initiative (OCI). Konfigurasi Terraform menentukan infrastruktur dan aplikasi yang di-deploy oleh SaaS Runtime ke Google Cloud.

Halaman ini menjelaskan cara membuat image OCI dari konfigurasi Terraform yang ada, dan cara menguploadnya ke SaaS Runtime.

Untuk mengetahui detail tentang konfigurasi Terraform ini, lihat Blueprint di SaaS Runtime.

Sebelum memulai

  1. Pastikan Anda telah mengaktifkan SaaS Runtime.
  2. Di project yang Anda gunakan untuk SaaS Runtime, pastikan Anda memiliki repositori Artifact Registry yang ditetapkan ke format Docker. Untuk mengetahui detail selengkapnya, lihat Membuat repositori untuk SaaS Runtime.
  3. Identifikasi konfigurasi Terraform yang ingin Anda deploy menggunakan SaaS Runtime.

Membuat dan mengupload cetak biru

Untuk men-deploy konfigurasi Terraform ke Google Cloud menggunakan SaaS Runtime, Anda harus:

  • Kemasi konfigurasi Terraform ke dalam image OCI. Image OCI ini disebut cetak biru.
  • Masukkan image OCI ini ke repositori Artifact Registry yang Anda identifikasi atau siapkan.

Bergantung pada cara Anda memilih untuk membuat dan mengupload cetak biru, Anda dapat melakukan semua langkah secara manual, atau SaaS Runtime dapat melakukan beberapa langkah.

Anda dapat membuat image OCI dan menguploadnya ke repositori menggunakan salah satu metode berikut:

  • Upload arsip zip yang berisi konfigurasi Terraform. SaaS Runtime menggunakan arsip ZIP untuk membuat image OCI.

    Lihat detail di bagian berikut: Mengupload arsip zip.

  • Hubungkan repositori Git yang memiliki file Terraform. SaaS Runtime menggunakan file untuk membuat image OCI. Kemudian, SaaS Runtime menggunakan Cloud Build untuk membangun dan mengupload blueprint setiap kali Anda memperbarui repositori.

    Lihat detail di bagian berikut: Menghubungkan ke repositori Git.

  • Bangun image OCI secara lokal dan kirim image ke repositori di Artifact Registry.

    Lihat detail di bagian berikut: Membangun dan mengirim image secara manual.

  • Otomatiskan pembuatan dan pengiriman image OCI ke repositori di Artifact Registry. Mengotomatiskan proses ini akan membantu Anda memasukkan SaaS Runtime ke dalam pipeline CI/CD.

    Lihat detailnya di bagian berikut: Mengotomatiskan pembuatan cetak biru.

Mengupload arsip zip

Anda dapat membuat arsip zip dari file Terraform. Anda mengupload arsip ini ke SaaS Runtime saat membuat rilis atau jenis unit. SaaS Runtime menggunakan arsip ZIP untuk membuat image OCI yang diperlukan.

Untuk memberikan cetak biru menggunakan arsip ZIP, lakukan hal berikut:

  1. Buka direktori project Terraform Anda.
  2. Buat arsip ZIP yang berisi konfigurasi Terraform.
    • Pastikan bahwa:
      • Arsip zip hanya berisi file Terraform Anda. Misalnya, main.tf, variables.tf, outputs.tf, versions.tf, dan modul.
      • Arsip zip tidak berisi file yang tidak perlu, misalnya direktori .git, atau dockerfile.
    • Perintah untuk membuat arsip zip mungkin terlihat mirip dengan ini: zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
  3. Upload arsip ZIP saat Anda membuat rilis, atau saat Anda membuat jenis unit.

SaaS Runtime menggunakan arsip ZIP untuk membuat image OCI yang diperlukan, dan mengirimkannya ke repositori Artifact Registry.

Menghubungkan ke repositori Git

Jika menyimpan konfigurasi Terraform di repositori Git, Anda dapat menghubungkan SaaS Runtime ke repositori ini. SaaS Runtime menggunakan file untuk membuat image OCI yang diperlukan saat Anda membuat jenis unit atau membuat rilis.

Untuk menyediakan cetak biru menggunakan repositori Git, lakukan hal berikut:

  1. Pastikan file Terraform Anda berada di direktori root repositori Git Anda.
  2. Hubungkan repositori Git Anda ke SaaS Runtime saat Anda membuat rilis, atau saat Anda membuat jenis unit.

SaaS Runtime menggunakan Developer Connect untuk terhubung ke repositori Git. Untuk mengetahui detail selengkapnya tentang Developer Connect, lihat dokumentasi Developer Connect.

SaaS Runtime menggunakan file Terraform dari repositori Git untuk membuat image OCI yang diperlukan, dan mengirimkannya ke repositori Artifact Registry.

Integrasi ini mengotomatiskan proses pembuatan blueprint setiap kali Anda memperbarui kode Terraform di repositori. Jika ada perubahan di repositori Git yang ditautkan, SaaS Runtime akan menggunakan file yang diubah untuk otomatis membangun image OCI baru, lalu mendorongnya ke repositori Artifact Registry.

Membangun dan mengirim image secara manual

Metode ini memberi Anda kontrol terperinci atas proses pembuatan cetak biru.

Untuk membuat blueprint secara manual, lakukan langkah-langkah berikut:

  1. Di direktori root file Terraform Anda, buat file bernama Dockerfile dengan konten berikut:

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

    Dockerfile ini menggunakan image dasar minimal (scratch). Sebaiknya sertakan dockerignore ke perintah untuk mengecualikan file yang tidak relevan, seperti:

    • Dockerfile itu sendiri
    • direktori .git
    • file .gitignore
  2. Jika Anda tidak memiliki builder Docker, buat builder docker-container menggunakan docker buildx dengan menggunakan perintah berikut:

    docker buildx create --name container --driver=docker-container
    
  3. Jalankan perintah docker buildx build berikut dari direktori Terraform Anda untuk membangun dan mengirim blueprint ke 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 .
    

    Ganti kode berikut:

    • PROJECT_ID: Project ID Anda.
    • REPOSITORY_NAME: Nama repositori Artifact Registry Anda.
    • IMAGE_NAME: Nama untuk image cetak biru Anda.
    • TAG: Tag untuk versi image Anda (misalnya, latest, atau v1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi cetak biru secara efektif.
    • TERRAFORM_VERSION: versi Terraform yang didukung untuk digunakan. Lihat Versi Terraform yang didukung untuk mengetahui daftar versi yang didukung oleh Infrastructure Manager.

    Perintah mungkin terlihat seperti contoh berikut:

    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 .
    

Image OCI ada di repositori Artifact Registry.

Untuk menggunakan image ini dengan SaaS Runtime, pilih image ini saat Anda membuat rilis, atau saat Anda membuat jenis unit.

Mengotomatiskan pembuatan cetak biru

Anda dapat mengotomatiskan pembuatan image OCI dan pengiriman ke Artifact Registry menggunakan Cloud Build. Anda dapat menyiapkan pemicu sehingga setiap kali kode Terraform diubah, image OCI akan otomatis di-build dan dikirim ke Artifact Registry.

Untuk menyiapkan otomatisasi ini, lakukan hal berikut:

  1. Di root repositori Terraform, buat file cloudbuild.yaml dengan konfigurasi berikut:

    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
    

    Ganti kode berikut:

    • PROJECT_ID: Project ID Anda.
    • CLOUD_BUILD_SERVICE_ACCOUNT: Nama lengkap akun layanan Cloud Build Anda. Untuk mengetahui detail selengkapnya tentang Runtime SaaS dan akun layanan, lihat Akun layanan Runtime SaaS
    • REPOSITORY_NAME: Nama repositori Artifact Registry Anda.
    • IMAGE_NAME: Nama untuk image cetak biru Anda.
    • TAG: Tag untuk versi image Anda (misalnya, latest, atau v1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi cetak biru secara efektif.
    • TERRAFORM_VERSION: versi Terraform yang didukung untuk digunakan. Lihat Versi Terraform yang didukung untuk mengetahui daftar versi yang didukung oleh Infrastructure Manager.
  2. Mulai tugas Cloud Build menggunakan perintah gcloud builds submit dari direktori yang berisi file cloudbuild.yaml Anda:

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

    Ganti kode berikut:

    • PROJECT_ID: Project ID Anda.
    • REPOSITORY_NAME: Nama repositori Artifact Registry Anda.
    • IMAGE_NAME: Nama untuk image cetak biru Anda
    • TAG: Tag untuk versi image Anda (misalnya, latest, atau v1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi cetak biru secara efektif.
  3. Anda dapat menyiapkan pemicu sehingga setiap kali kode Terraform diubah, image OCI akan otomatis di-build dan dikirim ke Artifact Registry. Untuk mengetahui detailnya, lihat Membuat dan mengelola pemicu build.

Image OCI sekarang ada di repositori Artifact Registry.

Untuk menggunakan image ini dengan SaaS Runtime, pilih image ini saat Anda membuat rilis, atau saat Anda membuat jenis unit.

Langkah berikutnya