kafka-cluster
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "kafka-cluster.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
*/}}
|
||||
{{- define "kafka-cluster.fullname" -}}
|
||||
{{- if .Values.nameOverride }}
|
||||
{{- .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- .Release.Name | default "kafka-cluster" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "kafka-cluster.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "kafka-cluster.labels" -}}
|
||||
helm.sh/chart: {{ include "kafka-cluster.chart" . }}
|
||||
{{ include "kafka-cluster.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "kafka-cluster.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "kafka-cluster.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the namespace to use
|
||||
*/}}
|
||||
{{- define "kafka-cluster.namespace" -}}
|
||||
{{- if .Values.namespaceOverride }}
|
||||
{{- .Values.namespaceOverride }}
|
||||
{{- else }}
|
||||
{{- .Release.Namespace }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,53 @@
|
||||
{{- if .Values.kafkaConnect.enabled }}
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaConnect
|
||||
metadata:
|
||||
name: {{ include "kafka-cluster.fullname" . }}
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
strimzi.io/use-connector-resources: "true"
|
||||
spec:
|
||||
image: {{ .Values.kafkaConnect.image }}
|
||||
replicas: {{ .Values.kafkaConnect.replicas }}
|
||||
bootstrapServers: {{ include "kafka-cluster.fullname" . }}-kafka-tls-bootstrap.{{ include "kafka-cluster.namespace" . }}.svc.cluster.local:{{ .Values.listener.port }}
|
||||
config:
|
||||
group.id: {{ include "kafka-cluster.fullname" . }}-default-connect
|
||||
offset.storage.topic: {{ include "kafka-cluster.fullname" . }}.connect-offsets
|
||||
config.storage.topic: {{ include "kafka-cluster.fullname" . }}.connect-configs
|
||||
status.storage.topic: {{ include "kafka-cluster.fullname" . }}.connect-status
|
||||
key.converter: org.apache.kafka.connect.json.JsonConverter
|
||||
value.converter: org.apache.kafka.connect.json.JsonConverter
|
||||
plugin.path: /opt/kafka/plugins
|
||||
topic.creation.enable: "true"
|
||||
{{- if .Values.oauth.enabled }}
|
||||
authentication:
|
||||
type: oauth
|
||||
tokenEndpointUri: {{ .Values.oauth.keycloakUrl }}/realms/{{ .Values.oauth.keycloakRealm }}/protocol/openid-connect/token
|
||||
clientId: {{ .Values.oauth.keycloakClientId }}-kafka-connect
|
||||
clientSecret:
|
||||
secretName: {{ .Values.kafkaConnect.oauthSecretName }}
|
||||
key: client-secret
|
||||
tlsTrustedCertificates:
|
||||
- secretName: {{ .Values.oauth.tlsSecretName }}
|
||||
pattern: {{ .Values.oauth.tlsCertificate | quote }}
|
||||
{{- end }}
|
||||
template:
|
||||
connectContainer:
|
||||
volumeMounts:
|
||||
- name: truststore-volume
|
||||
mountPath: /mnt/truststore/truststore.jks
|
||||
subPath: truststore.jks
|
||||
readOnly: true
|
||||
pod:
|
||||
volumes:
|
||||
- name: truststore-volume
|
||||
secret:
|
||||
secretName: {{ .Values.kafkaConnect.truststoreSecretName }}
|
||||
logging:
|
||||
type: inline
|
||||
loggers:
|
||||
rootLogger.level: {{ .Values.logging.connect.rootLoggerLevel }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,33 @@
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaNodePool
|
||||
metadata:
|
||||
name: broker
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: {{ .Values.broker.replicas }}
|
||||
roles:
|
||||
- broker
|
||||
storage:
|
||||
type: jbod
|
||||
volumes:
|
||||
- id: 0
|
||||
type: persistent-claim
|
||||
size: {{ .Values.broker.storage.size }}
|
||||
class: {{ .Values.broker.storage.class }}
|
||||
kraftMetadata: shared
|
||||
{{- if .Values.broker.resources }}
|
||||
resources:
|
||||
{{- if .Values.broker.resources.requests }}
|
||||
requests:
|
||||
cpu: {{ .Values.broker.resources.requests.cpu }}
|
||||
memory: {{ .Values.broker.resources.requests.memory }}
|
||||
{{- end }}
|
||||
{{- if .Values.broker.resources.limits }}
|
||||
limits:
|
||||
cpu: {{ .Values.broker.resources.limits.cpu }}
|
||||
memory: {{ .Values.broker.resources.limits.memory }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,33 @@
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaNodePool
|
||||
metadata:
|
||||
name: controller
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
spec:
|
||||
replicas: {{ .Values.controller.replicas }}
|
||||
roles:
|
||||
- controller
|
||||
storage:
|
||||
type: jbod
|
||||
volumes:
|
||||
- id: 0
|
||||
type: persistent-claim
|
||||
size: {{ .Values.controller.storage.size }}
|
||||
kraftMetadata: shared
|
||||
class: {{ .Values.controller.storage.class }}
|
||||
{{- if .Values.controller.resources }}
|
||||
resources:
|
||||
{{- if .Values.controller.resources.requests }}
|
||||
requests:
|
||||
cpu: {{ .Values.controller.resources.requests.cpu }}
|
||||
memory: {{ .Values.controller.resources.requests.memory }}
|
||||
{{- end }}
|
||||
{{- if .Values.controller.resources.limits }}
|
||||
limits:
|
||||
cpu: {{ .Values.controller.resources.limits.cpu }}
|
||||
memory: {{ .Values.controller.resources.limits.memory }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,53 @@
|
||||
{{- if .Values.kafkaConnect.enabled }}
|
||||
---
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaTopic
|
||||
metadata:
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
name: {{ include "kafka-cluster.fullname" . }}-connect-offsets
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
spec:
|
||||
partitions: {{ .Values.connectTopics.partitions }}
|
||||
replicas: {{ .Values.connectTopics.replicas }}
|
||||
topicName: {{ include "kafka-cluster.fullname" . }}.connect-offsets
|
||||
config:
|
||||
cleanup.policy: {{ .Values.connectTopics.config.cleanupPolicy }}
|
||||
retention.ms: {{ .Values.connectTopics.config.retentionMs }}
|
||||
segment.bytes: {{ .Values.connectTopics.config.segmentBytes }}
|
||||
---
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaTopic
|
||||
metadata:
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
name: {{ include "kafka-cluster.fullname" . }}-connect-configs
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
spec:
|
||||
partitions: {{ .Values.connectTopics.partitions }}
|
||||
replicas: {{ .Values.connectTopics.replicas }}
|
||||
topicName: {{ include "kafka-cluster.fullname" . }}.connect-configs
|
||||
config:
|
||||
cleanup.policy: {{ .Values.connectTopics.config.cleanupPolicy }}
|
||||
retention.ms: {{ .Values.connectTopics.config.retentionMs }}
|
||||
segment.bytes: {{ .Values.connectTopics.config.segmentBytes }}
|
||||
---
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaTopic
|
||||
metadata:
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
name: {{ include "kafka-cluster.fullname" . }}-connect-status
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
spec:
|
||||
partitions: {{ .Values.connectTopics.partitions }}
|
||||
replicas: {{ .Values.connectTopics.replicas }}
|
||||
topicName: {{ include "kafka-cluster.fullname" . }}.connect-status
|
||||
config:
|
||||
cleanup.policy: {{ .Values.connectTopics.config.cleanupPolicy }}
|
||||
retention.ms: {{ .Values.connectTopics.config.retentionMs }}
|
||||
segment.bytes: {{ .Values.connectTopics.config.segmentBytes }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,31 @@
|
||||
{{- if .Values.kafkaConnect.enabled }}
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: KafkaUser
|
||||
metadata:
|
||||
name: service-account-{{ .Values.oauth.keycloakClientId }}-kafka-connect
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
labels:
|
||||
strimzi.io/cluster: {{ include "kafka-cluster.fullname" . }}
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
spec:
|
||||
authorization:
|
||||
type: simple
|
||||
acls:
|
||||
- resource:
|
||||
type: topic
|
||||
name: "*"
|
||||
patternType: literal
|
||||
operations:
|
||||
- Read
|
||||
- Describe
|
||||
- DescribeConfigs
|
||||
- Write
|
||||
- resource:
|
||||
type: group
|
||||
name: "*"
|
||||
patternType: literal
|
||||
operations:
|
||||
- Read
|
||||
- Write
|
||||
- Describe
|
||||
{{- end }}
|
||||
@@ -0,0 +1,80 @@
|
||||
apiVersion: kafka.strimzi.io/v1beta2
|
||||
kind: Kafka
|
||||
metadata:
|
||||
name: {{ include "kafka-cluster.fullname" . }}
|
||||
namespace: {{ include "kafka-cluster.namespace" . }}
|
||||
labels:
|
||||
{{- include "kafka-cluster.labels" . | nindent 4 }}
|
||||
annotations:
|
||||
strimzi.io/node-pools: enabled
|
||||
strimzi.io/kraft: enabled
|
||||
spec:
|
||||
kafka:
|
||||
version: {{ .Values.kafka.version }}
|
||||
metadataVersion: {{ .Values.kafka.metadataVersion | quote }}
|
||||
template:
|
||||
kafkaContainer:
|
||||
env:
|
||||
- name: KAFKA_OPTS
|
||||
value: "-Duser.timezone={{ .Values.kafka.timezone }}"
|
||||
listeners:
|
||||
- name: tls
|
||||
type: cluster-ip
|
||||
port: {{ .Values.listener.port }}
|
||||
tls: {{ .Values.listener.tls }}
|
||||
{{- if .Values.oauth.enabled }}
|
||||
authentication:
|
||||
type: oauth
|
||||
clientId: {{ .Values.oauth.keycloakClientId | quote }}
|
||||
clientSecret:
|
||||
key: {{ .Values.oauth.secretKey }}
|
||||
secretName: {{ .Values.oauth.secretName }}
|
||||
checkIssuer: true
|
||||
checkAccessTokenType: true
|
||||
accessTokenIsJwt: true
|
||||
checkAudience: false
|
||||
enableOauthBearer: true
|
||||
validIssuerUri: {{ .Values.oauth.keycloakUrl }}/realms/{{ .Values.oauth.keycloakRealm }}
|
||||
jwksEndpointUri: {{ .Values.oauth.keycloakUrl }}/realms/{{ .Values.oauth.keycloakRealm }}/protocol/openid-connect/certs
|
||||
userNameClaim: preferred_username
|
||||
customClaimCheck: "'{{ .Values.oauth.keycloakClientId }}' in @.realm_access.roles"
|
||||
tlsTrustedCertificates:
|
||||
- secretName: {{ .Values.oauth.tlsSecretName }}
|
||||
certificate: {{ .Values.oauth.tlsCertificate }}
|
||||
{{- end }}
|
||||
config:
|
||||
offsets.topic.replication.factor: {{ .Values.config.offsetsTopicReplicationFactor }}
|
||||
transaction.state.log.replication.factor: {{ .Values.config.transactionStateLogReplicationFactor }}
|
||||
transaction.state.log.min.isr: {{ .Values.config.transactionStateLogMinIsr }}
|
||||
default.replication.factor: {{ .Values.config.defaultReplicationFactor }}
|
||||
min.insync.replicas: {{ .Values.config.minInsyncReplicas }}
|
||||
auto.create.topics.enable: {{ .Values.config.autoCreateTopicsEnable }}
|
||||
num.partitions: {{ .Values.config.numPartitions }}
|
||||
delete.topic.enable: {{ .Values.config.deleteTopicEnable }}
|
||||
authorization:
|
||||
type: simple
|
||||
logging:
|
||||
type: inline
|
||||
loggers:
|
||||
kafka.root.logger.level: {{ .Values.logging.kafka.rootLoggerLevel }}
|
||||
entityOperator:
|
||||
topicOperator:
|
||||
{{- if .Values.entityOperator.topicOperator.resources }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.entityOperator.topicOperator.resources.requests.memory }}
|
||||
cpu: {{ .Values.entityOperator.topicOperator.resources.requests.cpu }}
|
||||
limits:
|
||||
memory: {{ .Values.entityOperator.topicOperator.resources.limits.memory }}
|
||||
cpu: {{ .Values.entityOperator.topicOperator.resources.limits.cpu }}
|
||||
{{- end }}
|
||||
userOperator:
|
||||
{{- if .Values.entityOperator.userOperator.resources }}
|
||||
resources:
|
||||
requests:
|
||||
memory: {{ .Values.entityOperator.userOperator.resources.requests.memory }}
|
||||
cpu: {{ .Values.entityOperator.userOperator.resources.requests.cpu }}
|
||||
limits:
|
||||
memory: {{ .Values.entityOperator.userOperator.resources.limits.memory }}
|
||||
cpu: {{ .Values.entityOperator.userOperator.resources.limits.cpu }}
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user