Fra Nais-plattformen · Bygd for gjenbruk

kafkarator

En Kafka‑topic er en fil i repoet ditt.

Kafkarator gjør Kafka-byråkratiet om til én ressurs teamet ditt eier — slutt på saker til plattformteamet, admin-paneler og ACL-forespørsler. Du beskriver topicen i YAML, og operatoren oppretter den på Aiven og setter opp tilgangene. Tilgangslisten bor i samme fil som topicen: en pull request er hele prosessen.

Go·MIT-lisens·Kubernetes-operator·Aiven Kafka

Før — saksgangen

  • Opprett sak til plattformteamet
  • Vent på at topicen blir satt opp
  • Be om ACL for konsumenten
  • Be om ACL for produsenten
  • Få tilsendt sertifikat og nøkkel
  • Roter dem før de utløper

Etter — én fil

topic.yamlkind: Topic
apiVersion: kafka.nais.io/v1
kind: Topic
metadata:
  name: min-topic
  namespace: mitt-team
spec:
  pool: nav-dev
  config:
    partitions: 3
    replication: 2
  acl:
    - access: readwrite
      application: min-app
      team: mitt-team
    - access: read
      application: konsument
      team: annet-team

Tilgangslisten bor i samme fil som topicen.

Slik virker det

Kafkarator definerer én egen ressurstype, kafka.nais.io/Topic. Når du oppretter eller endrer den, oversetter operatoren den til topics og ACL-oppføringer på Aiven-hostet Kafka.

  1. Steg 1

    Beskriv topicen

    Legg en Topic-ressurs i clusteret med antall partitions, replication og en acl-liste. Hver oppføring peker på en application og et team, med access lik read, write eller readwrite.

  2. Steg 2

    Operatoren synkroniserer

    Kafkarator oppdager ressursen og oppretter topicen og ACL-oppføringene i Aiven-poolen du oppga. Endrer du filen, følger Aiven etter — synkroniseringen er automatisk.

  3. Steg 3

    Appene kobler seg på

    Hver application i lista får tilgang gjennom en Kubernetes-secret med TLS-legitimasjon i sitt eget namespace. Ingen sertifikater sendes på e-post, ingen tilgang gis utenfor filen.

Det applikasjonen får

En app med Kafka aktivert leser alt den trenger fra en secret som plattformen legger i namespacet. Ingen tilkoblingsstreng limes inn for hånd. Variablene under er dokumentert i Nais Kafka-dokumentasjonen.

TLS-sertifikatBroker-adresserKeystore / truststore
KAFKA_BROKERS
Kommaseparert liste av HOST:PORT-par til Kafka-brokerne
KAFKA_CERTIFICATE
Klientsertifikat for å koble til brokerne (som streng; KAFKA_CERTIFICATE_PATH gir samme som fil)
KAFKA_PRIVATE_KEY
Privat nøkkel til klientsertifikatet (som streng; KAFKA_PRIVATE_KEY_PATH som fil)
KAFKA_CA
CA-sertifikatet som validerer brokerne (som streng; KAFKA_CA_PATH som fil)
KAFKA_CREDSTORE_PASSWORD
Passordet som låser opp keystore og truststore
KAFKA_KEYSTORE_PATH · KAFKA_TRUSTSTORE_PATH
PKCS#12-keystore og JKS-truststore for Java-klienter
KAFKA_SCHEMA_REGISTRY
URL til schema registry (med egne _USER- og _PASSWORD-variabler)
AIVEN_SECRET_UPDATED
Tidsstempel for når legitimasjonen sist ble skrevet

Kom i gang

Deploy operatoren med Helm-charten i repoet, og opprett din første topic. Alt annet er en pull request.

# 1 · installer operatoren i clusteret
helm install kafkarator charts/kafkarator

# 2 · opprett topicen (og tilgangene) fra filen
kubectl apply -f topic.yaml

Ta den i bruk i din virksomhet

Kafkarator er ikke bundet til Nav. Vær ærlig om forutsetningen: den er bygd for Aiven-hostet Kafka, ikke for selvdrevne Kafka-clustre.

Det du trenger

  • Et Kubernetes-cluster der operatoren og applikasjonene dine kjører
  • En Aiven-konto med minst én Kafka-tjeneste (pool i ressursen peker på denne)
  • En YAML-fil per topic — det er hele grensesnittet

Det du kan forvente

MIT-lisensiert og fritt å bruke. Vi lover ingen support-SLA, men issues og pull requests er velkomne — koden driftes daglig i Nav, så den blir vedlikeholdt uansett.

Er du ikke på Aiven, passer ikke kafkarator direkte. Da er den likevel et konkret forbilde for hvordan selvbetjening av topics kan se ut.

Klar for enhver norsk etat på Aiven