Redmine i Kubernetes - Del 2: Installation af Redmine
Dette er den anden del af serien om implementering af Redmine i Kubernetes. I denne artikel vil vi give instruktioner om, hvordan man implementerer en pålidelig installation af Redmine.

Genfortælling Del 1
På nuværende tidspunkt ser du nok frem til installationen af Redmine på Kubernetes. Det er trods alt det, du er kommet for, ikke?
I Redmine på Kubernetes - Del 1: Forberedelse af miljøet installerede vi Ingress Controller, en komponent til omdirigering af internetanmodninger inde i dit klynge, og vi oprettede et DNS-domæne, redminek8s.ddns.net. Nu skal vi kun konfigurere HTTPS, og så er vi klar til at implementere Redmine.
HTTPS med cert-manager
Selvom vi kunne beholde vores Redmine som HTTP, er HTTPS blevet standarden for websites, så meget at de fleste browsere advarer dig om et sikkerhedsproblem, når HTTPS ikke bruges af et website.
Normalt er aktivering af HTTPS ikke en simpel opgave, da du skal købe et certifikat og uploade det til dit site, forny det efter en vis tid og gentage processen. Cert-manager automatiserer alt dette, inklusive fornyelse af certifikater og endda opnår gratis certifikater. Du kan se mere information på deres site, men jeg vil forklare alt, hvad du behøver at vide næste gang.
Installer cert-manager
Udfør følgende trin for at installere cert-manager i din klynge:
helm repo add jetstack https://charts.jetstack.io && helm repo update
helm install cert-manager jetstack/cert-manager --set installCRDs=true
Først tilføjer du repository, hvor cert-manager er, og derefter installerer du den nyeste version.
Opret forbindelse til certifikatmyndigheden
Nu skal vi instruere cert-manager til at oprette forbindelse til certifikatudbyderen, som vi vælger. Vi vil bruge LetsEncrypt, en gratis certifikatmyndighed. Opret først denne fil (husk at erstatte <din-e-mail-adresse> med en rigtig e-mail-adresse) og navngiv den 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-mail-adresse>
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
Anvend derefter det på din klynge med
kubectl apply -f cluster-issuer.yaml
Tillykke! Filen ovenfor er den første Kubernetes-konfiguration, vi skriver og anvender på klyngen. Du har måske bemærket, at den viser, hvordan man opretter forbindelse til LetsEncrypt, men den beskriver også Ingress Controller, vi oprettede i Del 1 (class: nginx i slutningen). Denne type konfiguration har nogle linjer med mellemrum for at angive afhængighed af visse egenskaber til andre. Bevar disse mellemrum som vist for at sikre, at filen læses og anvendes korrekt.
Nu er din klynge HTTPS-aktiveret. Når vi installerer en applikation, kan vi instruere den til at fungere med HTTPS, og voilà! Hele processen med at få certifikatet bliver automatisk udført i baggrunden.
Installation af Redmine
Dette er det, vi alle har ventet på. Vi kan installere Redmine på flere forskellige måder, men den mest bekvemme er at bruge Helm. Som vi allerede har gjort før, tilføjer vi først repository'et, hvor Redmine er
helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update
Men denne gang opretter vi en konfigurationsfil i stedet for at installere med det samme, for at angive nogle brugerdefinerede indstillinger, vi ønsker, at Redmine skal have.
Vi vil adskille alle konfigurationer i deres egen sektion, men du skal placere dem alle i samme fil, en efter den anden. Kald filen values.yaml.
Alle Helm-applikationer har en values.yaml-fil med alle mulige konfigurationer, der kan foretages for applikationen. Når vi opretter vores egen values.yaml, definerer vi ændringerne, vi ønsker. Enhver værdi, vi ikke inkluderer i vores fil, vil forblive som den er i standardfilen.
Alle standardværdier kan også findes på Helm-applikationssiden, https://hub.helm.sh/charts/bitnami/redmine. Gå videre og tjek alle konfigurationerne.
Første admin-bruger
Redmine-brugernavn: adminUser
Redmine-adgangskode: <min-adgangskode>
Dette trin er lige så nødvendigt som nemt at forstå. Det er vores første bruger på Redmine, den bruger, vi vil bruge til at logge ind første gang.
Når Redmine er installeret, kan du få adgang til det med denne bruger for at konfigurere din helt nye installation.
PostgreSQL-database
Som standard kræver vores Helm-installation, at der oprettes en mariadb-database. Vi vil i stedet konfigurere vores installation til at bruge PostgreSQL. Du skal også tilføje mindst en adgangskode for at få adgang til denne database, som du kan se nedenfor
databaseType: postgresql
mariadb:
enabled: false
postgresql:
enabled: true
postgresqlDatabase: Redmine
postgresqlUsername: Redmine
postgresqlPassword: <en-sikker-adgangskode>
Vi skal eksplicit fortælle vores installation, at vi ikke ønsker, at MariaDB skal installeres sammen med konfigurationen for PostgreSQL-databasen.
DNS-navnekonfiguration
Konfigurationen nedenfor er den anden side af DNS-konfigurationen, vi lavede i Del 1. Som du kan se, aktiverer vi TLS, protokollen bag HTTPS, og sætter værtsnavnet, vi brugte, da vi oprettede vores DNS-post:
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 de sidste to linjer forbinder vi vores applikation med Ingress Controller og med Cluster Issuer, vi oprettede før.
Nu kan vi implementere Redmine med vores brugerdefinerede konfiguration:
helm install Redmine -f values.yaml bitnami/redmine
Denne linje ligner andre helm install-linjer, vi har brugt før, men denne gang leverer vi en brugerdefineret values.yaml. Dette er måden at tilpasse enhver Helm-applikation på.
Vi skal stadig have lidt tålmodighed, da oprettelsen af applikationen tager lidt tid. Du kan køre denne kommando for at kontrollere status for dine applikationscontainere:
kubectl get pods --watch
Kommandoen vil returnere noget lignende dette:
NAME READY STATUS RESTARTS AGE
. . .
redmine-999c68dd9-x7h2k 1/1 Running 0 6m40s
redmine-postgresql-0 1/1 Running 0 6m40s
Du skal vente, indtil status for begge containere er Running, og alle er klar 1/1, hvilket i mit tilfælde tog cirka 6 minutter.
Nu er alt klar til at åbne browseren og gå til vores nye implementering:
Redmine er klar
Opsummering
Kubernetes er et komplekst værktøj til implementering af applikationer, men vi navigerede gennem den kompleksitet med hjælp fra Helm (ingen ordspil beregnet) og implementerede en pålidelig installation af Redmine.
Du kan finde en opsummering af denne vejledning i følgende git-repo: https://github.com/lcofre/redmine-on-k8s. Du er velkommen til at sammenligne med dine filer, hvis du sidder fast.
Vi udelod nogle begreber fra diskussionen, fordi de var komplekse, eller forklaringen var sky-specifik. Blandt dem er Liveness og Readiness for din applikation, konfiguration af indgående e-mails og skalering for at håndtere mere belastning. Lad os vide nedenfor, hvad der interesserer dig mest, så vi kan diskutere det i en fremtidig vejledning.

Den ultimative Redmine-opgradering? Nemt.
Få alle kraftfulde værktøjer til perfekt projektplanlægning, -styring og -kontrol i en enkelt software.