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 App Lifecycle Manager ke Google Cloud.

Halaman ini menjelaskan cara membuat image OCI dari konfigurasi Terraform yang ada, dan cara menguploadnya ke App Lifecycle Manager.

Untuk mengetahui detail tentang konfigurasi Terraform ini, lihat Cetak biru di Pengelola Siklus Proses Aplikasi.

Sebelum memulai

  1. Pastikan Anda telah mengaktifkan Pengelola Siklus Proses Aplikasi.
  2. Di project yang Anda gunakan untuk App Lifecycle Manager, pastikan Anda memiliki repositori Artifact Registry yang ditetapkan ke format Docker. Untuk mengetahui detail selengkapnya, lihat Membuat repositori untuk App Lifecycle Manager.
  3. Identifikasi konfigurasi Terraform yang ingin Anda deploy menggunakan App Lifecycle Manager.

Membuat dan mengupload cetak biru

Untuk men-deploy konfigurasi Terraform ke Google Cloud menggunakan App Lifecycle Manager, Anda perlu:

  • 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 App Lifecycle Manager 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. App Lifecycle Manager menggunakan arsip ZIP untuk membuat image OCI.

    Lihat detail di bagian berikut: Mengupload arsip zip.

  • Hubungkan repositori Git yang memiliki file Terraform. App Lifecycle Manager menggunakan file untuk membuat image OCI. App Lifecycle Manager kemudian menggunakan Cloud Build untuk mem-build dan mengupload cetak biru 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 Pengelola Siklus Proses Aplikasi 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 Pengelola Siklus Proses Aplikasi saat membuat rilis atau jenis unit. App Lifecycle Manager 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.

App Lifecycle Manager 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 App Lifecycle Manager ke repositori ini. App Lifecycle Manager 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 App Lifecycle Manager saat Anda membuat rilis, atau saat Anda membuat jenis unit.

App Lifecycle Manager menggunakan Developer Connect untuk terhubung ke repositori Git. Untuk mengetahui detail selengkapnya tentang Developer Connect, lihat dokumentasi Developer Connect.

App Lifecycle Manager 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, App Lifecycle Manager akan menggunakan file yang diubah untuk otomatis membangun image OCI baru, lalu mengirimkannya 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 mengirimkan 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 App Lifecycle Manager, 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 App Lifecycle Manager dan akun layanan, lihat Akun layanan App Lifecycle Manager.
    • 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 kini ada di repositori Artifact Registry.

Untuk menggunakan image ini dengan App Lifecycle Manager, pilih image ini saat Anda membuat rilis, atau saat Anda membuat jenis unit.

Langkah berikutnya