Redmine i Kubernetes – Del 1: Forbereder miljøet

6/22/2020
6 minutes
Lukáš Beňa
I denne todelte serien vil vi distribuere Redmine til Kubernetes. Vi vil bruke anbefalte verktøy og praksis med mål om å distribuere en robust instans av Redmine over HTTPS.

Vi delte denne veiledningen i to deler for å først fokusere på installasjon av verktøy og komponenter som Redmine-implementeringen vil bruke. Men ikke bekymre deg for kompleksiteten. Selv om du er ny på Kubernetes, vil det være en forståelig forklaring.

Denne veiledningen ble skrevet for å være sky-uavhengig, så vi utelot med vilje alle referanser til skyen vi brukte. Legg igjen en kommentar hvis du kan gjette hvilken sky vi brukte, og fortell oss hvilke detaljer som avslørte det. Vi anbefaler deg å bruke Kubernetes-tjenesten som skyen din tilbyr, da den er godt integrert med andre tjenester som skyen din også tilbyr.

Miljøer som microk8s eller minikube er ikke inkludert her, da de krever litt mer konfigurasjon som er utenfor omfanget av denne veiledningen. Spesielt krever vår HTTPS-konfigurasjon at klyngen vår har en offentlig IP-adresse.


La oss bruke Helm

Kubernetes er et komplekst verktøy for kontainerorkestrering. Det er mange begreper vi må lære for å komme i gang. Heldigvis er det et prosjekt som heter Helm som gir det nivået av abstraksjon vi trenger. Med deres egne ord: "Hvis vi gjorde ting riktig, kunne brukere installere Helm og deretter innen minutter installere komponenter av produksjonskvalitet rett fra hylla".

Uten å gå inn på grunnene til navnene deres (det forteller hele historien om en metafor, Helm, Kubernetes og kontainere), gjør helm virkelig installasjonen enklere samtidig som det gir rom for tilpasning av komponenten etter våre behov. Vi vil bruke Helm 3, deres nyeste og enda enklere versjon.

Hvis du bruker skyens skall fra skytilbyderen din, er sjansene store for at Helm 3 allerede er tilgjengelig, men hvis ikke kan du installere det ved å følge veiledningen som Helm-dokumentasjonen gir, helm.sh/docs/intro/install/. Du må allerede ha tilgang til klyngen din fra kommandolinjen du bruker. Skytilbyderen din har også en veiledning om hvordan du gjør det.


Installer Ingress Controlleren

Dette er den første komponenten vi vil installere i klyngen vår, og er også det første Kubernetes-konseptet vi vil se. En Ingress-controller sitter ved inngangsdøren til klyngen din, mottar alle webforespørsler og omdirigerer dem til den interne komponenten som er ansvarlig for å svare på forespørselen. I begynnelsen vil det ikke være noen klar til å svare, men når vi installerer Redmine, vil det bli lagt til som en destinasjon for forespørslene.

Kubernetes tilbyr NGINX Ingress Controlleren som vi vil bruke. Dokumentasjonen deres forklarer hvordan du installerer den ved hjelp av Helm:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && helm repo update

helm install ingress-controller ingress-nginx/ingress-nginx

Den første kommandoen legger til applikasjonsrepositoryen der ingress-controlleren er, mens den andre installerer den i klyngen din. Når den er ferdig, vil kommandoen skrive ut noen opplysninger for å komme i gang, inkludert hvordan du får den offentlige IP-adressen som er tildelt til kontrolleren:

kubectl get services --watch

Resultatet vil være noe lignende dette:

NAVN                   TYPE           KLUSTER-IP     EKSTERN-IP      PORTER          ALDER

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

controller-admission   ClusterIP      10.0.135.226   <none>           443/TCP          5m22s

kubernetes             ClusterIP      10.0.0.1       <none>           443/TCP          44t

Merk deg EKSTERN-IP, da vi vil trenge den i neste trinn. Det kan hende at verdien du får der i stedet for en IP er <pending>. Det tar litt tid for skyen å skaffe en offentlig IP og tildele den til klyngen din. Bare vent noen få sekunder til, og IP-adressen skal være tilgjengelig.


Opprett en DNS A-post

Nå som du har IP-adressen, kan du bare gå til en nettleser og se hvordan klyngen din svarer. Selvfølgelig, siden ingen applikasjon er installert ennå, vil klyngen svare med en "404 Not Found" feilmelding. Vi vil opprette et DNS-domene som vi kan knytte til den IP-adressen, forhåpentligvis lettere å huske enn en liste med tall og punktum.

Måten å opprette et internett-domene for din Redmine avhenger i stor grad av din domeneleverandør, men i alle tilfeller ender du opp med å opprette en DNS A-post som kobler et domenenavn til IP-adressen din. Se følgende skjermbilde fra DNS-leverandøren no-ip.com som referanse.

Opprette vår DNS A-post

Dataene du må fylle ut, som du kanskje forventer, er domenenavnet og IP-adressen. No-IP er akkurat det vi trenger for å illustrere opprettelsen av et domene, men du vil sannsynligvis velge en annen DNS-leverandør. Prosessen er ganske lik i alle sammen.

Det tar litt tid for den nye posten å spre seg, så du kan bruke ping for å sjekke når IP-adressen blir løst riktig:

ping redminek8s.ddns.net


Neste steg

Nå som vi har en ingress-kontroller og et DNS-domene, er det eneste som gjenstår å konfigurere HTTPS for nettstedet vårt og installere Redmine. Vi vil bruke PostgreSQL som vår database, men du vil se hvor enkelt det er å konfigurere alt ved hjelp av Helm.

Følg med på Redmine in Kubernetes Part 2: Installing Redmine.

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