Blueprint adalah konfigurasi Terraform yang dikemas sebagai image Open Container Initiative (OCI). Konfigurasi Terraform menentukan infrastruktur dan aplikasi yang di-deploy oleh 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 Blueprint di App Lifecycle Manager.
Sebelum memulai
- Pastikan Anda telah mengaktifkan App Lifecycle Manager.
- Dalam 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.
- Identifikasi konfigurasi Terraform yang ingin Anda deploy menggunakan
App Lifecycle Manager.
- Untuk mengetahui detail tentang cara memutuskan cara memodelkan penawaran Aplikasi menggunakan cetak biru, lihat Menentukan model penawaran Aplikasi
- Untuk mengetahui detail tentang persyaratan konfigurasi Terraform, lihat Persyaratan blueprint.
Membuat dan mengupload cetak biru
Untuk men-deploy konfigurasi Terraform ke Google Cloud menggunakan App Lifecycle Manager, Anda perlu:
- Mengemas konfigurasi Terraform ke dalam image OCI. Image OCI ini disebut blueprint.
- 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 file ZIP yang berisi konfigurasi Terraform. App Lifecycle Manager menggunakan file ZIP untuk membuat image OCI.
Lihat detail di bagian berikut: Mengupload file ZIP.
Hubungkan repositori Git yang memiliki file Terraform. App Lifecycle Manager menggunakan file tersebut untuk membuat image OCI. Kemudian, App Lifecycle Manager 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 detailnya 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 App Lifecycle Manager ke dalam pipeline CI/CD.
Lihat detailnya di bagian berikut: Mengotomatiskan pembuatan blueprint.
Upload file ZIP
Anda dapat membuat arsip zip file Terraform. Anda mengupload arsip ini ke App Lifecycle Manager saat membuat rilis atau jenis unit. App Lifecycle Manager menggunakan file ZIP untuk membuat image OCI yang diperlukan.
Untuk menyediakan blueprint menggunakan file ZIP, lakukan hal berikut:
- Buka direktori project Terraform Anda.
- Buat file 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. - File ZIP tidak berisi file yang tidak perlu, misalnya direktori
.git, atau Dockerfile.
- Arsip ZIP hanya berisi file Terraform Anda. Misalnya,
- Perintah untuk membuat file ZIP mungkin terlihat seperti ini:
zip terraform-files.zip main.tf outputs.tf variables.tf versions.tf
- Pastikan bahwa:
- Upload file ZIP saat Anda membuat rilis, atau saat Anda membuat jenis unit.
App Lifecycle Manager menggunakan file ZIP untuk membuat image OCI yang diperlukan, dan mengirimkannya ke repositori Artifact Registry.
Menghubungkan ke repositori Git
Jika Anda 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:
- Pastikan file Terraform Anda berada di direktori root repositori Git Anda.
- 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 blueprint.
Untuk membuat cetak biru secara manual, lakukan langkah-langkah berikut:
Di direktori root file Terraform Anda, buat file bernama
Dockerfiledengan konten berikut:# syntax=docker/dockerfile:1-labs FROM scratch COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /Dockerfileini menggunakan image dasar minimal (scratch). Pertimbangkan untuk menyertakandockerignoreke perintah untuk mengecualikan file yang tidak relevan, seperti:Dockerfileitu sendiri- direktori
.git - file
.gitignore
Jika Anda tidak memiliki builder Docker, buat builder
docker-containermenggunakandocker buildxdengan perintah berikut:docker buildx create --name container --driver=docker-containerJalankan perintah
docker buildx buildberikut 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, atauv1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi blueprint 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 berada 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 blueprint
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 dibangun dan dikirim ke Artifact Registry.
Untuk menyiapkan otomatisasi ini, lakukan hal berikut:
Di root repositori Terraform, buat file
cloudbuild.yamldengan 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_ONLYGanti 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 ManagerREPOSITORY_NAME: Nama repositori Artifact Registry Anda.IMAGE_NAME: Nama untuk image cetak biru Anda.TAG: Tag untuk versi image Anda (misalnya,latest, atauv1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi blueprint secara efektif.TERRAFORM_VERSION: versi Terraform yang didukung untuk digunakan. Lihat Versi Terraform yang didukung untuk mengetahui daftar versi yang didukung oleh Infrastructure Manager.
Mulai tugas Cloud Build menggunakan perintah
gcloud builds submitdari direktori yang berisi filecloudbuild.yamlAnda: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 blueprint AndaTAG: Tag untuk versi image Anda (misalnya,latest, atauv1.0.0). Memilih tag deskriptif akan membantu Anda mengelola versi blueprint secara efektif.
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 berada 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
- Untuk memahami App Lifecycle Manager lebih lanjut, lihat Ringkasan App Lifecycle Manager.
- Untuk mempelajari blueprint lebih lanjut, lihat Blueprint di App Lifecycle Manager.
- Untuk mulai menggunakan App Lifecycle Manager, mulailah dengan Membuat penawaran Aplikasi.