Redmine in Kubernetes - Parte 1: Preparazione dell'Ambiente

6/22/2020
6 minuti
Lukáš Beňa -> Lukáš Beňa

In questa serie in due parti, installeremo Redmine in Kubernetes. Utilizzeremo strumenti e pratiche consigliati con l'obiettivo di distribuire un'istanza resiliente di Redmine su HTTPS.

Abbiamo diviso questa guida in due parti per concentrarci prima sull'installazione degli strumenti e dei componenti che verranno utilizzati per la distribuzione di Redmine. Ma non preoccuparti per la complessità. Anche se sei nuovo a Kubernetes, sarà una spiegazione comprensibile.

Questa guida è stata scritta per essere indipendente dalla nuvola, quindi abbiamo intenzionalmente omesso tutte le menzioni del cloud che abbiamo utilizzato. Lascia un commento se riesci a indovinare il cloud che abbiamo utilizzato e dicci quale dettaglio lo ha rivelato. Ti consigliamo di utilizzare il servizio Kubernetes offerto dal tuo cloud, poiché è ben integrato con gli altri servizi forniti dal tuo cloud.

Ambienti come microk8s o minikube non sono considerati qui poiché richiedono una configurazione aggiuntiva che esula dallo scopo di questa guida. In particolare, la nostra configurazione HTTPS richiede che il nostro cluster abbia un IP pubblico.


Usiamo Timone

Kubernetes è uno strumento complesso per l'usoorchestrazione dei contenitori. Ci sono molti concetti che dobbiamo imparare per iniziare. Fortunatamente c'è un progetto chiamato Casco che fornisce il livello di astrazione di cui abbiamo bisogno. Con le loro parole "Se abbiamo fatto le cose giuste, gli utenti potrebbero installare Helm e poi, entro pochi minuti, installare componenti preconfezionati di qualità produttiva".

Tralasciando le ragioni dei loro nomi (tutto racconta la storia di una metafora, Helm, Kubernetes e Containers), Helm semplifica davvero l'installazione consentendo allo stesso tempo di personalizzare i componenti alle nostre esigenze. Utilizzeremo Helm 3, la loro ultima e ancora più semplice versione.

Se usi la shell del cloud del tuo provider, è probabile che Helm 3 sia già disponibile, ma se non lo è, puoi installarlo seguendo la guida fornita dalla documentazione di Helm, helm.sh/docs/intro/install/. Devi già avere accesso al tuo cluster dalla riga di comando che usi. Il tuo provider cloud ha una guida su come fare anche questo.


Installare il controller Ingress

Questo è il primo componente che installeremo nel nostro cluster ed è anche il primo concetto di Kubernetes che vedremo. Un controller Ingress si trova alla porta d'ingresso del tuo cluster, riceve tutte le richieste web e le reindirizzamenti al componente interno responsabile di rispondere alla richiesta. Inizialmente, non ci sarà nessuno pronto a rispondere, ma quando installeremo Redmine, verrà aggiunto come destinazione per le richieste.

Kubernetes fornisce il ingresso del controller NGINX che useremo. La loro documentazione spiega come installarlo utilizzando Helm:

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

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

Il primo comando aggiunge il repository delle applicazioni dove si trova il controller Ingress, mentre il secondo lo installa nel tuo cluster. Quando finito, il comando stamperà alcune informazioni per iniziare, inclusa la modalità per ottenere l'indirizzo IP pubblico assegnato al titolare del trattamento:

kubectl ottieni servizi --watch

Il risultato sarà simile a questo:

NOME TIPO CLUSTER-IP ESTERNO-PORTE IP ETA'

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

Controller-ammissione ClusterIP 10.0.135.226 443 / TCP 5m22s

Kubernetes ClusterIP 10.0.0.1 443 / TCP 44h

Prendi nota dell'EXTERNAL-IP poiché ne avremo bisogno nel passaggio successivo. Potrebbe accadere che invece di un IP il valore che ottieni sia . Ci vuole del tempo per il cloud per ottenere un IP pubblico e assegnarlo al tuo cluster. Aspetta solo qualche secondo in più e l'IP dovrebbe essere disponibile.


Crea un record DNS A

Ora che hai l'IP, puoi semplicemente andare su un browser e vedere come risponde il tuo cluster. Naturalmente, poiché non è ancora installata alcuna applicazione, il tuo cluster risponderà con un errore "404 Not Found". Crea un dominio DNS che possiamo associare a quell'IP, sperando che sia più facile da ricordare di una lista di numeri e punti.

Il modo di creare un dominio internet per il tuo Redmine dipende molto dal tuo fornitore di dominio, ma in tutti i casi, finirai per creare un record DNS che collega un nome di dominio al tuo IP. Vedi come riferimento la seguente schermata dal provider DNS no-ip.com.

Creazione del nostro record DNS A

I dati da completare, come ci si potrebbe aspettare, sono il nome DNS e l'IP. No-IP è proprio ciò di cui abbiamo bisogno per illustrare la creazione di un dominio, ma probabilmente o sceglierai un provider DNS diverso. Il processo è abbastanza simile in tutti loro.

Ci vuole del tempo perché il nuovo record si propaghi, quindi puoi usare il ping per verificare quando l'IP viene risolto correttamente:

eseguire il ping di redminek8s.ddns.net


Passaggi successivi

Ora che abbiamo un controller di ingresso e un dominio DNS, l'unica cosa che resta è configurare HTTPS per il nostro sito e installare Redmine. Utilizzeremo PostgreSQL come il nostro database, ma vedrai quanto è facile configurare tutto usando Helm.

Rimani sintonizzato per Redmine in Kubernetes Parte 2: Installazione di Redmine.

L'aggiornamento definitivo di Redmine? Facile.

Ottieni tutti gli strumenti potenti per una pianificazione, gestione e controllo del progetto perfetti in un unico software.

Prova Easy Redmine gratuitamente per 30 giorni

Funzionalità completa, protetto da SSL, backup giornalieri, nella tua geolocalizzazione