Cloud Composer 1 | Cloud Composer 2
Halaman ini menunjukkan cara mengonfigurasi pembatasan lokasi resource untuk memastikan bahwa data Anda yang disimpan oleh Cloud Composer disimpan di lokasi yang Anda tentukan.
Cara kerja pembatasan lokasi
Pembatasan lokasi untuk Cloud Composer ditentukan berdasarkan kebijakan organisasi yang diterapkan ke project tempat lingkungan Cloud Composer dibuat. Kebijakan ini ditetapkan dalam project atau diwarisi dari organisasi.
Jika pembatasan lokasi diaktifkan, Anda tidak dapat membuat lingkungan di wilayah yang dilarang oleh kebijakan. Jika suatu wilayah tercantum dalam daftar Tolak, atau tidak tercantum dalam daftar yang Diizinkan, Anda tidak dapat membuat lingkungan di wilayah ini.
Untuk memungkinkan pembuatan lingkungan, kebijakan harus mengizinkan seluruh region, bukan zona tertentu dalam region ini. Misalnya, region europe-west3
harus diizinkan oleh kebijakan agar dapat membuat lingkungan Cloud Composer di region ini.
Cloud Composer memeriksa pembatasan lokasi di:
- Pembuatan lingkungan.
- Upgrade lingkungan, jika ada resource tambahan yang dibuat selama operasi.
- Update lingkungan, untuk lingkungan lama yang tidak menerapkan pembatasan lokasi pada dependensi Cloud Composer.
Selain memeriksa pembatasan lokasi, Cloud Composer melakukan hal berikut:
- Menyimpan image Airflow yang disesuaikan pengguna di repositori Artifact Registry regional.
- Jika multi-region
US
secara eksplisit dilarang oleh kebijakan ini, penggunaan Cloud Build akan dinonaktifkan. Dalam hal ini, image Airflow yang disesuaikan pengguna dibangun di cluster GKE Anda.
Menginstal dependensi Python ke lingkungan IP pribadi dengan pembatasan lokasi resource
Jika Anda menetapkan pembatasan lokasi resource untuk project, Cloud Build tidak dapat digunakan untuk menginstal paket Python. Akibatnya, akses langsung ke repositori di internet publik dinonaktifkan.
Untuk menginstal dependensi Python di lingkungan IP Pribadi saat pembatasan lokasi Anda tidak mengizinkan multi-region US
, gunakan salah satu opsi berikut:
Gunakan repositori PyPI pribadi yang dihosting di jaringan VPC Anda.
Gunakan server proxy di jaringan VPC Anda untuk terhubung ke repositori PyPI di internet publik. Tentukan alamat proxy dalam file
/config/pip/pip.conf
di bucket Cloud Storage.Jika kebijakan keamanan Anda mengizinkan akses ke jaringan VPC Anda dari alamat IP eksternal, Anda dapat mengonfigurasi Cloud NAT.
Simpan dependensi Python di folder
dags
pada bucket Cloud Storage untuk menginstalnya sebagai library lokal. Ini mungkin bukan opsi yang baik jika hierarki dependensinya besar.
Membatasi lokasi untuk log Cloud Composer
Jika log Cloud Composer berisi data sensitif, Anda dapat mengalihkan log Cloud Composer ke bucket Cloud Storage regional. Untuk melakukannya, gunakan sink log. Setelah Anda mengalihkan log ke bucket Cloud Storage, log Anda tidak akan dikirim ke Cloud Logging.
gcloud
Membuat bucket Cloud Storage baru.
gsutil mb -l LOCATION gs://BUCKET_NAME
Ganti:
LOCATION
dengan wilayah tempat lingkungan berada.BUCKET_NAME
dengan nama bucket. Misalnya,composer-logs-us-central1-example-environment
.
Buat sink log baru.
gcloud logging sinks create \ composer-log-sink-ENVIRONMENT_NAME \ storage.googleapis.com/BUCKET_NAME \ --log-filter "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.BUCKET_NAME
dengan nama bucket.LOCATION
dengan wilayah tempat lingkungan berada.
Output dari perintah sebelumnya berisi nomor akun layanan. Berikan peran Storage Object Creator untuk akun layanan ini:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \ --role='roles/storage.objectCreator' \ --condition=None
Ganti:
PROJECT_ID
dengan Project ID.SA_NUMBER
dengan nomor akun layanan yang diberikan oleh perintahgcloud logging sinks create
pada langkah sebelumnya.
Mengecualikan log untuk lingkungan Anda dari Monitoring.
gcloud logging sinks update _Default \ --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\ "resource.type=cloud_composer_environment AND \ resource.labels.environment_name=ENVIRONMENT_NAME AND \ resource.labels.location=LOCATION"
Ganti:
ENVIRONMENT_NAME
dengan nama lingkungan.LOCATION
dengan wilayah tempat lingkungan berada.