Helm ja salaisuuksienhallinta

Last modified by aulembin@helsinki_fi on 2024/02/07 06:34

Yksi hyvä ja suositeltava työkalu palveluiden pystyttämiseen OpenShiftille on Helm. Se on Kubernetesta ymmärtävä template-moottori, jolla voidaan parametrisoida OpenShiftiin syötettävää yamlia ja syöttää sitä suoraan komentoriviltä älykkäästi oman projektin komponenteiksi.

Tässä artikkelissa esitellään eräs tapa säilyttää salaisuuksia kryptattuina Helm chartin Git-repossa.

Tarvittavat työkalut

Asenna seuraavat työkalut seuraamalla linkkien takana olevia asennusohjeita ja/tai käyttämällä oman käyttöjärjestelmäsi paketinhallintaa.

  1. OpenShiftin komentoriviasiakas oc
    1. Lataa täältä paketti openshift-client-... omalle käyttöjärjestelmällesi: https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/
  2. Helm
    1. https://helm.sh/docs/intro/install/
  3. Helmin secrets plugin
    1. https://github.com/jkroepke/helm-secrets
  4. GnuPG
    1. Esimerkiksi apt install gnupg
    2. Ei ainut vaihtoehto. SOPS tukee myös muita salaus-backendejä. Tässä esimerkkiohjeessa keskitytään kuitenkin GPG:hen.
  5. SOPS
    1. https://github.com/mozilla/sops

Asetustiedosto

Lue Helm chart -repoosi tiedosto .sops.yaml seuraavanlaisella sisällöllä:





creation_rules:  - pgp: >-      pilkuilla,      eroteltu,      lista,      pgp-sormenjälkiä

Sormenjälki (fingerprint) on henkilökohtaisen PGP-avaimen yksilöivä tunniste, joka näyttää esimerkiksi tältä: 78F7F1856BB695563D5BBA877F9D8156A3CF7EE3.

Luettele asetustiedostossa sormenjälkien avulla kaikkien niiden henkilöiden PGP-avaimet, joita vasten haluat kryptata Helm chartisi salaisuudet. Siis he henkilöt, joiden tarvitsee päästä asentamaan projektiasi OpenShiftissä. Jokainen listattu avain pystyy purkamaan kryptatut salaisuudet.

.gitignore

Lisää seuraavat rivit .gitignore-tiedostoosi, jotta et vahingossa committaa selväkielisiä salaisuuksia:


*.yaml.dec*.yml.dec

Käyttö


Salaisuus-yamlit ja viittaaminen templatessaLuo esimerkiksi tiedostot secrets.test.yaml ja secrets.prod.yaml. Luettele niissä kaikki testi- ja tuotantoympäristöjesi salaisuudet. Esimerkiksi:











tls_cert: |-  -----BEGIN CERTIFICATE-----  ...  -----END CERTIFICATE-----tls_chain: |-  -----BEGIN CERTIFICATE-----  ...  -----END CERTIFICATE-----tls_privkey: |-  -----BEGIN PRIVATE KEY-----  ..  -----END PRIVATE KEY-----

Sitten voit viitata salaisuuteesi templateissa esimerkiksi näin:


route.openshift.io/v1



















# chart/templates/route.yamlkind: RouteapiVersion: metadata: name: sovellukseni namespace: projektinilabels: app: sovellukseni type: externalspec: host: {{ .Values.route_hostname }} # aseta tämä tiedostossa values.ymparisto.yaml (ei tarvitse kryptata) to: kind: Service name: sovellukseni tls: termination: edge insecureEdgeTerminationPolicy: Redirect key: | {{- .Values.tls_privkey | nindent 6 }} certificate: | {{- .Values.tls_cert | nindent 6 }} caCertificate: | {{- .Values.tls_chain | nindent 6 }}

Komennot


Salaisuuden kryptaaminenVarmista ensin, että olet importannut GPG-avainrenkaaseesi kaikki .sops.yaml-asetustiedostossa listaamasi julkiset avaimet. Mahdollisesti sinun pitää myös asettaa niille riittävä luottamusaste, jotta GPG suostuu kryptaamaan niille. Olennaiset komennot tähän ovat gpg --import (tuo tiedostosta) sekä gpg --recv-keys (hae avainpalvelimelta) – tutustu näiden käyttöön GnuPG:n dokumentaatiosta.

Kryptaa laatimasi salaisuus-yaml seuraavalla komennolla:

helm secrets enc secrets.ymparisto.yaml

Tiedosto on nyt korvautunut kryptatulla versiolla.


Kryptatun salaisuuden muokkaaminen

helm secrets edit secrets.ymparisto.yaml


Kryptatun salaisuuden katseleminen

helm secrets view secrets.ymparisto.yaml


Kryptatun salaisuuden purkaminen

helm secrets dec secrets.ymparisto.yaml

Kryptatun yamlin kanssa samaan hakemistoon on nyt ilmaantunut selväkielinen tiedosto secrets.ymparisto.yaml.dec


Kääre muille Helm-komennoilleHelm secrets plugin osaa käyttää kryptattuja salaisuuksia läpinäkyvästi ilman purkamista levylle välivaiheena käärimällä Helmin muut komennot näppärästi. Seuraavalla komennolla voit tehdä releasen projektiisi käyttäen kryptattuja salaisuuksia:

helm secrets upgrade --install -f secrets.ymparisto.yaml -f values.ymparisto.yaml releasen-nimi .



Yhteystietoja

Suositeltu yhteydenottotapa kysymyksiin on:

https://helsinkifi.slack.com #kontit 

Resurssien lisäys/muutospyynnöt kannattaa lähettää sähköpostilla.

grp-openshift-owner@helsinki.fi (alustan ylläpito ja kehitys)

tike-ohjelmistotuotanto@helsinki.fi (sovelluskehitys)