13.2.70.2. volumes
ボリュームを使用して ConfigMap またはシークレットを Kafka Connect Pod にマウントします。
以下の場合、環境変数の代わりにボリュームを使用すると便利です。
- Kafka Connect コネクターの設定に使用されるプロパティーファイルのマウント
- TLS 証明書でのトラストストアまたはキーストアのマウント
ボリュームは、パス /opt/kafka/external-configuration/<volume-name>
の Kafka Connect コンテナー内にマウントされます。たとえば、 connector-config
という名前のボリュームのファイルは /opt/kafka/external-configuration/connector-config
ディレクトリーにあります。
設定プロバイダーは設定外から値を読み込みます。プロバイダーメカニズムを使用して、制限された情報がKafka ConnectREST インターフェースを介して渡されないようにします。
-
FileConfigProvider
ファイルのプロパティーから設定値をロードします。 -
DirectoryConfigProvider
ディレクトリー構造内で個別のファイルから設定値をロードします。
複数のプロバイダー (カスタムプロバイダーを含む) を追加する場合は、コンマ区切りリストを使用します。カスタムプロバイダーを使用して、他のファイルの場所から値をロードできます。
FileConfigProvider
を使用したプロパティー値の読み込み
以下の例では、mysecret
という名前の Secret には、データベース名とパスワードを指定するコネクタープロパティーが含まれています。
データベースプロパティーのある Secret の例
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque stringData: connector.properties: |- 1 dbUsername: my-username 2 dbPassword: my-password
Secret および FileConfigProvider
設定プロバイダーは Kafka Connect 設定に指定されます。
-
Secret は
connector-config
という名前のボリュームにマウントされます。 -
FileConfigProvider
にはエイリアスファイル
が付与されます。
Secret からの値に設定された外部ボリュームの例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect spec: # ... config: config.providers: file 1 config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider 2 #... externalConfiguration: volumes: - name: connector-config 3 secret: secretName: mysecret 4
Secret のプロパティー値のプレースホルダーは、コネクター設定で参照されます。プレースホルダー構造は、configmaps:PATH-AND-FILE-NAME:PROPERTY
です。FileConfigProvider
は、コネクター設定でマウントされた Secret からデータベースの username および password プロパティーの値を読み取りおよび展開します。
外部値のプレースホルダーを示すコネクター設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: my-source-connector labels: strimzi.io/cluster: my-connect-cluster spec: class: io.debezium.connector.mysql.MySqlConnector tasksMax: 2 config: database.hostname: 192.168.99.1 database.port: "3306" database.user: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbUsername}" database.password: "${file:/opt/kafka/external-configuration/connector-config/mysecret:dbPassword}" database.server.id: "184054" #...
DirectoryConfigProvider
を使用した個別ファイルからのプロパティー値のロード
この例の Secret
には個別のファイルに TLS トラストストアとキーストアユーザーのクレデンシャルが含まれています。
ユーザークレデンシャルのある Secret の例
apiVersion: v1
kind: Secret
metadata:
name: mysecret
labels:
strimzi.io/kind: KafkaUser
strimzi.io/cluster: my-cluster
type: Opaque
data: 1
ca.crt: # Public key of the client CA
user.crt: # User certificate that contains the public key of the user
user.key: # Private key of the user
user.p12: # PKCS #12 archive file for storing certificates and keys
user.password: # Password for protecting the PKCS #12 archive file
Secret および DirectoryConfigProvider
設定プロバイダーは Kafka Connect 設定に指定されます。
-
Secret は
connector-config
という名前のボリュームにマウントされます。 -
DirectoryConfigProvider
には エイリアスのディレクトリー
が付与されます。
ユーザークレデンシャルファイルに設定された外部ボリュームの例
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
name: my-connect
spec:
# ...
config:
config.providers: directory
config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider 1
#...
externalConfiguration:
volumes:
- name: connector-config
secret:
secretName: mysecret
クレデンシャルのプレースホルダーはコネクター設定で参照されます。プレースホルダー構造は directory:PATH:FILE-NAME
です。DirectoryConfigProvider
は、コネクター設定でマウントされた Secret からクレデンシャルを読み取りおよび展開します。
外部値のプレースホルダーを示すコネクター設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnector metadata: name: my-source-connector labels: strimzi.io/cluster: my-connect-cluster spec: class: io.debezium.connector.mysql.MySqlConnector tasksMax: 2 config: security.protocol: SSL ssl.truststore.type: PEM ssl.truststore.location: "${directory:/opt/kafka/external-configuration/connector-config:ca.crt}" ssl.keystore.type: PEM ssl.keystore.location: ${directory:/opt/kafka/external-configuration/connector-config:user.key}" #...