Konfiguraatioiden ja salaisuuksien hallinta Consul-mallilla Kubernetesissä

Onur Yilmaz

Seuraa

maaliskuu 23, Olemme käyttäneet Kubernetesin ConfigMapsia ja Secretsia jo pitkään, eivätkä ne täysin täytä vaatimuksiamme. Kun esimerkiksi muutamme konfiguraatiota ConfigMapissa, meidän on käynnistettävä sovelluskapselimme uudelleen, jotta muutos tulee voimaan. Joskus kestää useita minuutteja, ennen kuin muutos näkyy kaikissa sovellusinstansseissa. Toinen ongelma on, että Kubernetesin salaisuudet eivät ole tarpeeksi turvallisia. Tarvitsemme salaisuuksiemme olevan turvallisia ja auditoitavissa.

Päävaatimuksemme olivat;

  • Meidän pitäisi pystyä muuttamaan sovellusten konfiguraatioita dynaamisesti käynnistämättä sovellusprosesseja uudelleen. Kun muutamme konfiguraatiota, sen pitäisi vaikuttaa välittömästi kaikkiin sovellustapahtumiin.
  • Sovellussalaisuuksiemme on oltava turvallisia ja tarkastettavissa. Haluamme myös tarjota roolipohjaisen pääsynvalvonnan salaisuuksiin.
  • Meidän on abstrahoitava konfiguraatioiden hallinta pois sovelluksista. Toisin sanoen sovellukset eivät saa tietää, missä ja miten salaisuuksia ja konfiguraatioita säilytetään ja tarjotaan niille.
  • Konfiguraatioiden ja salaisuuksien hallintajärjestelmämme on oltava korkeasti saatavilla ja skaalautuva.

Tutkimusten jälkeen päädyimme kahteen sovellukseen; envconsul ja consul-template.

Tiesimme jo, että Vault on alan standardityökalu salaisuuksien tallentamiseen. Se täyttää kaikki vaatimuksemme ja siinä on ominaisuuksia, kuten dynaamiset salaisuudet, joista voi olla meille hyötyä tulevaisuudessa. Voit myös käyttää Consulia Vaultin tallennuksen taustapalveluna.

Consul on hajautettu, hyvin käytettävissä oleva ja skaalautuva työkalu palveluiden löytämiseen ja konfigurointiin. Meidän tapauksessamme käytämme vain Consulin avain-arvosäilytysominaisuutta ei-salaisten konfiguraatioiden säilyttämiseen.

Voisimme käyttää envconsulia tai consul-templatea lähinnä kolmanteen vaatimukseen: konfiguraationhallinnan abstrahoimiseen pois sovelluksista.

Envconsul tarjoaa tavan käynnistää aliprosessi, jonka ympäristömuuttujat on täytetty Consulista ja Vaultista.

Consul-template täyttää arvot Consulista ja Vaultista tiedostojärjestelmään ja pitää arvot synkronoituina työskennellessäsi daemon-moodissa.

Kahdennentekijäisen sovelluksen sääntönä on, että säilytä konfiguraatiot ympäristöön. Mutta Envconsulin (tai ympäristömuuttujien) ongelma on, että prosessin ympäristömuuttujia ei voi muuttaa käynnistämättä sitä uudelleen. Tämä on vastoin ensimmäistä vaatimustamme. Haluamme pystyä muuttamaan konfiguraatioita käynnistämättä sovellusprosesseja uudelleen. Tämä antaa meille suuren joustavuuden. Tässä on esimerkki mallitiedostosta;

Consul-template lukee tämän mallin, korvaa sijoitussalpaajat arvoilla Consulista, jos käytät avainsanaa ”key”, ja Vaultista, jos käytät avainsanaa ”with secret”. Lisätietoa templatointikielestä löydät täältä. Renderöity tulostiedosto näyttää tältä;

server:
port: "8080"
toggles:
fooEnabled: true
database:
username: "username"
password: "password"

Vastaa

Sähköpostiosoitettasi ei julkaista.