Statnett Driftskritisk Kafka - Effektivisering av nettverk
Statnett hadde flere operasjonelle og funksjonelle utfordringer med eksisterende løsninger for innsamling av sensordata. Det var tidkrevende å starte innsamling av data fra nye sensorer, og dataene var ikke tilgjengelige for alle gjennom et enkelt grensesnitt.
-
Kunde:
Statnett
-
Prosjektfakta
Disse utfordringene hindret overgangen til Smart Asset Management (SAM) og smart vedlikehold. Smart vedlikehold ville benytte datadrevne analyser som grunnlag for alt proaktivt vedlikeholdsarbeid på Statnetts egeneide anlegg.
JPros rolle.
Rollen bestod i å utvikle koden for å provisjonere Kafka-infrastruktur og verktøy for utviklere. I Statnett har vi to klustere, alle provisjonert ved bruk av infrastruktur-som-kode.
Hvert kluster har tre miljøer:
- et utviklingsmiljø hvor endringer og nye versjoner testes før de blir promotert til andre miljøer
- et stagingmiljø
- et produksjonsmiljø
Ansible-koden er basert på Confluents cp-ansible-prosjekt for å provisjonere brokere og zookeepere, og er utvidet med støtte for:
- fornyelse av TLS-sertifikater
- forvaltning av disker og brannmur-regler på virtuelle maskiner hvor Kafka kjører
- provisjonering av Confluent Schema Registry, AKHQ og andre verktøy som kjører i Openshift-klusteret
Teamet har også utviklet verktøy for utviklere til å:
- opprette og fjerne topics og vedlikeholde tilgangsregler
- skape nye virtuelle miljøer i Kafka, slik at et fysisk kluster kan brukes som flere utviklings- og testmiljøer.
Alle endringer til plattformen skjer gjennom GitOps-prosesser basert på GitLab CI. Klusterne er deployet i en 'stretched cluster'-modus, noe som betyr at de er deployet over tre datasentre for å oppnå høy tilgjengelighet. På denne måten vil klusterne fungere selv om ett av datasentrene blir utilgjengelig. Metrikkene samles inn ved bruk av Prometheus, og alarmer sendes gjennom Alertmanager. På samme måte som Kafka-klustere, er disse provisjonert fra koden ved bruk av GitOps. Prometheus og Alertmanager er deployet i to datasentre for å sikre høy tilgjengelighet av metrikker og alarmer. Når det gjelder autentisering, er klustere konfigurert med SSL og SASL Plain-autentisering. Vi har utvidet SASL Plain-støtten med autentisering mot LDAP/ADFS.
Tilgang til Kafka-plattformen og Kafka-topicene forvaltes gjennom et åpen kildekode-prosjekt som heter JulieOps.
Teamet har utvidet prosjektet og laget en GitOps-pipeline som brukes for å bestille og godkjenne tilgang til topicene gjennom merge requests i GitLab. Alle hemmeligheter som trengs for å provisjonere plattformen, hentes fra Hashicorp Vault ved runtime.
- Teamet har også bidratt til mange åpen kildekode-prosjekter (som Apache Kafka, CP-Ansible og JulieOps) brukt i vår plattform ved å implementere ny funksjonalitet og sikkerhetspatcher.
Lignende prosjekter
Vil du vite mer?
Kontakt oss
Vi tar gjerne en prat for å avdekke dine behov og snakke om hvordan vi kan løse dine utfordringer.
T: 906 83 146
T: 934 45 707