Nu je een statische site, webapplicatie of beide hebt draaien. Is het wel fijn om deze bereikbaar te hebben met een Let's Encrypt certificaat. In deze handleiding gaan we dit voor elkaar proberen te krijgen. Dit doen we door:
Traefik is een Ingress-controller, deze verwerkt aanvragen als een soort router. Hier zit ook Let's Encrypt bij in, en is uit te bereiden met een aantal interessante opties. Een alternatief is de veelgebruikte Nginx Ingress-controller.
Helm is een package manager voor Kubernetes zoals apt, yum, chocolatey, brew voor de verschillende besturingssystemen. Kijk hier op voor de officiële documentatie of gebruik het tabblad voor jou OS:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
brew install helm
choco install kubernetes-helm
curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Om Traefik te installeren hebben we een aantal zaken nodig:
Het secret is een leeg object waar Traefik certificaten en de aanvraag status in bewaart. Installeer het met met kubectl apply -f secret.yaml
Ook Helm gebruikt repositories voor haar pakketten. Om deze te installeren voor je de volgende commando's uit:
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
Het values.yaml
bestand is iets uitgebreider, hierin staan alle instellingen voor de Traefik applicatie. Alle standaardwaarden van een Helm installatie zitten in het values.yaml
bestand van het pakket. Hier vind je alle standaard waarden van Traefik. Met een eigen values.yaml
bestand overschrijven we deze waarden. Dit wordt gegenereed met het volgende script (op linux). Of kopier de regels van providers:
tot en met de regel voor EOF
in een nieuw bestand (values.yaml) en pas de waarden $K8S_NAMESPACE
en $LETSENCRYPT_EMAIL
aan. Dit script...
Dit is in onze demo omgeving niet meer dan: helm upgrade --install traefik traefik/traefik -f values.yaml --skip-crds
De Custom Resource Definitions hebben wij al voor je geïnstalleerd, hier heb je geen rechten toe.
Voor een eigen cluster gebruik je: helm upgrade --install traefik traefik/traefik -f values.yaml
Traefik heeft een dashboard waarbij je alle routes en regels kunt zien, deze is als volgt te bereiken op http://localhost:9000/dashboard/
kubectl port-forward deployment/traefik 9000:9000
Om het IP van Traefik te vinden kun je dit commando uitvoeren:
kubectl get services
Naar dit IP-adres kun je domeinnamen laten verwijzen, in Traefik kun je regels aanmaken die de domeinnaam aan de goede service koppelt. Wanneer je dit gedaan hebt kunnen we de route(s) aanmaken vervang example.com met jouw domeinnaam: Bovenstaand voorbeeld werkt alleen op entrypoint web
, in values.yaml hebben we ook entrypoint websecure
gedefinieerd. Deze poort gebruikt in deze configuratie standaard Let's Encrypt certificaten. Om een verbinding naar dezelfde service te creëren, maken we het volgende aan (zoek de verschillen): Deze regels kun je dan op je Traefik dashboard actief zien, en als er problemen zijn laat deze dit ook weten. Ook kun je kubectl get ingressroutes
uitvoeren om hier een lijst van op te vragen. Je kunt standaard redirect naar websecure
inschakelen in het values.yaml
bestand, door bij ports de regels met web:
en redirectTo: websecure
te activeren. Wil je de controle per hostname? Dan kun je Traefik Middleware gebruiken. Deze middleware biedt extra functionaliteit, zo kun je ook bijvoorbeeld HTTP Authenticatie hiermee aanzetten en nog veel meer. De redirect stel je als volgt in: Als het goed is heb je nu wat kennis over Kubernetes om een applicatie online te krijgen. Ga lekker spelen en mocht je een overzichtje nodig hebben met wat kubectl commando's kijk dan even op de cheatsheet pagina!