Menyimpan dan memuat snapshot lingkungan

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

Anda dapat mengonfigurasi lingkungan untuk menyimpan snapshot secara otomatis. Untuk selengkapnya 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 ke kondisi sebelumnya. Buat cadangan menggunakan snapshot, lalu memuat salah satu snapshot tersebut untuk memulihkan lingkungan fleksibel App Engine. Misalnya, Anda dapat me-roll back operasi pembaruan yang menginstal paket PyPI atau mengganti opsi konfigurasi Airflow, bahkan setelah lingkungan Anda berhasil diperbarui.

  • Lakukan upgrade dan salin lingkungan secara berdampingan. Buat snapshot dari lingkungan yang sudah ada, buat lingkungan baru yang menggunakan versi Cloud Composer, lalu menerapkan snapshot ke versi baru lingkungan fleksibel App Engine. Prosedur ini mirip dengan bermigrasi. Pastikan untuk menjeda DAG sebelum Anda membuat snapshot, untuk menghindari DAG duplikat.

Cara penyimpanan snapshot

Snapshot lingkungan adalah kumpulan file yang mendeskripsikan status dan menyimpan cadangan data lingkungan.

Anda dapat membuat beberapa snapshot lingkungan Anda. 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 fleksibel App Engine.

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

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

Pertimbangan keamanan untuk snapshot

Untuk memitigasi risiko keamanan ini, Anda dapat menyimpan informasi sensitif yang digunakan oleh DAG Airflow, seperti kunci atau sandi, di {i>Secret Manager<i}. Untuk informasi selengkapnya, lihat Konfigurasi Secret Manager untuk lingkungan Anda.

Pastikan Anda memeriksa izin keamanan untuk bucket lingkungan Anda. Jika Anda menyimpan snapshot lingkungan di bucket kustom, pastikan izin akses untuk dikonfigurasi dengan benar di proyek. Saat menetapkan izin, pastikan layanan lingkungan itu memiliki izin yang memadai untuk menyimpan dan memuat snapshot dari direktori VM dengan 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 feri lingkungan.
  • Informasi lain tentang konfigurasi lingkungan, seperti skala lingkungan, dan parameter performa. Cloud Composer tidak menggunakan informasi ini saat dimuat 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 penginstalan).

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

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

  • Kunci fernet dari {i>snapshot <i}digunakan untuk mengenkripsi ulang data dari {i>snapshot<i} dengan kunci {i> fernet<i} lingkungan itu sendiri. Kunci sandi dari tetap tidak berubah.

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

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

Setelan apa pun yang Anda terapkan di infrastruktur Cloud Composer tanpa menggunakan Cloud Composer API mungkin akan hilang saat Anda memuat tanpa harus membuat snapshot.

Tentang operasi yang selesai sebagian

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

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

Untuk operasi yang selesai sebagian, Anda dapat mencoba memuat snapshot yang sama untuk mencoba lagi perintah. Cloud Composer melewati langkah yang berhasil pada percobaan sebelumnya. Misalnya, jika sebuah operasi gagal pada waktu tunggu, tetapi berhasil dimuat, maka percobaan berikutnya tidak memuat {i>database<i} 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 menciptakan lingkungan. Jika Anda ingin memuat {i>snapshot <i}dari satu lingkungan ke lingkungan yang berbeda, Anda harus terlebih dahulu membuat lalu memuat snapshot ke dalamnya.

  • Anda tidak dapat memuat snapshot ke lingkungan yang berada dalam status error. Penting tidak mungkin memperbaiki lingkungan seperti itu dengan memuat snapshot. Anda masih dapat memuat snapshot yang ada ke lingkungan baru.

  • Anda hanya dapat memuat snapshot ke versi yang sama atau lebih baru Cloud Composer atau Airflow. Misalnya, Anda tidak bisa 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 memperbarui lingkungan ke versi yang lebih baru dari Cloud Composer, lalu memuat snapshot dari versi sebelumnya, maka lingkungan Anda masih mempertahankan versi saat ini dari Cloud Composer. Misalnya, memuat snapshot dari Cloud Composer 2.0.1 ke Cloud Composer 2.0.2 tidak mengembalikan lingkungan ke Cloud Composer 2.0.1.

  • Ukuran maksimum database Airflow yang mendukung snapshot adalah 20 GB. Jika {i>database<i} lingkungan Anda mengambil lebih dari 20 GB, kurangi ukuran database Airflow sebelum menyimpan tanpa harus membuat snapshot.

  • Jumlah total objek dalam folder /dags, /plugins, dan /data di bucket lingkungan harus kurang dari 100.000 hingga membuat snapshot.

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

  • Jika Anda menyimpan snapshot di lokasi di luar 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 sebuah project atau ke bucket tertentu.

  • Pembuatan dan penyimpanan snapshot menimbulkan biaya tambahan, yang terkait ke 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 ringkasan 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 Save snapshot.

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

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

    • Untuk menyimpan snapshot di folder kustom, pilih Gunakan folder kustom di bucket lain, lalu tentukan lokasi.

  5. Klik Simpan.

gcloud

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

  • Argumen snapshot-location menentukan folder tempat snapshot berada disimpan. Secara default, snapshot disimpan di folder /snapshots di bucket lingkungan. 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 dan membuat snapshot. Jika Anda menghilangkan argumen ini, Cloud Composer akan menyimpan snapshot di folder /snapshots pada bucket lingkungan Anda.

Contoh berikut menggunakan lokasi default:

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

Contoh berikut akan 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 environments.saveSnapshot terhadap permintaan API.

  2. Dalam isi permintaan, di kolom snapshotLocation, tentukan folder tempat Anda ingin menyimpan {i>snapshot<i}.

{
  "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

Snapshot lingkungan tidak dapat disimpan dan dimuat dari Terraform.

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

Memuat snapshot lingkungan

Pertimbangkan situasi berikut. Misalnya, catch-up diaktifkan dan Airflow menjalankan DAG sesuai jadwal antara saat snapshot dibuat hingga dimuat. Dalam hal ini, setelah Anda memuat snapshot, Airflow tidak memiliki informasi tentang operasi DAG yang terjadi, jadi Airflow menjalankan DAG lagi untuk waktu dan data yang sama.

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

Konsol

Untuk memuat snapshot ke lingkungan Cloud Composer 2:

  1. Di Konsol Google Cloud, buka halaman Environments.

    Buka Lingkungan

  2. Di daftar lingkungan, klik nama lingkungan lingkungan fleksibel App Engine. 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, Cloud Composer tidak 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 ditemukan.

    Nama folder mencantumkan ID project Anda, alamat 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 instalasi paket PyPI khusus dari {i>snapshot<i}. Jika Anda memuat snapshot lingkungan dengan paket PyPI kustom, Cloud Composer tidak 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 tanpa harus membuat 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 environments.loadSnapshot terhadap permintaan API.

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

  3. (Opsional) Di isi permintaan, di kolom skipPypiPackagesInstallation menentukan apakah Cloud Composer harus melewati instalasi paket PyPI khusus dari {i>snapshot<i}. Jika Anda memuat snapshot lingkungan dengan paket PyPI kustom, Cloud Composer tidak menginstal paket kustom tersebut.

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

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Ganti:

  • SNAPSHOT_PATH dengan URI folder bucket tempat menyimpan {i>snapshot<i}.

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

Snapshot lingkungan tidak dapat disimpan dan dimuat menggunakan Terraform.

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

Langkah selanjutnya