我目前正在为不同的环境设置我的aws s3存储桶,这样我就可以在dev, tqa, stg和prd中拥有数据。在dev中我的bucket的名字是s3.dev.kafka.sink,而在tqa中它的名字是s3. tka .kafka。每个Sink都与其正确的环境相关联。Kafka Connect网站上的文档没有指定如何设置环境,所以我按照下面的方式做了,但是我一直得到桶名命名不正确的错误。
我把它放在秘密的yaml文件
apiVersion: kubernetes-client.io/v1
kind: ExternalSecret
metadata:
name: kafka-sink-s3-secret
namespace: namespace
spec:
backendType: secretManager
data:
-key: s3.tqa.kafka.sink
name: bucket_name
property: bucket_name
在部署文件
env:
-name: bucket_name
valueFrom:
secretKeyRef:
name:kaka-sink-s3-secret
key: bucket_name
我将在配置中指定桶名:"s3.bucket.name":"'"$bucket_name"'"
但是部署失败。知道我如何指定为s3.{{ENV}}.kafka.sink
,以便它在自己的环境中运行正确的桶名在aws
开箱即用,Kafka Connect没有任何方法访问AWS SDK定义的环境变量(至少是密钥和配置文件)
听起来你需要使用Kafka Connect API的ConfigProvider
下面是Github上的一个示例,您需要编译并加载到您的Docker映像中- https://github.com/giogt/kafka-env-config-provider
在连接器属性中,像这样使用
"bucket.name": "${env:ENVIRONMENT_VARIABLE_NAME}"
您应该能够使用Helm更好地将/template从秘密/部署资源定义中的完整桶名中分离出来