Redmine în Kubernetes - Partea 2: Instalarea Redmine

Recounting Part 1
Până acum, cu siguranță aștepți cu nerăbdare instalarea Redmine pe Kubernetes. Acesta este motivul pentru care ai venit, nu-i așa?
În Redmine in Kubernetes – Part 1: Preparing environment, am instalat Ingress Controller, un component pentru redirecționarea cererilor de internet în interiorul clusterului tău, și am creat un domeniu DNS, redminek8s.ddns.net. Acum trebuie doar să configurăm HTTPS și suntem pregătiți să implementăm Redmine.
HTTPS cu cert-manager
Deși am putea păstra Redmine-ul nostru ca HTTP, HTTPS a devenit standardul pentru site-uri web, atât de mult încât majoritatea browserelor te avertizează cu privire la o problemă de securitate atunci când un site nu utilizează HTTPS.
De obicei, activarea HTTPS nu este o sarcină trivială, deoarece trebuie să cumperi un certificat și să-l încarci pe site-ul tău, să-l reînnoiești după un anumit timp și să repeți procesul. Cert-manager automatizează toate acestea, inclusiv reînnoirea certificatelor și chiar obținerea de certificate gratuite. Poți vedea mai multe informații pe site-ul lor, dar îți voi explica tot ce trebuie să știi în continuare.
Instalare cert-manager
Execută următorii pași pentru a instala cert-manager în clusterul tău:
helm repo add jetstack https://charts.jetstack.io && helm repo update
helm install cert-manager jetstack/cert-manager --set installCRDs=true
Mai întâi adaugi depozitul unde se află cert-manager, apoi instalezi ultima sa versiune.
Conectare la Autoritatea de Certificare
Acum trebuie să instruim cert-manager să se conecteze la furnizorul de certificate pe care îl alegem. Vom folosi LetsEncrypt, o autoritate de certificate gratuită. Creează mai întâi acest fișier (nu uita să înlocuiești <adresa-ta-de-email> cu o adresă de e-mail reală) și numește-l cluster-issuer.yaml
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: <adresa-ta-de-email>
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
Aplică-l apoi în clusterul tău cu
kubectl apply -f cluster-issuer.yaml
Felicitări! Fișierul de mai sus este prima configurație Kubernetes pe care o scriem și o aplicăm în cluster. Poate ai observat că arată cum să te conectezi la LetsEncrypt, dar descrie și Ingress Controller-ul pe care l-am creat în Partea 1 (clasa: nginx la sfârșit). Acest tip de configurație are câteva linii cu spații pentru a indica dependența unor proprietăți de altele. Păstrează aceste spații așa cum sunt prezentate pentru a te asigura că fișierul este citit și aplicat corect.
Acum clusterul tău este activat pentru HTTPS. Ori de câte ori instalăm o aplicație, o putem instrui să funcționeze cu HTTPS și voilà! Întregul proces de obținere a certificatului va fi realizat automat în spatele scenei.
Instalarea Redmine
Aceasta este ceea ce am asteptat cu totii. Putem instala Redmine in mai multe moduri, dar cel mai convenabil este sa folosim Helm. Asa cum am facut deja, mai intai adaugam depozitul unde se afla Redmine
helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update
Dar de data aceasta, in loc sa instalati imediat, vom crea un fisier de configurare, pentru a indica un comportament personalizat pe care dorim sa-l aiba Redmine.
Vom separa toate configurarile in propria lor sectiune, dar le vom pune toate in acelasi fisier, unul dupa altul. Numele fisierului va fi values.yaml.
Toate aplicatiile Helm au un fisier values.yaml cu toate configurarile posibile care pot fi facute pentru aplicatie. Cand cream propriul values.yaml, definim modificarile pe care le dorim. Orice valoare pe care nu o includem in fisierul nostru va fi lasata asa cum este in fisierul implicit.
Toate valorile implicite pot fi gasite si pe pagina aplicatiei Helm, https://hub.helm.sh/charts/bitnami/redmine. Verificati toate configurarile.
Primul utilizator Admin
RedmineUsername: adminUser
RedminePassword: <my-password>
Acest pas este la fel de necesar ca si usor de inteles. Este primul nostru utilizator pe Redmine, cel pe care il vom folosi pentru a ne conecta pentru prima data.
Cand Redmine este instalat, veti putea accesa aplicatia cu acest utilizator pentru a configura instalarea dumneavoastra.
Baza de date PostgreSQL
Implicit, instalarea noastra Helm va necesita crearea unei baze de date mariadb. In schimb, vom configura instalarea noastra sa foloseasca PostgreSQL. Trebuie sa adaugati cel putin o parola pentru a accesa aceasta baza de date, asa cum puteti vedea mai jos
databaseType: postgresql
mariadb:
enabled: false
postgresql:
enabled: true
postgresqlDatabase: Redmine
postgresqlUsername: Redmine
postgresqlPassword: <some-safe-password>
Trebuie sa spunem explicit instalarii noastre ca nu dorim ca MariaDB sa fie instalat impreuna cu configurarea pentru baza de date PostgreSQL.
Configurarea numelui DNS
Configurarea de mai jos este partea cealaltă a configurării DNS pe care am făcut-o în Partea 1. După cum puteți vedea, activăm TLS, protocolul din spatele HTTPS, și setăm numele gazdei pe care l-am folosit la crearea înregistrării noastre DNS:
ingress:
enabled: true
certManager: true
hostname: redminek8s.ddns.net
tls: true
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt
De asemenea, în ultimele două linii legăm aplicația noastră cu Controlerul Ingress și cu Emitentul Cluster pe care l-am creat anterior.
Acum putem implementa Redmine cu configurația noastră personalizată:
helm install Redmine -f values.yaml bitnami/redmine
Această linie este similară cu alte linii helm install pe care le-am folosit anterior, dar de data aceasta furnizăm un values.yaml personalizat. Acesta este modul de a personaliza orice aplicație Helm.
Mai avem nevoie de puțină răbdare, deoarece crearea aplicației durează ceva timp. Puteți executa această comandă pentru a verifica starea containerelor aplicației:
kubectl get pods --watch
Comanda va returna ceva similar cu acesta:
NAME READY STATUS RESTARTS AGE
. . .
redmine-999c68dd9-x7h2k 1/1 Running 0 6m40s
redmine-postgresql-0 1/1 Running 0 6m40s
Trebuie să așteptați până când starea ambelor containere este Running și toate sunt pregătite 1/1, ceea ce în cazul meu a durat aproximativ 6 minute.
Acum totul este pregătit pentru a deschide browserul și a merge la noua noastră implementare:
Redmine este pregătit
Concluzie
Kubernetes este o unealtă complexă pentru a implementa aplicații, dar am navigat prin acea complexitate cu ajutorul lui Helm (fără joc de cuvinte) și am implementat o instalare fiabilă a Redmine.
Puteți găsi un rezumat al acestui ghid în următorul depozit git: https://github.com/lcofre/redmine-on-k8s. Nu ezitați să comparați cu fișierele dvs. dacă întâmpinați probleme.
Am lăsat unele concepte din discuție pentru că erau complexe sau explicația era specifică pentru cloud. Printre acestea se numără Liveness și Readiness a aplicației dvs., configurarea mesajelor primite și scalarea pentru a gestiona mai multe încărcări. Vă rugăm să ne spuneți mai jos ce vă interesează cel mai mult, astfel încât să putem discuta despre acestea într-un ghid viitor.

Actualizarea finală Redmine? Ușoară.
Obțineți toate instrumentele puternice pentru planificarea, gestionarea și controlul perfect al proiectelor într-un singur software.