Redmine i Kubernetes – Del 2: Installerer Redmine

6/30/2020
8 minutes
Lukáš Beňa
Dette er den andre delen av serien om å distribuere Redmine i Kubernetes. I denne artikkelen vil vi gi instruksjoner om hvordan du distribuerer en pålitelig installasjon av Redmine.

Gjennomgang Del 1

Nå må du nok se frem til installasjonen av Redmine på Kubernetes. Tross alt, det er det du kom hit for, ikke sant?

I Redmine på Kubernetes - Del 1: Forberede miljøet, installerte vi Ingress Controller, en komponent for å omdirigere internettforespørsler inne i klyngen din, og vi opprettet et DNS-domene, redminek8s.ddns.net. Nå trenger vi bare å konfigurere HTTPS, og vi er klare til å distribuere Redmine.


HTTPS med cert-manager

Selv om vi kunne ha beholdt Redmine som HTTP, har HTTPS blitt standarden for nettsteder, så mye at de fleste nettlesere advarer deg om et sikkerhetsproblem når HTTPS ikke blir brukt av et nettsted.

Vanligvis er det ikke en enkel oppgave å aktivere HTTPS, da du må kjøpe et sertifikat og laste det opp på nettstedet ditt, fornye det etter en viss tid og gjenta prosessen. Cert-manager automatiserer alt dette, inkludert fornyelse av sertifikater, og skaffer til og med gratis sertifikater. Du kan se mer informasjon på deres nettsted, men jeg vil forklare alt du trenger å vite neste.


Installer cert-manager

Utfør følgende trinn for å installere cert-manager i klyngen din:

helm repo add jetstack https://charts.jetstack.io && helm repo update

helm install cert-manager jetstack/cert-manager --set installCRDs=true

Først legger du til depotet der cert-manager er, og deretter installerer du den nyeste versjonen.


Koble til sertifikatmyndigheten

Nå må vi instruere cert-manager om å koble til sertifikatleverandøren vi velger. Vi vil bruke LetsEncrypt, en gratis sertifikatmyndighet. Opprett denne filen først (husk å erstatte <din-e-postadresse> med en ekte e-postadresse) og gi den navnet cluster-issuer.yaml

apiVersion: cert-manager.io/v1alpha2

kind: ClusterIssuer

metadata:

  name: letsencrypt

spec:

  acme:

    server: https://acme-v02.api.letsencrypt.org/directory

    email: <din-e-postadresse>

    privateKeySecretRef:

      name: letsencrypt

    solvers:

    - http01:

        ingress:

          class: nginx

Deretter bruker du følgende kommando for å bruke den til klyngen:

kubectl apply -f cluster-issuer.yaml

Gratulerer! Filen ovenfor er den første Kubernetes-konfigurasjonen vi skriver og bruker på klyngen. Du har kanskje lagt merke til at den viser hvordan du kobler til LetsEncrypt, men den beskriver også Ingress Controlleren vi opprettet i Del 1 (The class: nginx på slutten) Denne typen konfigurasjon har noen linjer med mellomrom for å indikere avhengighet av noen egenskaper til andre. Behold disse mellomrommene som vist for å sikre at filen blir lest og brukt riktig.

Nå er klyngen din HTTPS-aktivert. Når vi installerer en applikasjon, kan vi instruere den til å fungere med HTTPS og voilà! Hele prosessen med å få sertifikatet vil bli utført automatisk i bakgrunnen.


Installerer Redmine

Dette er det vi alle har ventet på. Vi kan installere Redmine på flere forskjellige måter, men den mest praktiske er å bruke Helm. Som vi allerede har gjort tidligere, legger vi først til depotet der Redmine er

helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update

Men denne gangen, i stedet for å installere med en gang, vil vi opprette en konfigurasjonsfil for å angi noen tilpassede innstillinger vi ønsker at Redmine skal ha.

Vi vil separere alle konfigurasjoner i sin egen seksjon, men du legger dem alle i samme fil, en etter den andre. Kall filen values.yaml.

Alle Helm-applikasjoner har en values.yaml-fil med alle mulige konfigurasjoner som kan gjøres for applikasjonen. Når vi oppretter vår egen values.yaml, definerer vi endringene vi ønsker. Alle verdier vi ikke inkluderer i filen vår, vil forbli som de er i standardfilen.

Alle standardverdier kan også finnes på Helm-applikasjonssiden, https://hub.helm.sh/charts/bitnami/redmine. Gå videre og sjekk alle konfigurasjonene.


Første admin-bruker

RedmineBrukernavn: adminUser

RedminePassord: <mitt-passord>

Dette trinnet er like nødvendig som enkelt å forstå. Dette er vår første bruker på Redmine, den vi vil bruke for å logge inn første gang.

Når Redmine er installert, kan du få tilgang til det med denne brukeren for å konfigurere din splitter nye installasjon.


PostgreSQL-database

Som standard vil vår Helm-installasjon kreve at en mariadb-database opprettes. Vi vil i stedet konfigurere installasjonen vår til å bruke PostgreSQL. Du må også legge til minst ett passord for å få tilgang til denne databasen, som du kan se nedenfor

databaseType: postgresql

mariadb:

  enabled: false

postgresql:

  enabled: true

  postgresqlDatabase: Redmine

  postgresqlUsername: Redmine

  postgresqlPassword: <et-sikkert-passord>

Vi må eksplisitt fortelle installasjonen vår at vi ikke ønsker at MariaDB skal installeres sammen med konfigurasjonen for PostgreSQL-databasen.


DNS-namn konfigurasjon

Konfigurasjonen nedanfor er den andre sida av DNS-konfigurasjonen vi gjorde i Del 1. Som du kan sjå, aktiverer vi TLS, protokollen bak HTTPS, og set hostname som vi brukte då vi laga DNS-posten vår:

ingress:

  enabled: true

  certManager: true

  hostname: redminek8s.ddns.net

  tls: true

  annotations:

    kubernetes.io/ingress.class: nginx

    cert-manager.io/cluster-issuer: letsencrypt

Også i dei siste to linjene lenkar vi applikasjonen vår med Ingress Controller og Cluster Issuer som vi laga før.

No kan vi deploye Redmine med vår eiga konfigurasjon:

helm install Redmine -f values.yaml bitnami/redmine

Denne linja er lik andre helm install-linjer vi brukte før, men denne gongen gir vi ein eiga values.yaml. Dette er måten å tilpasse kva som helst Helm-applikasjon.

Vi treng framleis litt meir tålmod, sidan det tar litt tid å lage applikasjonen. Du kan køyre denne kommandoen for å sjekke statusen til applikasjonscontainerane dine:

kubectl get pods --watch

Kommandoen vil returnere noko liknande dette:

NAME                       READY   STATUS    RESTARTS   AGE

. . .

redmine-999c68dd9-x7h2k    1/1     Running   0          6m40s

redmine-postgresql-0       1/1     Running   0          6m40s

Du må vente til statusen for begge containerane er Running og alle er klare 1/1, noko som i mitt tilfelle tok omtrent 6 minutt.

No er alt klart for å opne nettlesaren og gå til vår nye installasjon:

Redmine er klar


Oppsummering

Kubernetes er eit komplekst verktøy for å deploye applikasjonar, men vi navigerte gjennom den kompleksiteten med hjelp av Helm (ingen ordspel meint) og deploya ein påliteleg installasjon av Redmine.

Du kan finne ein oppsummering av denne how-to-en i følgjande git-repo: https://github.com/lcofre/redmine-on-k8s. Du kan gjerne samanlikne med filene dine om du står fast.

Vi har utelate nokre konsept frå diskusjonen fordi dei var komplekse eller forklaringa var sky-spesifikk. Blant dei er Liveness og Readiness til applikasjonen din, konfigurasjon av innkomande e-postar og skalering for å handtere meir belastning. Gi oss beskjed om kva som interesserer deg mest nedanfor, slik at vi kan diskutere det i ein framtidig how-to.

Den ultimate Redmine-oppgraderingen? Enkel.

Få alle kraftige verktøy for perfekt prosjektplanlegging, -styring og -kontroll i én programvare.

Prøv Easy Redmine i en 30-dagers gratis prøveperiode

Full funksjonalitet, SSL-beskyttet, daglige sikkerhetskopier, i din geografiske plassering