kafka-exporter 部署自定义配置映射

问题描述 投票:0回答:0

我想使用带有自定义 configmap 的 helm 部署 kafka-exporter,我的 values.yaml 文件如下所示:

# kafkaServer:
#   - kafka0.svc.cluster.local:9092
#   - kafka1.svc.cluster.local:9092
#   - kafka2.svc.cluster.local:9092

service: 
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/scrape: "true"

prometheus:
  serviceMonitor:
    enabled: true
    namespace: observability
    additionalLabels:
      release: prometheus

deployment.yaml 图表如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ template "prometheus-kafka-exporter.fullname" . }}
  labels:
    app: {{ template "prometheus-kafka-exporter.name" . }}
    chart: {{ template "prometheus-kafka-exporter.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ template "prometheus-kafka-exporter.name" . }}
      release: {{ .Release.Name }}
  template:
    metadata:
      annotations:
{{ toYaml .Values.annotations | indent 8 }}
      labels:
        app: {{ template "prometheus-kafka-exporter.name" . }}
        release: {{ .Release.Name }}
    spec:
      {{- if .Values.securityContext }}
      securityContext:
      {{- toYaml .Values.securityContext | nindent 8 }}
      {{- end }}
      serviceAccountName: {{ template "prometheus-kafka-exporter.serviceAccountName" . }}
      containers:
        - args:
            - '--verbosity={{ .Values.verbosity }}'
          {{- if .Values.sarama.logEnabled }}
            - '--log.enable-sarama'
          {{- end }}
           {{- range $server := .Values.kafkaServer }}
            - '--kafka.server={{ $server }}'
          {{- end }}
          {{- if .Values.kafkaBrokerVersion }}
            - '--kafka.version={{ .Values.kafkaBrokerVersion }}'
          {{- end }}
          {{- if .Values.tls.enabled }}
            - '--tls.enabled'
          {{- if .Values.tls.mountPath }}
            - '--tls.ca-file={{ .Values.tls.mountPath }}/ca.crt'
            - '--tls.cert-file={{ .Values.tls.mountPath }}/tls.crt'
            - '--tls.key-file={{ .Values.tls.mountPath }}/tls.key'
          {{- end }}
          {{- if .Values.tls.insecureSkipVerify }}
            - '--tls.insecure-skip-tls-verify'
          {{- else if .Values.tls.serverName }}
            - '--tls.server-name={{ .Values.tls.serverName }}'
          {{- end }}
          {{- end }}
          {{- if .Values.sasl.enabled }}
            - '--sasl.enabled'
          {{- if not .Values.sasl.handshake }}
            - '--sasl.handshake=false'
          {{- end }}
          {{- if .Values.sasl.scram.enabled }}
            - '--sasl.username=$(SCRAM_USERNAME)'
            - '--sasl.password=$(SCRAM_PASSWORD)'
            - '--sasl.mechanism={{ .Values.sasl.scram.mechanism }}'
          {{- end }}
          {{- if .Values.sasl.kerberos.enabled }}
            - '--sasl.service-name={{ .Values.sasl.kerberos.serviceName }}'
            - '--sasl.kerberos-config-path={{ .Values.sasl.kerberos.mountPath }}/kerberos.conf'
            - '--sasl.realm={{ .Values.sasl.kerberos.realm }}'
            - '--sasl.keytab-path={{ .Values.sasl.kerberos.mountPath }}/kerberos.keytab'
            - '--sasl.kerberos-auth-type={{ .Values.sasl.kerberos.kerberosAuthType }}'
          {{- end }}
          {{- if .Values.server.tls.enabled }}
            - '--server.tls.ca-file={{ .Values.server.tls.mountPath }}/ca.crt'
            - '--server.tls.cert-file={{ .Values.server.tls.mountPath }}/tls.crt'
            - '--server.tls.key-file={{ .Values.server.tls.mountPath }}/tls.key'
            - '--server.tls.mutual-auth-enabled={{ .Values.server.tls.mutualAuthEnabled }}'
          {{- end }}
          {{- end }}
          {{- if .Values.extraArgs }}
          {{- range .Values.extraArgs  }}
            - {{ . }}
          {{- end }}
          {{- end }}
          env:
          {{- range $env := .Values.env }}
            - name: {{ $env.name }}
              value: {{ $env.value }}
          {{- end }}
          {{- if .Values.sasl.scram.enabled }}
            - name: SCRAM_USERNAME
              valueFrom:
                secretKeyRef:
                  name: {{ template "prometheus-kafka-exporter.saslScramSecretName" . }}
                  key: username
            - name: SCRAM_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: {{ template "prometheus-kafka-exporter.saslScramSecretName" . }}
                  key: password
          {{- end }}
          name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - name: exporter-port
              containerPort: 9308
              protocol: TCP
{{- if .Values.liveness.enabled }}
          livenessProbe:
{{- toYaml .Values.liveness.probe | trim | nindent 12 }}
{{- end }}
{{- if .Values.readiness.enabled }}
          readinessProbe:
{{- toYaml .Values.readiness.probe | trim | nindent 12 }}
{{- end }}
          resources:
{{ toYaml .Values.resources | indent 12 }}
          {{- with .Values.containerSecurityContext }}
          securityContext:
            {{- toYaml . | nindent 12 }}
          {{- end }}
          {{- if or (.Values.tls.mountPath) (.Values.sasl.kerberos.mountPath) }}
          volumeMounts:
            {{- if .Values.tls.mountPath }}
            - mountPath: {{ .Values.tls.mountPath }}
              name: kafka-certs
              readOnly: true
            {{- end }}
            {{- if .Values.sasl.kerberos.mountPath }}
            - mountPath: {{ .Values.sasl.kerberos.mountPath }}
              name: kerberos
              readOnly: true
            {{- end }}
            {{- if .Values.server.tls.mountPath }}
            - mountPath: {{ .Values.server.tls.mountPath }}
              name: server-certs
              readOnly: true
            {{- end }}
          {{- end }}
    {{- with .Values.nodeSelector }}
      nodeSelector:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
    {{- end }}
      {{- if or (.Values.tls.mountPath) (.Values.sasl.kerberos.mountPath) }}
      volumes:
        {{- if .Values.tls.mountPath }}
        - name: kafka-certs
          secret:
            secretName: {{ .Values.tls.secretName }}
        {{- end }}
        {{- if .Values.sasl.kerberos.mountPath }}
        - name: kerberos
          secret:
            secretName: {{ .Values.sasl.kerberos.secretName }}
        {{- end }}
        {{- if .Values.server.tls.mountPath }}
        - name: server-certs
          secret:
            secretName: {{ .Values.server.tls.secretName }}
        {{- end }}
      {{- end }}

我想像这样使用配置映射:

apiVersion: v1
data:
  KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0.svc.cluster.local:9092
  KAFKA_CLUSTERS_0_NAME: kafka0
  KAFKA_CLUSTERS_1_BOOTSTRAPSERVERS: kafka1.svc.cluster.local:9092
  KAFKA_CLUSTERS_1_NAME: kafka1
  KAFKA_CLUSTERS_2_BOOTSTRAPSERVERS: kafka2.svc.cluster.local:9092
  KAFKA_CLUSTERS_2_NAME: kafka2
kind: ConfigMap
metadata:
  
  name: kafka-configmap
  namespace: default

configmap 将来会有越来越多的kafkaServers,所以我想做更多的动态,我如何用自定义configmap 更新deployment.yaml 文件?

感谢您的任何建议。

我尝试用 configMapKeyRef 更新 deployment.yaml 文件,但每次只需要一个值

kubernetes deployment kubernetes-helm configmap kafka-exporter
© www.soinside.com 2019 - 2024. All rights reserved.