Skip to content

Latest commit

 

History

History
110 lines (70 loc) · 3.57 KB

Safespring.md

File metadata and controls

110 lines (70 loc) · 3.57 KB

Så här konfigurerar du Kubernetes på Safesprings molntjänst i Sverige

Sätt upp servrarna i Safespring

Det här steget kan man göra med en anann leverantör

  1. Beställ konto på Safespring. Hälsa från oss så blir vi glada.
  2. Skapa en ny security group som du döper tex till 'public' med följande portar öppna:

image

  1. Launch Instance - Välj Ubuntu 20.04 och en nod med lokal lagring, t ex lb.large.1d. Skapa tre stycken och glöm inte att att välja din security group. image

Installera Microk8s

  1. ssh ubuntu@ip-adressen till dina noder

  2. sudo snap install microk8s --classic

  3. Lägg till din användare i microk8s gruppen så att du slipper köra sudo för varje kommando:

    sudo usermod -a -G microk8s ubuntu
    sudo chown -f -R ubuntu ~/.kube
    newgrp microk8s
  4. Från en av noderna:

    microk8s add-node

Nu får du instruktioner att köra på en av de andra noderna. T ex microk8s join xxx:25000 Här kan du välja om du ska ha en master-nod och flera worker noder. Vi brukar välja att varje nod är både worker och master, välj då översta alternativet.

  1. Lägg till de add-ons du vill använda:

    microk8s enable dns ingress helm3 registry storage
  2. Lägg till externa IP som IP.100 i denna så att du kan nå klustret utifrån utan varningar. Upprepa för varje nod.

    sudo vim /var/snap/microk8s/current/certs/csr.conf.template
    sudo /snap/bin/microk8s refresh-certs
  3. Nu är du redo att ansluta till dina noder. Så här hämtar du config till servrarna:

    microk8s config

    Lägg in detta i din lokala ~/kube/config

  4. Så ska du nu kunna komma åt noderna:

    kubectl get nodes
  5. Lägg till nodernas ip i /etc/hosts

Av någon anledning så får man 'dns host resolve' fel när man försöker köra kubectl logs på en nod som inte är den du ansluter till. Workaround är att lägga till nodernas IP i /etc/hosts - på den maskinen som du ansluter dig till men enklast är att göra det på samtliga noder.

```bash
xx.yy.zz microk8s-1
xx.yy.z2 microk8s-2
xx.yy.z3 microk8s-3
```

Cert manager

För att aktivera automatisk TLS i ditt kluster så kör du cert-manager. Så här installerar du cert-manager:

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml

OBS! Redigera emailadress i k8s/letsencrypt.yaml

kubectl apply -f k8s/letsencrypt.yaml

Testa allt tillsammans

kubectl apply -f k8s/web.yaml

Longhorn distribuerad lagring

För att köra något som kräver lagring på noderna så behöver du först installera en distribuerad lagring. Vi använder ofta Longhorn men det finns olika. Longhorn har inbyggd backup till S3 vilket är väldigt praktiskt. Så här installerar du Longhorn:

helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --set csi.kubeletRootDir=/var/snap/microk8s/common/var/lib/kubelet --set defaultSettings.defaultDataPath=/data

Skaffold

IPv6

För att aktivera IPv6 så behöver man fortfarande pilla en del med interna filer på klustret men följer man den här guiden (hoppa över brandväggsreglerna) så fungerar det: https://discuss.kubernetes.io/t/microk8s-ipv6-dualstack-how-to/14507