Helm

Basically to create your helm values, you can take a look to the default values and you can see how your values could be defined: https://github.com/tchiotludo/akhq/blob/dev/helm/akhq/values.yaml

Nextone we will present some helm chart value example used in an AWS MSK that maybe could show how to use and define stuff in the helm chart and understand better how to define that.

Examples

AWS MSK with Basic Authentication and ALB controller ingress

The following HELM chart is an example of AWS MSK with a basic authentication and also using AWS load balancer controller.

So mixing the default values.yaml previously linked and adding the basic idea of basic AKHQ authentication (more info here: https://akhq.io/docs/configuration/authentifications/basic-auth.html) and the documentation about how to connect to the AWS MSK here https://akhq.io/docs/configuration/authentifications/aws-iam-auth.html, we created the following example.

And of course, about ingress and service is using similar Helm configurations like other external helm charts are using in the opensource community.

Also, if you need to add more stuff like ACL defintions, LDAP integrations or other stuff. In the main documentation there are present a lot of examples https://akhq.io/docs/ .


# This is an example with basic auth and a AWS MSK and using a AWS loadbalancer controller ingress

configuration:
  micronaut:
    security:
      enabled: true
      default-group: no-roles
      token:
      jwt:
        signatures:
          secret:
            generator:
              secret: changeme
  akhq:
    security:
      enabled: true
      default-group: no-roles        
      basic-auth:
        - username: changeme
          password: changeme
          groups:
            - admin
        - username: changeme
          password: changeme
          groups:
            - reader
    server:
      access-log:
        enabled: true
        name: org.akhq.log.access
    connections:
      my-cluster-sasl:
        properties:
          bootstrap.servers: <your bootsrapservers:9096>
          security.protocol: SASL_SSL
          sasl.mechanism: SCRAM-SHA-512
          sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="username" password="password";

ingress:
  enabled: true
  portnumber: 8080
  apiVersion: networking.k8s.io/v1
  annotations:
    kubernetes.io/ingress.class: 'alb'
    alb.ingress.kubernetes.io/group.name: "akhq"
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443},{"HTTPS":80}]'
    alb.ingress.kubernetes.io/load-balancer-attributes: 'routing.http2.enabled=true,idle_timeout.timeout_seconds=60'
    alb.ingress.kubernetes.io/healthcheck-path: "/api/me"
    alb.ingress.kubernetes.io/subnets: <your_subnets>
    external-dns.alpha.kubernetes.io/hostname: "akhq.domain"
    alb.ingress.kubernetes.io/certificate-arn: "your_acm_here"
    alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tls"
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443,80"
    service.beta.kubernetes.io/aws-load-balancer-ssl-negotiation-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"
  labels:
    app: akhq
  service:
    port: 443
    annotations:
      service.beta.kubernetes.io/target-type: "ip"
  hosts: [ 'akhq.domain' ]
  paths: [ "/*" ]
  tls:
    - secretName: tls-credential
      hosts:
       - 'akhq.domain'