Fra Nais-plattformen · Bygd for gjenbruk

unleasherator

Feature toggles er enkle. Å drifte Unleash er jobben — unleasherator tar den.

Unleash er et åpent system for feature toggles, opprinnelig laget i Norge. Å skru en bryter av og på tar sekunder — men noen må kjøre serveren bak. unleasherator er en Kubernetes-operator som setter opp Unleash-instanser, deler ut API-tokens og kobler clustre sammen, slik at team kan bytte funksjoner i stedet for å drifte servere.

Go·MIT-lisens·Kubernetes-operator

Så enkelt er det for teamet. Bak hver bryter står en Unleash-server som må driftes og oppdateres — det er den delen operatoren tar.

Hva den styrer

unleasherator utvider Kubernetes med fire egne ressurstyper. Du beskriver hva du vil ha; operatoren avstemmer virkeligheten mot beskrivelsen.

UnleashApiTokenRemoteUnleashReleaseChannel
Unleash
En komplett Unleash-instans i clusteret — deployment, ingress og tilkobling til databasen. Operatoren driver hele livsløpet.
ApiToken
En API-token mot en Unleash-instans, klargjort og lagt i en Kubernetes-secret der applikasjonen leser den.
RemoteUnleash
En kobling til en Unleash-instans som kjører et annet sted, autentisert med en admin-token fra en secret. Slik når flere clustre samme feature toggles.
ReleaseChannel
En felles oppdateringskanal som ruller ut nye Unleash-versjoner på tvers av instansene dine, med strategi for helsesjekk og rollback.

Federasjon — å dele feature toggles mellom instanser — settes opp som et felt på Unleash-ressursen, ikke som en egen ressurstype.

Slik får teamet en Unleash-instans

Ingen manuelle servere, ingen tokens sendt på e-post. Teamet ber om det de trenger med noen få ressurser, og operatoren gjør resten.

  1. Steg 1

    Be om en instans

    Legg en Unleash-ressurs i clusteret og pek den mot databasen. Operatoren setter opp Unleash-serveren og holder den kjørende.

  2. Steg 2

    Få en token

    Legg til en ApiToken. Operatoren oppretter tokenen mot instansen og legger den i en secret applikasjonen kan lese.

  3. Steg 3

    Del på tvers

    Skal andre clustre bruke samme feature toggles, peker du en RemoteUnleash mot instansen. ReleaseChannel holder versjonene i takt.

Kom i gang

Prosjektet er bygd med Kubebuilder og følger vanlig operator-oppsett. Installer ressurstypene, rull ut controlleren, og legg inn eksemplene.

Installer ressurstypene (CRD-ene)
$ make install
Bygg, publiser og rull ut controlleren
$ make docker-build docker-push IMG=<registry>/unleasherator:tag
$ make deploy IMG=<registry>/unleasherator:tag
Prøv de medfølgende eksemplene
$ kubectl apply -f config/samples/

Det du trenger

  • Et Kubernetes-cluster med kubectl satt opp
  • En PostgreSQL-database som Unleash-instansene lagrer dataene sine i
  • Docker hvis du vil bygge ditt eget operator-image

Gjenbruk i egen virksomhet

Koden er åpen, men vær ærlig om hva du overtar før du tar den i drift.

MIT-lisensiert og fritt å bruke. Vi lover ingen support-SLA, men issues og pull requests er velkomne. Driften er ditt ansvar.

unleasherator er bygd for og driftes på Nais-plattformen. Den er ikke testet i andre miljøer, så regn med litt egeninnsats hvis du vil kjøre den i eget cluster.

Åpen kildekode fra Nav