9.16. 외부 소스에서 구성 값 로드


구성 공급자를 사용하여 외부 소스에서 구성 데이터를 로드합니다. 공급자는 AMQ Streams와 독립적으로 작동합니다. 생산자 및 소비자를 포함하여 모든 Kafka 구성 요소에 대한 구성 데이터를 로드하는 데 사용할 수 있습니다. 구성 요소 구성에서 외부 소스를 참조하고 액세스 권한을 제공합니다. 공급자는 새 외부 소스를 참조하는 경우에도 Kafka 구성 요소를 다시 시작하거나 파일을 추출하지 않고도 데이터를 로드합니다. 예를 들어 provider를 사용하여 Kafka Connect 커넥터 구성의 인증 정보를 제공합니다. 구성에는 외부 소스에 대한 모든 액세스 권한이 포함되어야 합니다.

9.16.1. 구성 공급자 활성화

구성 요소의 사양 구성에서 config.providers 속성을 사용하여 하나 이상의 구성 공급자를 활성화할 수 있습니다.

구성 공급자를 활성화하는 구성 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnect
metadata:
  name: my-connect
  annotations:
    strimzi.io/use-connector-resources: "true"
spec:
  # ...
  config:
    # ...
    config.providers: env
    config.providers.env.class: org.apache.kafka.common.config.provider.EnvVarConfigProvider
  # ...
Copy to Clipboard Toggle word wrap

KubernetesSecretConfigProvider
OpenShift 시크릿에서 구성 데이터를 로드합니다. 구성 데이터가 저장된 시크릿 내 키와 시크릿의 이름을 지정합니다. 이 공급자는 암호 또는 기타 사용자 자격 증명과 같은 중요한 구성 데이터를 저장하는 데 유용합니다.
KubernetesConfigMapConfigProvider
OpenShift 구성 맵에서 구성 데이터를 로드합니다. 구성 맵의 이름과 구성 데이터가 저장된 구성 맵 내의 키를 지정합니다. 이 공급자는 중요하지 않은 구성 데이터를 저장하는 데 유용합니다.
EnvVarConfigProvider
환경 변수에서 구성 데이터를 로드합니다. 구성 데이터가 저장된 환경 변수의 이름을 지정합니다. 이 공급자는 예를 들어 시크릿에서 매핑된 환경 변수에서 인증서 또는 JAAS 구성을 로드하기 위해 컨테이너에서 실행 중인 애플리케이션을 구성하는 데 유용합니다.
FileConfigProvider
파일에서 구성 데이터를 로드합니다. 구성 데이터가 저장되는 파일의 경로를 지정합니다. 이 공급자는 컨테이너에 마운트된 파일에서 구성 데이터를 로드하는 데 유용합니다.
DirectoryConfigProvider
디렉터리 내의 파일에서 구성 데이터를 로드합니다. 구성 파일이 저장되는 디렉터리의 경로를 지정합니다. 이 공급자는 여러 구성 파일을 로드하고 구성 데이터를 별도의 파일로 구성하는 데 유용합니다.

OpenShift 구성 공급자 플러그인의 일부인 KubernetesSecretConfigProviderKubernetesConfigMapConfigProvider 를 사용하려면 구성 파일이 포함된 네임스페이스에 대한 액세스 권한을 설정해야 합니다.

액세스 권한을 설정하지 않고 다른 공급자를 사용할 수 있습니다. 다음을 수행하여 Kafka Connect 또는 MirrorMaker 2에 대한 커넥터 구성을 이러한 방식으로 제공할 수 있습니다.

  • Kafka Connect Pod에 환경 변수 또는 볼륨으로 구성 맵 또는 시크릿 마운트
  • Kafka Connect 또는 MirrorMaker 2 구성에서 EnvVarConfigProvider,FileConfigProvider 또는 DirectoryConfigProvider 활성화
  • KafkaConnect 또는 KafkaMirrorMaker2 리소스의 사양에 externalConfiguration 속성을 사용하여 커넥터 구성 전달

공급자를 사용하면 Kafka Connect REST 인터페이스를 통해 제한된 정보가 전달되는 것을 방지할 수 있습니다. 다음 시나리오에서는 이 방법을 사용할 수 있습니다.

  • 커넥터가 데이터 소스에 연결하고 통신하는 데 사용하는 값으로 환경 변수 마운트
  • Kafka Connect 커넥터를 구성하는 데 사용되는 값으로 속성 파일 마운트
  • 커넥터에서 사용하는 TLS 신뢰 저장소 및 키 저장소 값이 포함된 디렉터리에 파일 마운트
참고

커넥터에 새 Secret 또는 ConfigMap 을 사용할 때 다시 시작해야 하므로 다른 커넥터가 중단될 수 있습니다.

9.16.2. 보안 또는 구성 맵에서 구성 값 로드

KubernetesSecretConfigProvider 를 사용하여 시크릿 또는 KubernetesConfigMapConfigProvider 에서 구성 속성을 제공하여 구성 맵에서 구성 속성을 제공합니다.

이 절차에서 구성 맵은 커넥터에 대한 구성 속성을 제공합니다. 속성은 구성 맵의 키 값으로 지정됩니다. 구성 맵은 Kafka Connect Pod에 볼륨으로 마운트됩니다.

사전 요구 사항

  • Kafka 클러스터가 실행 중입니다.
  • Cluster Operator가 실행 중입니다.
  • 커넥터 구성이 포함된 구성 맵이 있습니다.

커넥터 속성이 있는 구성 맵의 예

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-connector-configuration
data:
  option1: value1
  option2: value2
Copy to Clipboard Toggle word wrap

프로세스

  1. KafkaConnect 리소스를 구성합니다.

    • KubernetesConfigMapConfigProvider활성화

    여기에 표시된 사양은 구성 맵 및 시크릿의 값 로드를 지원할 수 있습니다.

    구성 맵과 시크릿을 사용하는 Kafka Connect 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: my-connect
      annotations:
        strimzi.io/use-connector-resources: "true"
    spec:
      # ...
      config:
        # ...
        config.providers: secrets,configmaps 
    1
    
        config.providers.configmaps.class: io.strimzi.kafka.KubernetesConfigMapConfigProvider 
    2
    
        config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider 
    3
    
      # ...
    Copy to Clipboard Toggle word wrap

    1
    구성 공급자의 별칭은 다른 구성 매개 변수를 정의하는 데 사용됩니다. 공급자 매개변수는 config.providers. ${alias}.class 형식의 별칭 을 사용합니다.
    2
    KubernetesConfigMapConfigProvider 는 구성 맵의 값을 제공합니다.
    3
    KubernetesSecretConfigProvider 는 보안의 값을 제공합니다.
  2. 공급자를 활성화하도록 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_connect_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. 외부 구성 맵의 값에 대한 액세스를 허용하는 역할을 생성합니다.

    구성 맵에서 값에 액세스하는 역할의 예

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: connector-configuration-role
    rules:
    - apiGroups: [""]
      resources: ["configmaps"]
      resourceNames: ["my-connector-configuration"]
      verbs: ["get"]
    # ...
    Copy to Clipboard Toggle word wrap

    규칙은 my-connector-configuration 구성 맵에 액세스할 수 있는 역할 권한을 제공합니다.

  4. 구성 맵이 포함된 네임스페이스에 대한 액세스를 허용하는 역할 바인딩을 생성합니다.

    구성 맵이 포함된 네임스페이스에 액세스하기 위한 역할 바인딩의 예

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: connector-configuration-role-binding
    subjects:
    - kind: ServiceAccount
      name: my-connect-connect
      namespace: my-project
    roleRef:
      kind: Role
      name: connector-configuration-role
      apiGroup: rbac.authorization.k8s.io
    # ...
    Copy to Clipboard Toggle word wrap

    역할 바인딩은 my-project 네임스페이스에 액세스할 수 있는 역할 권한을 제공합니다.

    서비스 계정은 Kafka Connect 배포에서 사용하는 것과 동일해야 합니다. 서비스 계정 이름 형식은 < cluster_name>-connect 입니다. 여기서 < cluster_name >은 KafkaConnect 사용자 정의 리소스의 이름입니다.

  5. 커넥터 구성의 구성 맵을 참조합니다.

    구성 맵을 참조하는 커넥터 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnector
    metadata:
      name: my-connector
      labels:
        strimzi.io/cluster: my-connect
    spec:
      # ...
      config:
        option: ${configmaps:my-project/my-connector-configuration:option1}
        # ...
    # ...
    Copy to Clipboard Toggle word wrap

    자리 표시자 구조는 configmaps:<path_and_file_name>:<property> 입니다. KubernetesConfigMapConfigProvider 는 외부 구성 맵에서 option1 속성 값을 읽고 추출합니다.

9.16.3. 환경 변수에서 구성 값 로드

EnvVarConfigProvider 를 사용하여 구성 속성을 환경 변수로 제공합니다. 환경 변수는 구성 맵 또는 시크릿의 값을 포함할 수 있습니다.

이 절차에서 환경 변수는 커넥터가 Amazon AWS와 통신할 수 있도록 구성 속성을 제공합니다. 커넥터는 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 를 읽을 수 있어야 합니다. 환경 변수의 값은 Kafka Connect Pod에 마운트된 보안에서 파생됩니다.

참고

사용자 정의 환경 변수의 이름은 KAFKA_ 또는 STRIMZI_ 로 시작할 수 없습니다.

사전 요구 사항

  • Kafka 클러스터가 실행 중입니다.
  • Cluster Operator가 실행 중입니다.
  • 커넥터 구성이 포함된 시크릿이 있습니다.

환경 변수 값이 있는 시크릿의 예

apiVersion: v1
kind: Secret
metadata:
  name: aws-creds
type: Opaque
data:
  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
Copy to Clipboard Toggle word wrap

프로세스

  1. KafkaConnect 리소스를 구성합니다.

    • EnvVarConfigProvider활성화
    • externalConfiguration 속성을 사용하여 환경 변수를 지정합니다.

    외부 환경 변수를 사용하는 Kafka Connect 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: my-connect
      annotations:
        strimzi.io/use-connector-resources: "true"
    spec:
      # ...
      config:
        # ...
        config.providers: env 
    1
    
        config.providers.env.class: org.apache.kafka.common.config.provider.EnvVarConfigProvider 
    2
    
      # ...
      externalConfiguration:
        env:
          - name: AWS_ACCESS_KEY_ID 
    3
    
            valueFrom:
              secretKeyRef:
                name: aws-creds 
    4
    
                key: awsAccessKey 
    5
    
          - name: AWS_SECRET_ACCESS_KEY
            valueFrom:
              secretKeyRef:
                name: aws-creds
                key: awsSecretAccessKey
      # ...
    Copy to Clipboard Toggle word wrap

    1
    구성 공급자의 별칭은 다른 구성 매개 변수를 정의하는 데 사용됩니다. 공급자 매개변수는 config.providers. ${alias}.class 형식의 별칭 을 사용합니다.
    2
    EnvVarConfigProvider 는 환경 변수에서 값을 제공합니다.
    3
    환경 변수는 시크릿에서 값을 사용합니다.
    4
    환경 변수가 포함된 시크릿의 이름입니다.
    5
    시크릿에 저장된 키의 이름입니다.
    참고

    secretKeyRef 속성은 시크릿의 키를 참조합니다. 보안 대신 구성 맵을 사용하는 경우 configMapKeyRef 속성을 사용합니다.

  2. 공급자를 활성화하도록 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_connect_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. 커넥터 구성의 환경 변수를 참조합니다.

    환경 변수를 참조하는 커넥터 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnector
    metadata:
      name: my-connector
      labels:
        strimzi.io/cluster: my-connect
    spec:
      # ...
      config:
        option: ${env:AWS_ACCESS_KEY_ID}
        option: ${env:AWS_SECRET_ACCESS_KEY}
        # ...
    # ...
    Copy to Clipboard Toggle word wrap

    자리 표시자 구조는 env:<environment_variable_name>입니다. EnvVarConfigProvider 는 마운트된 보안에서 환경 변수 값을 읽고 추출합니다.

9.16.4. 디렉터리 내에서 파일에서 구성 값 로드

FileConfigProvider 를 사용하여 디렉터리 내의 파일에서 구성 속성을 제공합니다. 파일은 구성 맵 또는 시크릿일 수 있습니다.

이 절차에서 파일은 커넥터에 대한 구성 속성을 제공합니다. 데이터베이스 이름과 암호는 시크릿의 속성으로 지정됩니다. 시크릿은 Kafka Connect Pod에 볼륨으로 마운트됩니다. 볼륨은 경로 /opt/kafka/external-configuration/<volume-name> 에 마운트됩니다.

사전 요구 사항

  • Kafka 클러스터가 실행 중입니다.
  • Cluster Operator가 실행 중입니다.
  • 커넥터 구성이 포함된 시크릿이 있습니다.

데이터베이스 속성이 있는 시크릿 예

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
stringData:
  connector.properties: |- 
1

    dbUsername: my-username 
2

    dbPassword: my-password
Copy to Clipboard Toggle word wrap

1
속성 파일 형식의 커넥터 구성입니다.
2
구성에 사용되는 데이터베이스 사용자 이름 및 암호 속성입니다.

프로세스

  1. KafkaConnect 리소스를 구성합니다.

    • FileConfigProvider활성화
    • externalConfiguration 속성을 사용하여 파일을 지정합니다.

    외부 속성 파일을 사용하는 Kafka Connect 구성의 예

    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
    Copy to Clipboard Toggle word wrap

    1
    구성 공급자의 별칭은 다른 구성 매개 변수를 정의하는 데 사용됩니다.
    2
    FileConfigProvider 는 속성 파일에서 값을 제공합니다. 매개 변수는 config.providers. ${alias}.class 형식의 별칭 을 사용합니다.
    3
    보안이 포함된 볼륨의 이름입니다.
    4
    시크릿의 이름입니다.
  2. 공급자를 활성화하도록 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_connect_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. 커넥터 구성의 파일 속성을 자리 표시자로 참조합니다.

    파일을 참조하는 커넥터 구성의 예

    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"
        #...
    Copy to Clipboard Toggle word wrap

    자리 표시자 구조는 file:<path_and_file_name>:<property> 입니다. FileConfigProvider 는 마운트된 보안에서 데이터베이스 사용자 이름 및 암호 속성 값을 읽고 추출합니다.

9.16.5. 디렉터리 내에서 여러 파일에서 구성 값 로드

DirectoryConfigProvider 를 사용하여 디렉터리 내의 여러 파일에서 구성 속성을 제공합니다. 파일은 구성 맵 또는 시크릿일 수 있습니다.

이 절차에서 시크릿은 커넥터에 대한 TLS 키 저장소 및 신뢰 저장소 사용자 인증 정보를 제공합니다. 자격 증명은 별도의 파일에 있습니다. 시크릿은 Kafka Connect Pod에 볼륨으로 마운트됩니다. 볼륨은 경로 /opt/kafka/external-configuration/<volume-name> 에 마운트됩니다.

사전 요구 사항

  • Kafka 클러스터가 실행 중입니다.
  • Cluster Operator가 실행 중입니다.
  • 사용자 인증 정보가 포함된 시크릿이 있습니다.

사용자 인증 정보가 있는 시크릿 예

apiVersion: v1
kind: Secret
metadata:
  name: my-user
  labels:
    strimzi.io/kind: KafkaUser
    strimzi.io/cluster: my-cluster
type: Opaque
data:
  ca.crt: <public_key> # Public key of the clients CA
  user.crt: <user_certificate> # Public key of the user
  user.key: <user_private_key> # Private key of the user
  user.p12: <store> # PKCS #12 store for user certificates and keys
  user.password: <password_for_store> # Protects the PKCS #12 store
Copy to Clipboard Toggle word wrap

my-user 시크릿은 커넥터에 대한 키 저장소 인증 정보(user.crtuser.key)를 제공합니다.

Kafka 클러스터를 배포할 때 생성된 < cluster_name>-cluster-ca-cert 시크릿은 클러스터 CA 인증서를 신뢰 저장소 인증 정보(ca.crt)로 제공합니다.

프로세스

  1. KafkaConnect 리소스를 구성합니다.

    • DirectoryConfigProvider활성화
    • externalConfiguration 속성을 사용하여 파일을 지정합니다.

    외부 속성 파일을 사용하는 Kafka Connect 구성의 예

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: my-connect
    spec:
      # ...
      config:
        config.providers: directory 
    1
    
        config.providers.directory.class: org.apache.kafka.common.config.provider.DirectoryConfigProvider 
    2
    
      #...
      externalConfiguration:
        volumes: 
    3
    
          - name: cluster-ca 
    4
    
            secret:
              secretName: my-cluster-cluster-ca-cert 
    5
    
          - name: my-user
            secret:
              secretName: my-user 
    6
    Copy to Clipboard Toggle word wrap

    1
    구성 공급자의 별칭은 다른 구성 매개 변수를 정의하는 데 사용됩니다.
    2
    DirectoryConfigProvider 는 디렉터리의 파일에서 값을 제공합니다. 매개 변수는 config.providers. ${alias}.class 형식의 별칭 을 사용합니다.
    3
    보안이 포함된 볼륨의 이름입니다.
    4
    신뢰 저장소 구성을 제공하기 위한 클러스터 CA 인증서의 시크릿 이름입니다.
    5
    키 저장소 구성을 제공할 사용자의 시크릿 이름입니다.
  2. 공급자를 활성화하도록 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_connect_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. 커넥터 구성의 파일 속성을 자리 표시자로 참조합니다.

    파일을 참조하는 커넥터 구성의 예

    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.history.producer.security.protocol: SSL
        database.history.producer.ssl.truststore.type: PEM
        database.history.producer.ssl.truststore.certificates: "${directory:/opt/kafka/external-configuration/cluster-ca:ca.crt}"
        database.history.producer.ssl.keystore.type: PEM
        database.history.producer.ssl.keystore.certificate.chain: "${directory:/opt/kafka/external-configuration/my-user:user.crt}"
        database.history.producer.ssl.keystore.key: "${directory:/opt/kafka/external-configuration/my-user:user.key}"
        #...
    Copy to Clipboard Toggle word wrap

    자리 표시자 구조는 directory:<path>:<file_name> 입니다. DirectoryConfigProvider 는 마운트된 보안에서 인증 정보를 읽고 추출합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat