Redmine i Kubernetes - Del 1: Forberedelse af miljøet

6/22/2020
6 minutter
Lukáš Beňa

I denne to-delte serie vil vi implementere Redmine i Kubernetes. Vi vil bruge anbefalede værktøjer og metoder med det formål at implementere en robust instans af Redmine over HTTPS.

Vi har opdelt denne vejledning i at dele for at fokusere først på installation af maskiner og komponenter, som Redmine-implementeringen vil bruge. Men bekymrer dig ikke om kompleksiteten. Selvom du er ny til Kubernetes, vil det være en forståelig forklaring.

Denne vejledning blev skrevet for at være sky-agnostisk, så vi undlod bevidst alle omtaler af den sky, vi brugte. Efterlad en kommentar, hvis du kan gætte, hvilken sky vi brugte, og fortæl os, hvilken detalje der afslørede det. Vi anbefaler dig at bruge Kubernetes-tjenesten, som din sky tilbyder, da den er godt integreret med andre tjenester, som din sky også tilbyder.

Miljøer som microk8s eller minikube er ikke taget i betragtning her, da de kræver lidt mere konfiguration, som er uden for denne vejlednings omfang. Især kræver vores HTTPS-konfiguration, på vores klynge har en offentlig IP-adresse.


Lad os bruge Helm

Kubernetes er et komplekst værktøj til container-orkestrering. Der er mange begreber, vi skal lære for at komme i gang. Heldigvis er der et projekt kaldet Helm, som giver det abstraktionsniveau, vi har brugt for. I deres egne ord "Hvis vi gjorde tingene rigtigt, kunne brugere installere Helm og inden for få minutter at installere komponenter af produktionskvalitet ud af hylden"

Uden at gå ind i årsagerne til deres navne (det hele fortæller historien om en metafor, Helm, Kubernetes og Containere) gør helm virkelig installationen lettere, samtidig med at der er plads til at tilpasse komponenten til vores behov. Vi vil bruge Helm 3, deres nyeste og endnu enklere version.

Hvis du bruger skyens shell fra din skyudbyder, er der stor sandsynlighed for, at Helm 3 allerede er tilgængelig, men hvis ikke du kan installere det ved at følge vejledningen, som Helm-dokumentationen giver, helm.sh/docs/intro/install/. Du skal allerede have adgang til din klynge fra den kommandolinje, du bruger. Din skyudbyder har også en vejledning om, hvordan du gør det.


Installatør Ingress Controller

Dette er den første komponent, vi vil installere i vores klynge, og det er også det første Kubernetes-koncept, vi vil se. En Ingress-controller sidder ved indgangsdøren til din klynge, modtager alle webanmodninger og omdirigerer dem til den interne komponent, der er ansvarlig for at besvare anmodningen. I starten vil der ikke være nogen klar til at besvare, men når vi installerer Redmine, vil det blive tilføjet som en destination for anmodningerne.

Kubernetes leverer NGINX Ingress-controller, som vi vil bruge. Deres dokumentation forklarer, hvordan man installerer det ved hjælp af Helm:

roret repo tilføj ingress-nginx https://kubernetes.github.io/ingress-nginx && roret repo-opdatering

ror installer ingress-controller ingress-nginx / ingress-nginx

Den første kommando tilføjer applikationsrepositoryen, hvor ingress-controlleren er, mens den anden installerer den i din klynge. Når installationen er færdig, udskriver kommandoen nogle oplysninger for at komme i gang, herunder hvordan man får den offentlige IP, der er tildelt controlleren:

kubectl få tjenester - ur

Resultatet vil være noget lignende dette:

NAVN TYPE CLUSTER-IP EKSTERN-IP-PORT(E) ALDER

nginx-controller LoadBalancer 10.0.115.117 89.68.23.33 80 / TCP, 443 / TCP 5m22s

controller-adgang ClusterIP 10.0.135.226 443 / TCP 5m22s

kubernetes ClusterIP 10.0.0.1 443 / TCP 44h

Bemærk EXTERNAL-IP, da vi vil have brug for det i næste trin. Det kan ske, at værdien, du får der, i stedet for en IP er . Det tager lidt tid for skyen at få en offentlig IP og tildele den til din klynge. Vent bare et par sekunder mere, og IP'en burde være tilgængelig.


Opret en DNS A-post

Nu hvor du har IP'en, kan du bare gå til en browser og se, hvordan dit cluster svarer dig. Selvfølgelig, da der endnu ikke er installeret nogen applikation, vil dit cluster svare med en "404 Not Found" fejl. Vi vil oprette et DNS-domæne, som vi kan associere med den IP, forhåbentlig nemmere at huske end en liste af tal og prikker.

Måden at oprette et internetdomæne for din Redmine virksomhed i høj grad af din domæneudbyder, men i alle tilfælde ender du med at oprette en DNS A-post, der forbinder et domænenavn med din IP. Se følgende skærmbillede fra DNS-udbyderen no-ip.com som reference.

Oprettelse af vores DNS A-post

De data, der skal udfyldes, som du nok forventer, er DNS-navnet og IP'en. No-IP er lige det, vi har brugt for at illustrere oprettelsen af ​​et domæne, men du vil sandsynligvis vælge en anden DNS-udbyder. Processen er ret ens i dem alle.

Det tager lidt tid for den nye post at sprede sig, så du kan bruge ping til at kontrollere, hvornår IP'en er korrekt opløst:

ping redminek8s.ddns.net


Næste trin

Nu hvor vi har en ingress-controller og et DNS-domæne, er det eneste, der mangler, at konfigurer HTTPS til vores hjemmeside og installere Redmine. Vi vil bruge PostgreSQL som vores database, men du vil se, hvor nemt det er at konfigurere alt ved hjælp af Helm.

Hold dig opdateret på Redmine i Kubernetes Del 2: Installation af Redmine.

Den ultimative Redmine-opgradering? Nemt.

Få alle kraftfulde værktøjer til perfekt projektplanlægning, -styring og -kontrol i en enkelt software.

Prøv Easy Redmine i en 30 dages gratis prøveperiode

Fuld funktionalitet, SSL-beskyttet, daglige backups, og din geolocation