Halaman ini menjelaskan cara membuat Template Flex untuk pipeline Dataflow. Dengan Template Flex, Anda dapat memaketkan kode pipeline Apache Beam sehingga Anda dapat menjalankan pipeline tanpa memiliki lingkungan pengembangan. Dengan membuat Template Flex, siapa pun yang memiliki izin yang benar dapat menjalankan pipeline Anda sebagai tugas Dataflow.
Untuk tutorial end-to-end tentang cara membuat dan menjalankan Template Flex, lihat Membangun dan menjalankan contoh Template Flex.
Ringkasan
Template Fleksibel terdiri dari komponen berikut:
Image container yang disimpan di Artifact Registry. Container bertanggung jawab untuk meluncurkan tugas Dataflow.
File spesifikasi JSON yang disimpan di Cloud Storage. File ini berisi pointer ke image penampung dan metadata lainnya.
Sebelum membuat Template Flex, Anda harus menggunakan Apache Beam SDK untuk menulis kode pipeline. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Apache Beam untuk membangun pipeline.
Program yang membangun pipeline harus keluar setelah run dipanggil, agar pipeline dapat dimulai. Jangan panggil waitUntilFinish (Java) atau
wait_until_finish (Python), karena fungsi ini memblokir dan mencegah Flex
Template berjalan.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan guna membuat Template Fleksibel, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Storage Admin (
roles/storage.admin) -
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Penulis Artifact Registry (
roles/artifactregistry.writer)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Metadata template
Secara opsional, Anda dapat memberikan metadata tambahan untuk template, termasuk berikut ini:
Parameter pipeline: Deklarasikan opsi pipeline kustom yang digunakan pipeline Anda. Dataflow memvalidasi parameter saat Anda mengirimkan tugas Template Flex. Jika Anda menjalankan template menggunakan konsolGoogle Cloud , dialog Create job from template akan menyertakan parameter pipeline yang dideklarasikan dalam metadata.
Dukungan streaming: Anda dapat menentukan apakah pipeline mendukung streaming, dan jika ya, apakah pipeline mendukung mode tepat satu kali atau mode setidaknya satu kali. Metadata ini memungkinkan konsol Google Cloud menampilkan opsi pipeline yang relevan saat Anda menjalankan template.
Untuk menyertakan metadata tambahan, buat file JSON dengan parameter metadata.
Tentukan file ini dalam
flag --metadata-file
dari perintah gcloud dataflow flex-template build. Isi file metadata digabungkan ke dalam file spesifikasi template. Untuk mengetahui informasi selengkapnya, lihat Membangun Template Fleksibel.
Parameter metadata
| Kunci parameter | Wajib | Deskripsi nilai | |
|---|---|---|---|
name |
Ya | Nama template Anda. | |
description |
Tidak | Paragraf singkat teks yang menjelaskan template. | |
streaming |
Tidak | Jika true, template ini mendukung streaming. Nilai defaultnya adalah
false. |
|
supportsAtLeastOnce |
Tidak | Jika true, template ini mendukung pemrosesan setidaknya sekali. Nilai defaultnya adalah false. Tetapkan parameter ini ke true jika template dirancang
untuk berfungsi dengan mode streaming minimal sekali.
|
|
supportsExactlyOnce |
Tidak | Jika true, template ini mendukung
pemrosesan tepat satu kali. Nilai
defaultnya adalah true. |
|
defaultStreamingMode |
Tidak | Mode streaming default, untuk template yang mendukung mode setidaknya sekali dan
mode tepat sekali. Gunakan salah satu nilai berikut: "AT_LEAST_ONCE",
"EXACTLY_ONCE". Jika tidak ditentukan, mode streaming default adalah exactly-once.
|
|
parameters |
Tidak | Array parameter tambahan yang digunakan template. Array kosong digunakan secara default. | |
name |
Ya | Nama parameter yang digunakan dalam template Anda. | |
label |
Ya | String yang dapat dibaca manusia yang digunakan di konsol Google Cloud untuk memberi label pada parameter. | |
helpText |
Ya | Paragraf singkat teks yang menjelaskan parameter. | |
isOptional |
Tidak | false jika parameter wajib ada dan true jika parameter bersifat
opsional. Kecuali jika ditetapkan dengan nilai, isOptional secara default adalah false.
Jika Anda tidak menyertakan kunci parameter ini untuk metadata, metadata akan menjadi parameter
wajib. |
|
regexes |
Tidak | Array ekspresi reguler POSIX-egrep dalam bentuk string yang digunakan untuk memvalidasi
nilai parameter. Misalnya, ["^[a-zA-Z][a-zA-Z0-9]+"] adalah satu
ekspresi reguler yang memvalidasi bahwa nilai dimulai dengan huruf, lalu memiliki satu atau
beberapa karakter. Array kosong digunakan secara default. |
Contoh file metadata
Java
{ "name": "Streaming Beam SQL", "description": "An Apache Beam streaming pipeline that reads JSON encoded messages from Pub/Sub, uses Beam SQL to transform the message data, and writes the results to a BigQuery", "parameters": [ { "name": "inputSubscription", "label": "Pub/Sub input subscription.", "helpText": "Pub/Sub subscription to read from.", "regexes": [ "[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "outputTable", "label": "BigQuery output table", "helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.", "isOptional": true, "regexes": [ "[^:]+:[^.]+[.].+" ] } ] }
Python
{ "name": "Streaming beam Python flex template", "description": "Streaming beam example for python flex template.", "parameters": [ { "name": "input_subscription", "label": "Input PubSub subscription.", "helpText": "Name of the input PubSub subscription to consume from.", "regexes": [ "projects/[^/]+/subscriptions/[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "output_table", "label": "BigQuery output table name.", "helpText": "Name of the BigQuery output table name.", "isOptional": true, "regexes": [ "([^:]+:)?[^.]+[.].+" ] } ] }
Anda dapat mendownload file metadata untuk template yang disediakan Google dari Dataflow direktori template.
Variabel lingkungan
Saat Anda membuat template Flex, tentukan variabel lingkungan berikut di
flag --env
perintah gcloud dataflow flex-template build. Jika Anda menggunakan
image kustom, tetapkan variabel lingkungan ini di
Dockerfile Anda.
Java
| ENV | Deskripsi | Wajib |
|---|---|---|
FLEX_TEMPLATE_JAVA_MAIN_CLASS |
Menentukan class Java yang akan dijalankan untuk meluncurkan Template Flex. | YA |
FLEX_TEMPLATE_JAVA_CLASSPATH |
Menentukan lokasi file class. | YA |
FLEX_TEMPLATE_JAVA_OPTIONS |
Menentukan opsi Java yang akan diteruskan saat meluncurkan Template Flex. | TIDAK |
Tentukan FLEX_TEMPLATE_JAVA_MAIN_CLASS dan FLEX_TEMPLATE_JAVA_CLASSPATH
di Dockerfile Anda.
Python
| ENV | Deskripsi | Wajib |
|---|---|---|
FLEX_TEMPLATE_PYTHON_PY_FILE |
Menentukan file Python mana yang akan dijalankan untuk meluncurkan Template Flex. | YA |
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE |
Menentukan file persyaratan dengan dependensi pipeline. Untuk mengetahui informasi selengkapnya, lihat dependensi PyPI dalam dokumentasi Apache Beam. | TIDAK |
FLEX_TEMPLATE_PYTHON_SETUP_FILE |
Menentukan jalur ke file `setup.py` paket pipeline. Untuk mengetahui informasi selengkapnya, lihat Dependensi Beberapa File dalam dokumentasi Apache Beam. | TIDAK |
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES |
Menentukan paket yang tidak tersedia secara publik. Untuk mengetahui informasi tentang cara menggunakan paket tambahan, baca Dependensi Lokal atau non-PyPI. |
TIDAK |
FLEX_TEMPLATE_PYTHON_PY_OPTIONS |
Menentukan opsi Python yang akan diteruskan saat meluncurkan Template Flex. | TIDAK |
Tentukan FLEX_TEMPLATE_PYTHON_PY_FILE di Dockerfile Anda.
Untuk mengelola dependensi pipeline, tetapkan variabel di Dockerfile Anda, seperti berikut:
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEFLEX_TEMPLATE_PYTHON_PY_OPTIONSFLEX_TEMPLATE_PYTHON_SETUP_FILEFLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES
Misalnya, variabel lingkungan berikut ditetapkan dalam Streaming in Python Flex Template tutorial di GitHub:
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"
Go
| ENV | Deskripsi | Wajib |
|---|---|---|
FLEX_TEMPLATE_GO_BINARY |
Menentukan file biner Go yang akan dijalankan. | YA |
Tentukan FLEX_TEMPLATE_GO_BINARY di Dockerfile Anda.
Image Template Flex
Template Flex mencakup image container yang memulai pipeline Dataflow. Saat Anda menjalankan tugas Template Flex, layanan Dataflow akan mendownload image container dari Artifact Registry dan memulai container. Container bertanggung jawab untuk meluncurkan tugas Dataflow.
Google mengelola serangkaian image dasar Template Flex yang dapat Anda gunakan. Namun, jika pipeline Anda memerlukan image container kustom, sebaiknya gunakan image yang sama untuk Template Fleksibel. Dengan begitu, peluncur Flex Template berisi dependensi yang sama dengan container runtime pipeline.
Image container kustom
Untuk membuat image Template Flex kustom, sertakan langkah-langkah berikut dalam Dockerfile Anda:
Salin biner peluncur Template Flex dari salah satu image dasar yang disediakan Google ke image Anda. Biner peluncur berada di jalur berikut:
Java
/opt/google/dataflow/java_template_launcherPython
/opt/google/dataflow/python_template_launcherGo
/opt/google/dataflow/go_template_launcherSalin artefak yang diperlukan untuk meluncurkan tugas pipeline, seperti file Python, file JAR, atau biner Go.
Tetapkan variabel lingkungan yang tercantum di Variabel lingkungan.
Contoh berikut menunjukkan Dockerfile untuk pipeline Python:
# Flex Template base image. Used here to get the launcher binary.
FROM gcr.io/dataflow-templates-base/IMAGE_NAME:TAG as template_launcher
# Apache Beam SDK image. This is the base image for the pipeline job.
FROM apache/beam_python3.10_sdk:2.69.0
# Customize the image for your pipeline.
# [...]
# Configure the Flex Template.
COPY --from=template_launcher /opt/google/dataflow/python_template_launcher /opt/google/dataflow/python_template_launcher
COPY my_pipeline.py /template/
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/my_pipeline.py"
Ganti kode berikut:
IMAGE_NAME: image dasar yang disediakan Google. Contoh:python311-template-launcher-base.TAG: tag versi untuk image dasar yang tercantum dalam Image dasar Template Flex. Untuk stabilitas dan pemecahan masalah yang lebih baik, hindari penggunaanlatest. Sebagai gantinya, sematkan ke tag versi tertentu.
Untuk tutorial yang mengikuti pendekatan ini, lihat Template Fleksibel untuk pipeline dengan dependensi dan image container kustom.
Membangun Template Flex
Untuk membuat Template Fleksibel, gunakan perintah
gcloud dataflow flex-template build. Perintah ini akan membuat artefak berikut:
- File spesifikasi template, yang disimpan di Cloud Storage
- Image container peluncur, disimpan di Artifact Registry
Menggunakan image dasar yang disediakan Google
Untuk menjalankan Template Fleksibel menggunakan image dasar yang disediakan Google, jalankan perintah berikut:
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "JAVA" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --jar "JAR_FILE" \ --env "FLEX_TEMPLATE_JAVA_MAIN_CLASS=JAVA_MAIN_CLASS"
Ganti kode berikut:
-
BUCKET_NAME: nama bucket Cloud Storage untuk menyimpan file spesifikasi template -
TEMPLATE_FILE_NAME: nama file spesifikasi template yang akan dibuat. Contoh:my_template.json -
LOCATION: lokasi repositori Artifact Registry Anda -
PROJECT_ID: Google Cloud project ID -
REPOSITORY: nama repositori Artifact Registry Anda -
IMAGE: nama image container Flex Template -
TAG: tag untuk image container Flex Template -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "JAVA17". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "JAVA17". For more information, see the documentation
for the
-
METADATA_FILE: jalur lokal ke file metafile. Untuk mengetahui informasi selengkapnya, lihat Metadata template. -
JAR_FILE: jalur lokal ke file JAR untuk kode pipeline Anda. Jika ada beberapa file JAR, format file tersebut sebagai daftar yang dipisahkan koma atau tentukan di flag--jarterpisah. -
JAVA_MAIN_CLASS: nama class Java yang akan dijalankan. Untuk mengetahui informasi selengkapnya, lihat Variabel lingkungan.
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "PYTHON" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --py-path "PYTHON_FILE_PATH" \ --env "FLEX_TEMPLATE_PYTHON_PY_FILE=PYTHON_FILE"
Ganti kode berikut:
-
BUCKET_NAME: nama bucket Cloud Storage untuk menyimpan file spesifikasi template -
TEMPLATE_FILE_NAME: nama file spesifikasi template yang akan dibuat. Contoh:my_template.json -
LOCATION: lokasi repositori Artifact Registry Anda -
PROJECT_ID: Google Cloud project ID -
REPOSITORY: nama repositori Artifact Registry Anda -
IMAGE: nama image container Flex Template -
TAG: tag untuk image container Flex Template -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "PYTHON3". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "PYTHON3". For more information, see the documentation
for the
-
METADATA_FILE: jalur lokal ke file metafile. Untuk mengetahui informasi selengkapnya, lihat Metadata template. -
PYTHON_FILE_PATH: jalur lokal ke file Python untuk pipeline Anda, dan semua file dependennya. Anda dapat menentukan beberapa jalur sebagai daftar yang dipisahkan koma atau sebagai flag--py-pathterpisah. -
PYTHON_FILE: file Python yang akan dijalankan. Untuk mengetahui informasi selengkapnya, lihat Variabel lingkungan.
Go
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "GO" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --go-binary-path="GO_FILE_PATH" \ --env "FLEX_TEMPLATE_GO_BINARY=GO_BINARY"
Ganti kode berikut:
-
BUCKET_NAME: nama bucket Cloud Storage untuk menyimpan file spesifikasi template -
TEMPLATE_FILE_NAME: nama file spesifikasi template yang akan dibuat. Contoh:my_template.json -
LOCATION: lokasi repositori Artifact Registry Anda -
PROJECT_ID: Google Cloud project ID -
REPOSITORY: nama repositori Artifact Registry Anda -
IMAGE: nama image container Flex Template -
TAG: tag untuk image container Flex Template -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "GO". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "GO". For more information, see the documentation
for the
-
METADATA_FILE: jalur lokal ke file metafile. Untuk mengetahui informasi selengkapnya, lihat Metadata template. -
GO_FILE_PATH: jalur lokal ke biner Go yang dikompilasi untuk pipeline -
GO_BINARY: biner Go yang akan dijalankan. Untuk mengetahui informasi selengkapnya, lihat Variabel lingkungan.
Menggunakan gambar kustom
Untuk menjalankan Template Fleksibel menggunakan image container kustom, jalankan perintah berikut:
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "JAVA" \
--metadata-file "METADATA_FILE"
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "PYTHON" \
--metadata-file "METADATA_FILE"
Go
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "GO" \
--metadata-file "METADATA_FILE"
Ganti kode berikut:
BUCKET_NAME: nama bucket Cloud Storage untuk menyimpan file spesifikasi template.TEMPLATE_FILE_NAME: nama file spesifikasi template. Contoh:my_template.json.CUSTOM_IMAGE: lokasi registry image dari image kustom.METADATA_FILE: jalur lokal ke file metafile.
Dependensi paket untuk Python
Saat pipeline Python Dataflow menggunakan dependensi tambahan, Anda mungkin perlu mengonfigurasi Template Fleksibel untuk menginstal dependensi tambahan di VM worker Dataflow.
Saat menjalankan tugas Dataflow Python yang menggunakan Template Flex di lingkungan yang membatasi akses ke internet, Anda harus memaketkan terlebih dahulu dependensi saat membuat template.
Gunakan salah satu opsi berikut untuk mengemas terlebih dahulu dependensi Python.
- Gunakan file persyaratan dan kemas dependensi sebelumnya dengan template.
- Strukturkan pipeline sebagai paket dan gunakan paket lokal.
- Gunakan container kustom yang menginstal semua dependensi terlebih dahulu.
Untuk mengetahui petunjuk tentang cara mengelola dependensi pipeline di pipeline Java dan Go, lihat Mengelola dependensi pipeline di Dataflow.
Gunakan file persyaratan dan kemas sebelumnya dependensi dengan template
Jika Anda menggunakan Dockerfile sendiri untuk menentukan image Template Flex, ikuti langkah-langkah berikut:
Buat file
requirements.txtyang mencantumkan dependensi pipeline Anda.COPY requirements.txt /template/ ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/template/requirements.txt"Instal dependensi di image Template Flex.
RUN pip install --no-cache-dir -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEDownload dependensi ke cache persyaratan lokal, yang di-stage ke pekerja Dataflow saat template diluncurkan.
RUN pip download --no-cache-dir --dest /tmp/dataflow-requirements-cache -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
Saat Anda menggunakan pendekatan ini, dependensi dari file requirements.txt akan diinstal pada pekerja Dataflow saat runtime. Insight di tab rekomendasi Google Cloud konsol
mungkin mencatat perilaku ini. Untuk menghindari penginstalan
dependensi saat runtime, gunakan
image container kustom.
Berikut adalah contoh kode yang menggunakan file persyaratan di Flex Template.
Menyusun pipeline sebagai paket dan menggunakan paket lokal
Saat Anda menggunakan beberapa file atau modul lokal Python, susun pipeline Anda sebagai paket. Struktur file mungkin terlihat seperti contoh berikut:
main.py
pyproject.toml
setup.py
src/
my_package/
__init__.py
my_custom_dofns_and_transforms.py
my_pipeline_launcher.py
other_utils_and_helpers.py
Tempatkan titik entri tingkat atas, misalnya, file
main.py, di direktori root. Tempatkan file lainnya di folder terpisah di direktorisrc, misalnya,my_package.Tambahkan file konfigurasi paket ke direktori root dengan detail dan persyaratan paket.
pyproject.toml
[project] name = "my_package" version = "package_version" dependencies = [ # Add list of packages (and versions) that my_package depends on. # Example: "apache-beam[gcp]==2.54.0", ]setup.py
"""An optional setuptools configuration stub for the pipeline package. Use pyproject.toml to define the package. Add this file only if you must use the --setup_file pipeline option or the FLEX_TEMPLATE_PYTHON_SETUP_FILE configuration option. """ import setuptools setuptools.setup()Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi paket lokal, lihat Mengemas Project Python.
Saat Anda mengimpor modul atau file lokal untuk pipeline, gunakan nama paket
my_packagesebagai jalur impor.from my_package import word_count_transformInstal paket pipeline Anda di image Template Flex. Dockerfile Template Flex Anda mungkin menyertakan konten yang mirip dengan contoh berikut:
Dockerfile
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/main.py" ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE="${WORKDIR}/setup.py" # Copy pipeline, packages and requirements. WORKDIR ${WORKDIR} COPY main.py . COPY pyproject.toml . COPY setup.py . COPY src src # Install local package. RUN pip install -e .
Saat Anda menggunakan pendekatan ini, dependensi dari file requirements.txt akan diinstal pada pekerja Dataflow saat runtime. Insight di tab rekomendasi konsol mungkin mencatat perilaku ini. Google Cloud Untuk menghindari penginstalan dependensi saat runtime,
gunakan image container kustom.
Untuk contoh yang mengikuti pendekatan yang direkomendasikan, lihat tutorial Template Fleksibel untuk pipeline dengan dependensi dan image container kustom di GitHub.
Menggunakan container kustom yang menginstal semua dependensi terlebih dahulu
Untuk menghindari penginstalan dependensi saat runtime, gunakan container kustom. Opsi ini lebih disukai untuk pipeline yang berjalan di lingkungan tanpa akses internet.
Ikuti langkah-langkah berikut untuk menggunakan container kustom:
Buat image container kustom yang menginstal terlebih dahulu dependensi yang diperlukan.
Lakukan pra-penginstalan dependensi yang sama di Dockerfile Template Flex.
Untuk mencegah penginstalan dependensi saat runtime, jangan gunakan opsi
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEatauFLEX_TEMPLATE_PYTHON_SETUP_FILEdalam konfigurasi Template Flex Anda.Template Flex yang diubah
Dockerfilemungkin terlihat seperti contoh berikut:FROM gcr.io/dataflow-templates-base/python3-template-launcher-base ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/main.py" COPY . /template # If you use a requirements file, pre-install the requirements.txt. RUN pip install --no-cache-dir -r /template/requirements.txt # If you supply the pipeline in a package, pre-install the local package and its dependencies. RUN pip install -e /templateSaat menggunakan pendekatan ini, Anda melakukan hal berikut:
- membangun image Template Flex
- membangun image container SDK kustom
- menginstal dependensi yang sama di kedua gambar
Atau, untuk mengurangi jumlah image yang perlu dikelola, gunakan image container kustom Anda sebagai image dasar untuk Template Flex.
Jika Anda menggunakan Apache Beam SDK versi 2.49.0 atau yang lebih lama, tambahkan opsi pipeline
--sdk_location=containerdi peluncur pipeline Anda. Opsi ini memberi tahu pipeline Anda untuk menggunakan SDK dari container kustom, bukan mendownload SDK.options = PipelineOptions(beam_args, save_main_session=True, streaming=True, sdk_location="container")Tetapkan parameter
sdk_container_imagedalam perintahflex-template run. Contoh:gcloud dataflow flex-template run $JOB_NAME \ --region=$REGION \ --template-file-gcs-location=$TEMPLATE_PATH \ --parameters=sdk_container_image=$CUSTOM_CONTAINER_IMAGE \ --additional-experiments=use_runner_v2Untuk mengetahui informasi selengkapnya, lihat Menggunakan container kustom di Dataflow.
Menggunakan registry Docker pribadi dengan Template Flex
Anda dapat membuat image Template Fleksibel yang disimpan di registri Docker pribadi, jika registri pribadi menggunakan HTTPS dan memiliki sertifikat yang valid.
Untuk menggunakan image dari registry pribadi, tentukan jalur ke image serta nama pengguna dan sandi untuk registry. Nama pengguna dan sandi harus disimpan di Secret Manager. Anda dapat memberikan secret dalam salah satu format berikut:
projects/{project}/secrets/{secret}/versions/{secret_version}projects/{project}/secrets/{secret}
Jika Anda menggunakan format kedua, karena tidak menentukan versi, Dataflow akan menggunakan versi terbaru.
Jika menggunakan sertifikat yang ditandatangani sendiri, Anda juga perlu menentukan jalur ke sertifikat yang ditandatangani sendiri di Cloud Storage.
Tabel berikut menjelaskan opsi gcloud CLI yang dapat Anda gunakan untuk mengonfigurasi registry pribadi.
| Parameter | Deskripsi |
|---|---|
image
|
Alamat kantor pendaftaran. Contoh:
gcp.repository.example.com:9082/registry/example/image:latest.
|
image-repository-username-secret-id
|
ID secret Secret Manager untuk nama pengguna yang akan diautentikasi
ke registry pribadi. Contoh:
projects/example-project/secrets/username-secret.
|
image-repository-password-secret-id
|
ID rahasia Secret Manager untuk sandi yang akan diautentikasi
ke registry pribadi. Contoh:
projects/example-project/secrets/password-secret/versions/latest.
|
image-repository-cert-path
|
URL Cloud Storage lengkap untuk sertifikat yang ditandatangani sendiri untuk
registry pribadi. Nilai ini hanya diperlukan jika registry menggunakan sertifikat yang ditandatangani sendiri. Contoh:
gs://example-bucket/self-signed.crt.
|
Berikut adalah contoh perintah Google Cloud CLI yang membangun Template Fleksibel menggunakan image di registry pribadi dengan sertifikat yang ditandatangani sendiri.
gcloud dataflow flex-template build gs://example-bucket/custom-pipeline-private-repo.json --sdk-language=JAVA --image="gcp.repository.example.com:9082/registry/example/image:latest" --image-repository-username-secret-id="projects/example-project/secrets/username-secret" --image-repository-password-secret-id="projects/example-project/secrets/password-secret/versions/latest" --image-repository-cert-path="gs://example-bucket/self-signed.crt" --metadata-file=metadata.json
Untuk membuat Template Flex Anda sendiri, Anda perlu mengganti nilai contoh, dan Anda mungkin perlu menentukan opsi yang berbeda atau tambahan.
Langkah berikutnya
- Pelajari cara menjalankan Template Fleksibel.
- Buat dan jalankan contoh Template Flex.
- Untuk mengetahui lebih lanjut Template Klasik, Template Flex, dan skenario kasus penggunaannya, lihat Template Dataflow.
- Untuk mengetahui informasi pemecahan masalah Template Flex, lihat Memecahkan masalah waktu tunggu habis Template Flex.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.