Redmine i Kubernetes - Del 2: Installera Redmine

6/30/2020
8 minutes
Lukáš Beňa
Detta är den andra delen av serien om att distribuera Redmine i Kubernetes. I den här artikeln kommer vi att ge instruktioner om hur man distribuerar en pålitlig installation av Redmine.

Återberättelse Del 1

Vid det här laget ser du förmodligen fram emot installationen av Redmine på Kubernetes. Det är ju trots allt det du kom hit för, eller hur?

I Redmine på Kubernetes - Del 1: Förbereda miljön installerade vi Ingress Controller, en komponent för att omdirigera internetförfrågningar inuti ditt kluster, och vi skapade en DNS-domän, redminek8s.ddns.net. Nu behöver vi bara konfigurera HTTPS och vi är redo att distribuera Redmine.


HTTPS med cert-manager

Även om vi kan behålla Redmine som HTTP har HTTPS blivit standarden för webbplatser, så mycket att de flesta webbläsare varnar dig för en säkerhetsrisk när HTTPS inte används av en webbplats.

Att aktivera HTTPS är vanligtvis inte en trivial uppgift, eftersom du behöver köpa ett certifikat och ladda upp det till din webbplats, förnya det efter en viss tid och upprepa processen. Cert-manager automatiserar allt detta, inklusive förnyelse av certifikat och till och med erhåller gratis certifikat. Du kan se mer information på deras webbplats, men jag kommer att förklara allt du behöver veta härnäst.


Installera cert-manager

Utför följande steg för att installera cert-manager i ditt kluster:

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

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

Först lägger du till registret där cert-manager finns och sedan installerar du den senaste versionen.


Anslut till certifikatmyndigheten

Nu behöver vi instruera cert-manager att ansluta till den certifikatleverantör vi väljer. Vi kommer att använda LetsEncrypt, en gratis certifikatmyndighet. Skapa först denna fil (kom ihåg att ersätta <din-e-postadress> med en riktig e-postadress) och döp den till 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-postadress>

    privateKeySecretRef:

      name: letsencrypt

    solvers:

    - http01:

        ingress:

          class: nginx

Tillämpa sedan den på ditt kluster med

kubectl apply -f cluster-issuer.yaml

Grattis! Filen ovan är den första Kubernetes-konfigurationen vi skriver och tillämpar på klustret. Du kanske har märkt att den visar hur man ansluter till LetsEncrypt, men den beskriver också Ingress Controller som vi skapade i Del 1 (klassen: nginx i slutet). Den här typen av konfiguration har några rader med mellanslag för att ange beroende av vissa egenskaper till andra. Behåll dessa mellanslag som visas för att säkerställa att filen läses och tillämpas korrekt.

Nu är ditt kluster aktiverat för HTTPS. När vi installerar en applikation kan vi instruera den att fungera med HTTPS och voilà! Hela processen med att få certifikatet kommer att göras automatiskt i bakgrunden.


Installation av Redmine

Detta är vad vi alla har väntat på. Vi kan installera Redmine på några olika sätt, men det mest bekväma sättet är att använda Helm. Precis som vi gjorde tidigare, först lägger vi till lagret där Redmine finns

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

Men den här gången kommer vi inte att installera direkt, vi kommer att skapa en konfigurationsfil för att ange några anpassade beteenden som vi vill att Redmine ska ha.

Vi kommer att separera alla konfigurationer i egna avsnitt men du lägger dem alla i samma fil, en efter den andra. Döp filen till values.yaml.

Alla Helm-applikationer har en values.yaml-fil med alla möjliga konfigurationer som kan göras för applikationen. När vi skapar vår egen values.yaml definierar vi de ändringar vi vill ha. Alla värden som vi inte inkluderar i vår fil kommer att vara oförändrade i standardfilen.

Alla standardvärden kan också hittas på Helm-applikationens sida, https://hub.helm.sh/charts/bitnami/redmine. Gå vidare och kolla alla konfigurationer.


Första administratörsanvändaren

RedmineAnvändarnamn: adminUser

RedmineLösenord: <mitt-lösenord>

Detta steg är lika nödvändigt som lätt att förstå. Det är vår första användare på Redmine, den som vi kommer att använda för att logga in för första gången.

När Redmine är installerat kommer du att kunna komma åt det med denna användare för att konfigurera din helt nya installation.


PostgreSQL-databas

Som standard kommer vår Helm-installation att kräva att en mariadb-databas skapas. Istället kommer vi att konfigurera vår installation att använda PostgreSQL. Du behöver också lägga till minst ett lösenord för att komma åt denna databas, som du kan se nedan

databaseType: postgresql

mariadb:

  enabled: false

postgresql:

  enabled: true

  postgresqlDatabase: Redmine

  postgresqlUsername: Redmine

  postgresqlPassword: <ett-säkert-lösenord>

Vi måste tydligt tala om för vår installation att vi inte vill att MariaDB ska installeras tillsammans med konfigurationen för PostgreSQL-databasen.


DNS-namnkonfiguration

Konfigurationen nedan är den andra sidan av DNS-konfigurationen vi gjorde i Del 1. Som du kan se aktiverar vi TLS, protokollet bakom HTTPS, och ställer in värdnamnet vi använde när vi skapade vår 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

Också på de två sista raderna länkar vi vår applikation med Ingress Controller och med Cluster Issuer som vi skapade tidigare.

Nu kan vi distribuera Redmine med vår anpassade konfiguration:

helm installera Redmine -f values.yaml bitnami/redmine

Den raden liknar andra helm installera rader vi använde tidigare, men den här gången tillhandahåller vi en anpassad values.yaml. Detta är sättet att anpassa vilken Helm-applikation som helst.

Vi behöver lite mer tålamod ändå, eftersom skapandet av applikationen tar lite tid. Du kan köra det här kommandot för att kontrollera statusen för dina applikationscontainrar:

kubectl få pods --watch

Kommandot kommer att returnera något liknande detta:

NAMN                       KLAR   STATUS    OMSTART   ÅLDER

. . .

redmine-999c68dd9-x7h2k    1/1     Kör   0          6m40s

redmine-postgresql-0       1/1     Kör   0          6m40s

Du måste vänta tills statusen för båda containrarna är Kör och alla är redo 1/1, vilket i mitt fall tog cirka 6 minuter.

Nu är allt klart för att öppna webbläsaren och gå till vår nya distribution:

Redmine är redo


Sammanfattning

Kubernetes är ett komplext verktyg för att distribuera applikationer, men vi navigerade genom den komplexiteten med hjälp av Helm (ingen ordlek avsedd) och distribuerade en pålitlig installation av Redmine.

Du kan hitta en sammanfattning av denna guide i följande git-repo: https://github.com/lcofre/redmine-on-k8s. Känn dig fri att jämföra med dina filer om du fastnar.

Vi lämnade några begrepp utanför diskussionen eftersom de var komplexa eller förklaringen var molnspecifik. Bland dem finns Liveness och Readiness för din applikation, konfiguration av inkommande e-post och skalning för att hantera mer belastning. Låt oss veta nedan vad som intresserar dig mest så kan vi diskutera det i en framtida guide.

Den ultimata Redmine-uppgraderingen? Enkel.

Få alla kraftfulla verktyg för perfekt projektplanering, -hantering och -kontroll i en enda programvara.

Prova Easy Redmine i en 30 dagars gratis provperiod

Fullständiga funktioner, SSL-skyddad, dagliga säkerhetskopior, i din geografiska plats