Halaman ini menjelaskan cara melakukan stage file pada VM pekerja Dataflow untuk menggunakan sertifikat SSL dengan template Java Database Connectivity (JDBC) yang disediakan oleh Google. Anda juga dapat menggunakan langkah-langkah di halaman ini untuk membuat file secara dinamis di VM pekerja sebelum pemrosesan dimulai.
Membuat Stage file pada VM pekerja
Dengan beberapa template, Anda dapat menempatkan file di VM pekerja Dataflow menggunakan parameter template extraFilesToStage
. Gunakan parameter ini untuk melakukan stage file secara dinamis di VM pekerja sebelum pemrosesan data dimulai.
Anda dapat menggunakan parameter ini dalam kasus berikut:
- Menyimpan file kunci dan sertifikat pada setiap worker untuk koneksi SSL.
- Karena Dataflow tidak menyertakan dukungan bawaan untuk Secret Manager, gunakan parameter ini untuk mengonfigurasi template guna menyimpan dan mengakses secret Secret Manager.
Parameter ini tersedia di sebagian, tetapi tidak semua template. Untuk mengetahui apakah parameter tersedia dengan template yang Anda gunakan, lihat tabel parameter template untuk template Anda di template streaming Dataflow yang disediakan Google atau template batch Dataflow yang disediakan Google.
Saat Anda menggunakan parameter ini, jalur Cloud Storage yang dipisahkan koma atau secret Secret Manager akan diteruskan ke pekerja dan disimpan di direktori /extra_files
pada setiap pekerja.
Jika file disimpan di direktori /extra_files
, parameter lain dapat
mereferensikannya. Untuk mereferensikan file, di properti konfigurasi, tentukan
jalur file yang relatif ke direktori /extra_files
.
Semua file Cloud Storage yang diteruskan menggunakan parameter ini disimpan di direktori /extra_files
dengan nama file yang sama.
Secret Manager disimpan di direktori /extra_files
dengan
nama secret yang digunakan sebagai nama file.
Misalnya, jika Anda menetapkan extraFilesToStage
ke jalur berikut, file akan
disimpan di direktori /extra_files
dari setiap pekerja dengan nama file
file.txt
dan SECRET_ID.
gs://BUCKET_NAME/file.txt,projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID
Mengonfigurasi sertifikat SSL
Dengan template yang menggunakan JDBC untuk membaca atau menulis, Anda dapat menggunakan parameter template extraFilesToStage
untuk membuat sertifikat sebagai file lokal di VM pekerja, lalu mereferensikan nama file lokal di URL koneksi JDBC atau di properti koneksi.
Koneksi SSL JDBC berbeda berdasarkan database. Bagian ini memberikan contoh untuk database PostgreSQL dan MySQL.
Jika Anda perlu menetapkan properti sistem Java, gunakan
JvmInitializer
.
Anda dapat menggunakan JvmInitializer
untuk melakukan inisialisasi satu kali pada semua pekerja Java Dataflow.
PostgreSQL
Untuk koneksi SSL dalam database PostgreSQL, parameter berikut tersedia: ssl
, sslmode
, sslcert
, sslkey
, dan sslrootcert
.
- Untuk menentukan bahwa koneksi harus menggunakan SSL dan mode yang digunakan, gunakan parameter
ssl
dansslmode
. - Untuk validasi klien, gunakan parameter
sslcert
dansslkey
. - Untuk validasi server, gunakan parameter
sslrootcert
.
Saat Anda terhubung ke PostgreSQL, tetapkan parameter berikut:
extraFilesToStage=gs://BUCKET_NAME/root_cert.crt,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/key.key
connectionUrl=jdbc:postgresql://HOST/DATABASE?ssl=true&sslrootcert=/extra_files/root_cert.crt&sslcert=/extra_files/cert.crt&sslkey=/extra_files/key.key&OTHER_PARAMETERS...
Untuk parameter konfigurasi JDBC PostgreSQL tambahan dan detail selengkapnya tentang parameter, lihat Parameter Koneksi dalam dokumentasi PostgreSQL JDBC.
MySQL
Untuk koneksi SSL di database MySQL, parameter berikut tersedia: sslmode
, trustCertificateKeyStoreUrl
, dan clientCertificateKeyStoreUrl
.
- Untuk menentukan apakah koneksi harus menggunakan SSL dan mode yang digunakan, gunakan
parameter
sslmode
. - Untuk validasi klien, gunakan parameter
clientCertificateKeyStoreUrl
. - Untuk validasi server, gunakan parameter
trustCertificateKeyStoreUrl
.
Saat terhubung ke MySQL, tetapkan parameter berikut:
extraFilesToStage=gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks
connectionUrl=jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks&OTHER_PARAMETERS...
Untuk parameter konfigurasi JDBC MySQL tambahan dan detail selengkapnya tentang parameter, lihat halaman konektor keamanan dalam dokumentasi MySQL.
Contoh koneksi SSL
Contoh berikut menunjukkan cara menjalankan template Pub/Sub ke JDBC dengan koneksi SSL di database MySQL.
#!/bin/bash
gcloud config set project PROJECT_ID
echo "Running template ..."
gcloud dataflow flex-template run my-job \
--template-file-gcs-location="gs://dataflow-templates-REGION_NAME/latest/flex/Pubsub_to_Jdbc" \
--region="REGION" \
--parameters= \
driverClassName="com.mysql.jdbc.Driver",\
connectionUrl="jdbc:mysql://HOST/DATABASE?sslmode=REQUIRED&trustCertificateKeyStoreUrl=file:/extra_files/truststore.jks&sslcert=file:/extra_files/keystore.jks",\
driverJars="gs://BUCKET_NAME/mysql.jar",\
statement="INSERT INTO tableName (column1, column2) VALUES (?,?)",\
inputSubscription="projects/PROJECT_ID/subscriptions/subscription",\
outputDeadletterTopic="projects/PROJECT_ID/topics/topic",\
extraFilesToStage="gs://BUCKET_NAME/truststore.jks,gs://BUCKET_NAME/cert.crt,gs://BUCKET_NAME/keystore.jks"