QB:n dokumentaatio löytyy nykyään Con2:n Outlinestä.


QB eli Kyyppä on Con2-projektin yhteinen Kubernetes-alusta.


Virtuaalikoneet
4 kpl virtuaalikoneita Hyper-V-alustalla: (qb1–3 (tick), qb4 (warning))

  • 4 VCPU
  • 8 GB RAM

Container orchestration
K3s (tick)

Konfiguraationhallinta
Ansible, julkinen git-repo (tick)



Julkinen ja sisäinen aliverkko

Kubernetes-verkkoratkaisu:
Flannel (K3s default) (tick)

Nekalan palomuuri:
HTTP, HTTPS sisään auki (tick)

Ulos kaikki auki (tick)

SSH-yhteys sisään Monokkelin kautta (tick)

Konekohtainen palomuuri:
Ei konekohtaista palomuumia. Kubernetes tekee paljon iptables-magiaa (warning)

Sisään tuleva HTTPS-liikenne:
nginx ingress controller (tick), virtual IP + keepalived (warning)

Palvelut osoitetaan tällä hetkellä vain yhteen Kyyppä-nodeen (default qb3), joka on niille SPOF.



Kolme SAN-osiota per node:

  • system – juuritiedostojärjestelmä, 40 GB SSD
  • fast – 100 GB SSD
  • big – 500 GB pyörivä media

Levyt (tick)

Rook + Ceph (tick)

Rookin upstream-ominaisuuksia joita odottelemme:

  • CephFS:n dynaaminen provisiointi PVC:n välityksellä. Nyt käytetään flexVolumeja.
  • Useampi storage class. Nyt on konffattu vain fastbigiä odotellessa.



Erillinen tietokantapalvelin Siilo (tick)

PostgreSQL:
Point in time recovery -varmuuskopiointi Piilolle (Barman). (tick)

MySQL:
MariaDB (warning). Varmuuskopiointi (question)

Ks. Tietokannat



Valvonta- ja hallintapalvelin Monokkeli (tick)

Monitorointi:
prometheus.tracon.fi (node-exporter) (tick)
grafana.tracon.fi (dashboard QB) (tick)

Lokienhallinta:

Prometheus Loki (warning)



Levysnapshotit ja tiedostotason varmuuskopiointi (question)

Ks. Varmuuskopiointi


jenkins.tracon.fi (Monokkelilla) (tick)

Joku moderni Kubernetes-natiivi vaihtoehto (question)


Selite: (tick) Tehty, (warning) odottaa, (error) särki, (question) vaatii pohdintaa



TODO

Tietoliikenne

  • Testataan, että podien välinen kommunikaatio tekee mitä pitää.
  • Sisäverkko nodejen välille
    • Sisäverkon interfacet IP-osoitteineen
    • Kuberneteksen osien välinen sisäinen kommunikaatio käyttämään sisäverkon osoitteita
  • nginx-ingress-controller
    • asennus (kubespray ansible)
    • paljastaminen internettiin
      • DNS
      • Palomuuri
    • virtual IP, keepalived
    • node selector kuntoon: nyt vain mastereilla
  • cert-manager
    • asennus (kubespray ansible)
    • konfigurointi

Storage

  • Viritetään GlusterFS

Turvallisuus

  • Varmistutaan siitä, että (ulko)verkkoon ei ole auki sellaisia palveluita, joilla voisi korkata nodet ja/tai Kuberneteksen.
  • Konekohtainen palomuuri

Ylläpito

  • Miten järkätään pääsy Kuberneteksen master apiin? Ts. kubectl adminien omilta työasemilta?
    • Verkko: Mihin master api on auki?
    • Käyttäjätunnukset: Miten ja mistä käsin provisioidaan säätäjien käyttäjätunnukset / käytetäänkö jotain jaettua?

CI/CD

  • Esimerkki jenkins.tracon.fi -> QB deploymentistä, esim. dev.kompassi.eu
    • emrichen toimimaan (asennettu: python 3.5, vaatii: python 3.6)
    • kubectl:lle salaisuudet kuntoon
      • service account
      • role binding
      • token secretiksi jenksuun
    • palomuuriavaus, SSH-putki tmv. jolla kubectl pääsee tökkimään master apia monokkelilta käsin

Valvonta ja lokienhallinta

  • QB nodet Monokkelin Prometheuksen valvontaan (ainakin node-exporter)
  • EFK stack Monokkelille


Sovellukset

  • dev.kompassi.eu
  • conikuvat.fi (Edegal)
  • con2.fi (Tracontent)