Connector 단에서 설정해줄 수도 있지만 그렇게 되면 새로운 Secret을 반영할 때마다 Connect Cluster 전체 재기동이 필요하다. -> Cluster 내의 다른 Connector도 재기동 됨
그래서 Connect에 init 해주는 것이 나은 선택일 것!
config:
config.providers: secrets,configmaps
config.providers.secrets.class: io.strimzi.kafka.KubernetesSecretConfigProvider
config.providers.configmaps.class: io.strimzi.kafka.KubernetesConfigMapConfigProvider
config.providers.secrets.param.dir: /path/to/secrets
config.providers.configmaps.param.dir: /path/to/configmaps
해당 부분을 추가해서 배포하면 Strimzi Operator가 Service Account를 생성해준다.
이름은 <ConnectName>-connect
$ k get serviceaccount -n kafka
my-connect-cluster-connect 0 17d
$ k describe serviceaccount -n kafka my-connect-cluster-connect
Name: my-connect-cluster-connect
Namespace: kafka
Labels: app.kubernetes.io/instance=my-connect-cluster
app.kubernetes.io/managed-by=strimzi-cluster-operator
app.kubernetes.io/name=kafka-connect
app.kubernetes.io/part-of=strimzi-my-connect-cluster
strimzi.io/cluster=my-connect-cluster
strimzi.io/component-type=kafka-connect
strimzi.io/kind=KafkaConnect
strimzi.io/name=my-connect-cluster-connect
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: <none>
Tokens: <none>
Events: <none>
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: connector-configuration-role
namespace: elastic
rules:
- apiGroups: [""]
resources: ["secrets"]
resourceNames: ["elasticsearch-certs"]
verbs: ["get"]
사용하려는 CM / Secret이 있는 Namespace에 생성해준다.
resourceNames에 원하는 리소스의 이름 작성
multiple로 가능하지만 여러 NS의 리소스를 읽어오려면 여러 개의 Role을 생성해줘야 한다.
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: connector-configuration-role-binding
namespace: elastic
subjects:
- kind: ServiceAccount
name: my-connect-cluster-connect
namespace: kafka
roleRef:
kind: Role
name: connector-configuration-role
apiGroup: rbac.authorization.k8s.io
role과 strimzi가 생성해준 service account를 연결해주는 rolebinding을 생성하자
이 것 또한 사용할 CM / Secret이 있는 Namespace에 생성해준다.
Role이 여러 개라면 Binding도 여러 개 생성
${secrets:elastic/elasticsearch-credentials:username}
이제 Connector 배포 시에 해당 형태로 비밀번호 등을 사용할 수 있다!