Halaman ini menjelaskan cara melakukan staging file di VM pekerja Dataflow untuk menggunakan sertifikat SSL dengan template Java Database Connectivity (JDBC) yang disediakan Google. Anda juga dapat menggunakan langkah-langkah di halaman ini untuk melakukan staging file secara dinamis di VM pekerja sebelum pemrosesan dimulai.
Menyiapkan file di VM pekerja
Dengan beberapa template, Anda dapat melakukan staging file di VM pekerja Dataflow menggunakan parameter template extraFilesToStage
. Gunakan parameter ini untuk
menyusun file secara dinamis di VM pekerja sebelum pemrosesan data dimulai.
Anda dapat menggunakan parameter ini dalam kasus berikut:
- Menyimpan file sertifikat dan kunci di setiap pekerja 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 beberapa, tetapi tidak semua template. Untuk melihat 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
di setiap pekerja.
Saat file disimpan di direktori /extra_files
, parameter lain dapat
mereferensikannya. Untuk mereferensikan file, dalam properti konfigurasi, tentukan
jalur file yang relatif terhadap direktori /extra_files
.
Semua file Cloud Storage yang diteruskan menggunakan parameter ini disimpan di direktori /extra_files
dengan nama file yang sama.
Secret Secret Manager disimpan di direktori /extra_files
dengan
nama secret yang digunakan sebagai nama file.
Misalnya, saat Anda menetapkan extraFilesToStage
ke jalur berikut, file akan
disimpan di direktori /extra_files
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 melakukan staging sertifikat sebagai file lokal
di VM pekerja, lalu mereferensikan nama file lokal di URL koneksi JDBC
atau di properti koneksi.
Koneksi SSL JDBC berbeda-beda 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 di semua pekerja Java Dataflow.
PostgreSQL
Untuk koneksi SSL di database PostgreSQL, parameter berikut
tersedia: ssl
, sslmode
, sslcert
, sslkey
, dan sslrootcert
.
- Untuk menentukan bahwa koneksi harus menggunakan SSL dan mode yang akan 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 tersebut, lihat Parameter Koneksi dalam dokumentasi JDBC PostgreSQL.
MySQL
Untuk koneksi SSL di database MySQL, parameter berikut
tersedia: sslmode
, trustCertificateKeyStoreUrl
, dan
clientCertificateKeyStoreUrl
.
- Untuk menentukan bahwa koneksi harus menggunakan SSL dan mode yang akan digunakan, gunakan parameter
sslmode
. - Untuk validasi klien, gunakan parameter
clientCertificateKeyStoreUrl
. - Untuk validasi server, gunakan parameter
trustCertificateKeyStoreUrl
.
Saat Anda 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 tersebut, lihat halaman konektor keamanan di 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"