Menyimpan dan memuat snapshot lingkungan

Cloud Composer 1 | Cloud Composer 2

Halaman ini menjelaskan cara menyimpan dan memuat status lingkungan Anda menggunakan snapshot lingkungan.

Anda dapat mengonfigurasi lingkungan agar dapat menyimpan snapshot secara otomatis. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi snapshot terjadwal.

Tentang snapshot lingkungan

Snapshot lingkungan menyimpan status lingkungan Anda. Anda dapat menyimpan dan memuat snapshot lingkungan sesuai permintaan.

Anda dapat menggunakan snapshot untuk:

  • Pulihkan lingkungan Anda ke keadaan sebelumnya. Buat cadangan lingkungan Anda menggunakan snapshot, lalu muat salah satu snapshot tersebut untuk memulihkan lingkungan Anda. Misalnya, Anda dapat me-roll back operasi update yang menginstal paket PyPI atau mengganti opsi konfigurasi Airflow, bahkan setelah lingkungan Anda berhasil diupdate.

  • Lakukan upgrade secara berdampingan dan lingkungan penyalinan. Buat snapshot dari lingkungan yang sudah ada, buat lingkungan baru yang menggunakan Cloud Composer versi yang sama atau lebih baru, lalu terapkan snapshot tersebut ke lingkungan baru ini. Prosedur ini mirip dengan memigrasikan. Pastikan untuk menjeda DAG sebelum membuat snapshot, untuk menghindari berjalannya DAG duplikat.

Cara snapshot disimpan

Snapshot lingkungan adalah sekumpulan file yang menjelaskan status lingkungan Anda dan menyimpan cadangan data lingkungan.

Anda dapat membuat beberapa snapshot lingkungan. Snapshot lingkungan bersifat non-inkremental. Anda dapat menggunakan snapshot apa pun secara terpisah dari snapshot lainnya.

Cloud Composer tidak menghapus snapshot saat Anda menghapus lingkungan.

Secara default, Cloud Composer menyimpan snapshot di folder snapshots/ di bucket lingkungan Anda. Anda juga dapat menetapkan lokasi kustom saat membuat snapshot.

Meskipun UI Cloud Storage menampilkan data sebagai folder untuk memudahkan, bucket bekerja dalam struktur file datar. Hal ini tidak mengubah cara kerja Anda dalam menyimpan dan memuat snapshot di Konsol Google Cloud, tetapi perhatikan hal ini saat Anda menjalankan operasi langsung pada file dalam bucket Anda. Untuk mengetahui informasi selengkapnya, lihat Namespace objek.

Pertimbangan keamanan untuk snapshot

Untuk mengurangi risiko keamanan ini, Anda dapat menyimpan informasi sensitif yang digunakan oleh DAG Airflow, seperti kunci atau sandi, di Secret Manager. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi Secret Manager untuk lingkungan Anda.

Pastikan Anda memeriksa izin keamanan untuk bucket lingkungan. Jika Anda menyimpan snapshot lingkungan di bucket kustom, pastikan izin akses untuk snapshot tersebut dikonfigurasi dengan benar di project Anda. Saat memberikan izin, pastikan akun layanan lingkungan memiliki izin yang cukup untuk menyimpan dan memuat snapshot dari bucket.

Data yang disimpan dalam snapshot

Cloud Composer menyimpan data berikut dalam snapshot:

  • Penggantian konfigurasi Airflow.
  • Variabel lingkungan.
  • Daftar paket PyPI kustom, sebagai persyaratan.
  • Cadangan database Airflow, termasuk status tugas yang dijalankan, dan DAG menjalankan histori.
  • Cadangan folder /dags, /data, dan /plugins dari bucket lingkungan.
  • Kunci fernet lingkungan.
  • Informasi lain tentang konfigurasi lingkungan, seperti skala lingkungan dan parameter performa. Cloud Composer tidak menggunakan informasi ini saat memuat snapshot.

Data yang dimuat dari snapshot

Cloud Composer memuat data berikut dari snapshot:

  • Penggantian konfigurasi Airflow.
  • Variabel lingkungan.
  • Paket PyPI kustom (kecuali jika Anda memilih untuk melewati penginstalannya).

  • Konten database Airflow, termasuk status tugas yang dieksekusi, dan DAG menjalankan histori.

  • Konten folder /dags, /data, dan /plugins dari snapshot dimuat ke dalam bucket lingkungan.

  • Kunci fernet dari snapshot digunakan untuk mengenkripsi ulang data dari snapshot dengan kunci fernet lingkungan itu sendiri. Kunci fernet lingkungan tetap tidak berubah.

Meskipun Cloud Composer menyimpan beberapa informasi tentang konfigurasi lingkungan dalam snapshot, Cloud Composer tidak digunakan saat memuat snapshot. Parameter lingkungan berikut tidak berubah saat Anda memuat snapshot:

  • Konfigurasi lingkungan, seperti skala lingkungan dan parameter performa.
  • Konfigurasi jaringan lingkungan.
  • Isi bucket lingkungan di luar folder /dags, /data, dan /plugins.
  • Label lingkungan.

Setiap setelan yang diterapkan di infrastruktur Cloud Composer tanpa menggunakan Cloud Composer API mungkin akan hilang saat Anda memuat snapshot.

Tentang operasi yang selesai sebagian

Saat Anda memuat snapshot, operasi dapat berhasil, gagal, atau selesai sebagian:

  • Operasi yang berhasil memuat semua data dari snapshot.
  • Operasi yang gagal tidak menyebabkan perubahan apa pun.
  • Operasi yang selesai sebagian akan memuat subset data dari snapshot. Operasi tersebut dilaporkan sebagai gagal, tetapi pesan error menunjukkan data yang berhasil dimuat. Misalnya, jika paket PyPI diinstal, tetapi penggantian opsi konfigurasi Airflow tidak berhasil, pesan error akan menunjukkan hal ini.

Untuk operasi yang selesai sebagian, Anda dapat mencoba memuat lagi snapshot yang sama. Cloud Composer melewati langkah-langkah yang berhasil pada upaya sebelumnya. Misalnya, jika operasi gagal pada waktu tunggu, tetapi database berhasil dimuat, upaya berikutnya tidak akan memuat database lagi.

Sebelum memulai

  • Snapshot didukung di Cloud Composer 2 versi 2.0.9 dan yang lebih baru. Cloud Composer 1 mendukung penyimpanan snapshot lingkungan untuk versi >= 1.18.5.

  • Snapshot tidak membuat lingkungan. Jika ingin memuat snapshot dari lingkungan ke lingkungan yang berbeda, Anda harus membuat lingkungan baru terlebih dahulu, lalu memuat snapshot ke lingkungan tersebut.

  • Anda tidak dapat memuat snapshot ke lingkungan yang berada dalam status error. Lingkungan tersebut tidak dapat diperbaiki dengan memuat snapshot. Anda masih dapat memuat snapshot yang ada ke lingkungan baru.

  • Anda hanya dapat memuat snapshot ke Cloud Composer atau Airflow versi yang sama atau lebih baru. Misalnya, Anda tidak dapat memuat snapshot dari Cloud Composer 2.0.2 ke lingkungan dengan Cloud Composer 2.0.1. Sebagai contoh lainnya, Anda tidak dapat memuat snapshot dari Airflow 2.2.3 ke Airflow 2.1.4.

  • Snapshot tidak mengubah versi Cloud Composer. Jika Anda mengupgrade lingkungan ke Cloud Composer versi terbaru, lalu memuat snapshot dari versi sebelumnya, lingkungan Anda tetap mempertahankan versi Cloud Composer saat ini. Misalnya, memuat snapshot dari Cloud Composer 2.0.1 ke Cloud Composer 2.0.2 tidak akan mengembalikan lingkungan ke Cloud Composer 2.0.1.

  • Ukuran maksimum database Airflow yang mendukung snapshot adalah 20 GB. Jika database lingkungan Anda memerlukan lebih dari 20 GB, kurangi ukuran database Airflow sebelum menyimpan snapshot.

  • Panjang maksimum nama objek di bucket lingkungan tidak boleh lebih dari 1.024 simbol. Jika tidak, snapshot tidak dapat dibuat.

  • Jika Anda menyimpan snapshot di lokasi di luar bucket lingkungan Anda, akun layanan lingkungan Anda harus memiliki izin baca dan tulis untuk lokasi yang ditentukan. Misalnya, peran Storage Object Admin memiliki izin tersebut. Anda dapat menerapkannya ke project atau bucket tertentu.

  • Pembuatan dan penyimpanan snapshot akan menimbulkan biaya tambahan, yang terkait dengan Cloud Storage. Untuk informasi selengkapnya, lihat Harga.

Menyimpan snapshot lingkungan

Cloud Composer menyimpan snapshot lingkungan di subfolder, sesuai dengan folder yang Anda tentukan. Nama folder berisi project ID, lokasi lingkungan, nama lingkungan, dan stempel waktu saat snapshot disimpan. Contoh: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Konsol

Untuk membuat snapshot lingkungan Anda:

  1. Di konsol Google Cloud, buka halaman Environments.

    Buka Lingkungan

  2. Pada daftar lingkungan, klik nama lingkungan Anda. Halaman Detail lingkungan akan terbuka.

  3. Klik Simpan snapshot.

  4. Pada dialog Save snapshot, pilih tempat untuk menyimpan snapshot:

    • Untuk menyimpan snapshot di folder /snapshots dalam bucket lingkungan, pilih Use snapshot folder in environment bucket (default).

    • Untuk menyimpan snapshot di folder kustom, pilih Use custom folder in another bucket, lalu tentukan lokasi.

  5. Klik Save.

gcloud

Perintah gcloud beta composer environments snapshots save menyimpan snapshot lingkungan Anda.

  • Argumen snapshot-location menentukan folder tempat snapshot disimpan. Secara default, snapshot disimpan dalam folder /snapshots di bucket lingkungan Anda. Contohnya, gs://us-central1-example-916807e1-bucket/snapshots. Anda juga dapat menentukan folder lainnya.

Untuk menyimpan snapshot lingkungan Anda, jalankan:

gcloud beta composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Ganti:

  • ENVIRONMENT_NAME dengan nama lingkungan.
  • LOCATION dengan region tempat lingkungan berada.
  • (Opsional) SNAPSHOTS_FOLDER dengan URI folder bucket tempat menyimpan snapshot. Jika Anda menghapus argumen ini, Cloud Composer akan menyimpan snapshot di folder /snapshots di bucket lingkungan Anda.

Contoh berikut menggunakan lokasi default:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1

Contoh berikut menyimpan ke folder kustom:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. Buat permintaan API environments.saveSnapshot.

  2. Dalam isi permintaan, di kolom snapshotLocation, tentukan folder tempat Anda ingin menyimpan snapshot.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Ganti:

  • SNAPSHOTS_FOLDER dengan URI folder bucket tempat menyimpan snapshot.

Contoh:

// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

Anda tidak dapat menyimpan dan memuat snapshot lingkungan dari Terraform.

Menyimpan dan memuat snapshot adalah tindakan yang dilakukan pada lingkungan, dan snapshot yang dihasilkan bukan bagian dari definisi lingkungan. Karena Terraform hanya mengelola konfigurasi lingkungan Cloud Composer, Anda tidak dapat menyimpan atau memuat snapshot lingkungan dari lingkungan tersebut.

Memuat snapshot lingkungan

Pertimbangkan situasi berikut. Misalnya, pengecekan diaktifkan dan Airflow akan mengeksekusi DAG sesuai jadwal antara waktu saat snapshot dibuat hingga dimuat. Dalam hal ini, setelah Anda memuat snapshot, Airflow tidak memiliki informasi tentang proses DAG yang terjadi, sehingga Airflow akan menjalankan DAG lagi untuk waktu dan data yang sama.

Sebagai contoh lain, pertimbangkan DAG yang berjalan sesuai jadwal harian. Ambil snapshot, lalu Airflow akan mengeksekusi DAG ini, dan setelah itu Anda memuat snapshot pada hari yang sama. Dalam hal ini, Airflow akan menjalankan DAG lagi, meskipun pengecekan dinonaktifkan.

Konsol

Untuk memuat snapshot ke lingkungan Cloud Composer 2 Anda:

  1. Di konsol Google Cloud, buka halaman Environments.

    Buka Lingkungan

  2. Pada daftar lingkungan, klik nama lingkungan Anda. Halaman Detail lingkungan akan terbuka.

  3. Klik Muat snapshot.

  4. Pada dialog Load snapshot, klik Browse.

  5. Pilih folder yang menyimpan snapshot. Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Misalnya, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  6. (Opsional) Untuk melewati penginstalan paket PyPI kustom dari snapshot, pilih Skip PyPI packages installation. Jika Anda memuat snapshot lingkungan dengan paket PyPI kustom yang terinstal, Cloud Composer tidak akan menginstal paket kustom tersebut.

  7. Klik Load dan tunggu hingga Cloud Composer memuat snapshot.

gcloud

Perintah gcloud beta composer environments snapshots load memuat snapshot ke lingkungan Anda.

  • Argumen --snapshot-path menentukan folder tempat snapshot berada.

    Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Misalnya, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  • (Opsional) Argumen --skip-pypi-packages-installation akan melewati penginstalan paket PyPI kustom dari snapshot. Jika Anda memuat snapshot lingkungan dengan paket PyPI kustom yang terinstal, Cloud Composer tidak akan menginstal paket kustom tersebut.

gcloud beta composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Ganti:

  • DESTINATION_ENVIRONMENT_NAME dengan nama lingkungan tempat Anda ingin memuat snapshot.
  • LOCATION dengan region tempat lingkungan berada.
  • SNAPSHOT_PATH dengan URI bucket, diikuti dengan jalur ke snapshot.

Contoh:

gcloud beta composer environments snapshots load \
  example-environment \
  --location us-central1 \
  --snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"

API

  1. Buat permintaan API environments.loadSnapshot.

  2. Dalam isi permintaan, di kolom snapshotPath, tentukan URI bucket, diikuti dengan jalur ke snapshot. Nama folder mencantumkan ID project Anda, lokasi lingkungan, dan stempel waktu saat snapshot disimpan. Misalnya, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  3. (Opsional) Dalam isi permintaan, di kolom skipPypiPackagesInstallation, tentukan apakah Cloud Composer harus melewati penginstalan paket PyPI kustom dari snapshot. Jika Anda memuat snapshot lingkungan dengan paket PyPI kustom yang terinstal, Cloud Composer tidak akan menginstal paket kustom tersebut.

    Kolom ini bersifat opsional. Jika Anda menghapus kolom ini, Cloud Composer akan menginstal paket PyPI dari snapshot.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Ganti:

  • SNAPSHOT_PATH dengan URI folder bucket tempat menyimpan snapshot.

Contoh:

// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot

{
  "snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
  "skipPypiPackagesInstallation": "False"
}

Terraform

Anda tidak dapat menyimpan dan memuat snapshot lingkungan menggunakan Terraform.

Menyimpan dan memuat snapshot adalah tindakan yang dilakukan pada lingkungan, dan snapshot yang dihasilkan bukan bagian dari definisi lingkungan. Karena Terraform hanya mengelola konfigurasi lingkungan Cloud Composer, Anda tidak dapat menyimpan atau memuat snapshot lingkungan dari lingkungan tersebut.

Langkah selanjutnya