Winkelwagen

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    Traefik installeren en gebruiken met Kubernetes

    Traefik is een populaire open-source reverse proxy en load balancer, ontworpen voor microservices en containerized applicaties. Traefik kan automatisch de services ontdekken die in een Kubernetes-cluster draaien en het verkeer naar deze services routeren met behulp van verschillende load balancing-algoritmes.

    Traefik opereert voor andere services binnen je cluster. Met Traefik kun je meerdere applicaties op een Kubernetes-cluster hosten waarvan het verkeer verloopt via Traefik. Traefik kan dan als één enkele loadbalancer functioneren voor al deze applicaties en bovendien Let's Encrypt SSL-certificaten verstrekken.

    In deze handleiding laten we zien hoe je Traefik installeert en gebruikt.

    Voor deze handleiding heb je nodig:


    Traefik installeren

     

    Stap 1

    Voeg de officiele Traefik repository toe en update je Helm-repositories om die te kunnen gebruiken:

    helm repo add traefik https://helm.traefik.io/traefik
        helm repo update

     

    Stap 2

    Traefik kan Let's Encrypt certificaten genereren voor applicaties die via Traefik communiceren. In deze handleiding gaan we ervan uit dat je dit ook voor jouw use case wil gebruiken. Hiervoor gebruik je een acme dns challenge provider. Via onze API ondersteunen wij deze optie. Let wel dat de provider die je kiest deze functionaliteit moet ondersteunen en dat de domeinen die je gebruikt zijn geregistreerd bij die provider in het account dat je voor deze handleiding gebruikt.

    Maak een directory aan waarin je je TransIP API key gaat opslaan, bijvoorbeeld:

    mkdir transip

    Maak vervolgens een bestand in de zojuist aangemaakte directory met daarin een private key van jouw account voor de TransIP API, bijvoorbeeld:

    cat << EOF > transip/transip.key
        -----BEGIN PRIVATE KEY-----
        MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDKoaYJtbVnJw58
        PYGH8WIJ7ZjWd2lke0IbMV+dNGs=
        -----END PRIVATE KEY-----
        EOF

    In dit voorbeeld is maar een klein fragment van een private key opgenomen. Jouw private key zal een stuk langer zijn.


     

    Stap 3

    Maak een namespace aan voor Traefik binnen je cluster:

    kubectl create ns traefik

     

    Stap 4

    Genereer een secret op basis van jouw API Private Key die door Traefik gebruikt kan worden om met de TransIP API te communiceren. Vervang hier eventueel de volgende gegevens:

    • -n traefik: Gebruik de naam van de namespace die je in stap 3 hebt aangemaakt.
    • transip/transip.key: Verander naar de directory en bestandsnaam die je in stap 2 hebt aangemaakt.
    kubectl create -n traefik secret generic transip-key --from-file transip/transip.key

     

    Stap 5

    Voor de installatie van Traefik gebruiken we in de volgende stap de officiële Helm Chart. Daarnaast maken we een paar aanpassingen; maak hiervoor een .yaml bestand aan, bijvoorbeeld:

    nano traefik.yaml

    Geef het bestand de inhoud hieronder, waarbij je twee velden aanpast:

    • jouwaccount: Verander jouwaccount naar de naam van jouw TransIP-account.
    • /transip/transip.key: Verander (indien nodig) naar de directory en bestandsnaam die je in stap 2 hebt aangemaakt.
    additionalArguments:
          - "--certificatesresolvers.myresolver.acme.dnschallenge.provider=transip"
          - "--certificatesresolvers.myresolver.acme.dnschallenge.delaybeforecheck=120"
          - "--certificatesresolvers.myresolver.acme.storage=/data/acme.json"
        env:
          - name: TRANSIP_ACCOUNT_NAME
            value: jouwaccount
          - name: TRANSIP_PRIVATE_KEY_PATH
            value: /transip/transip.key
        volumes:
          - name: transip-key
            mountPath: "/transip"
            type: secret
        rbac:
          enabled: true
        ports:
          websecure:
            tls:
              enabled: true
        dashboard:
          enable: true
          ingressRoute: false
        podAnnotations:
          prometheus.io/port: "8082"
          prometheus.io/scrape: "true"
        providers:
          kubernetesIngress:
            publishedService:
              enabled: true
        priorityClassName: "system-cluster-critical"
        image:
          name: "rancher/library-traefik"
        tolerations:
        - key: "CriticalAddonsOnly"
          operator: "Exists"
        - key: "node-role.kubernetes.io/control-plane"
          operator: "Exists"
          effect: "NoSchedule"
        - key: "node-role.kubernetes.io/master"
          operator: "Exists"
          effect: "NoSchedule"

    Toelichting op code

    • --certificatesresolvers.myresolver.acme.dnschallenge.provider=transip: Configureert de DNS challenge provider voor Let's Encrypt om de TransIP DNS API te gebruiken
    • --certificatesresolvers.myresolver.acme.dnschallenge.delaybeforecheck=120: 120 seconden vertraging voor er gecontroleerd wordt op DNS propagatie
    • --certificatesresolvers.myresolver.acme.storage=/data/acme.json: Opslaglocatie voor gegenereerde certificaten
    • env.name.value: jouwaccount: De TransIP-account naam die voor de DNS challenge authenticatie wordt gebruikt
    • env.name.value: /transip/transip.key: Waar de private key voor het TransIP-account zich bevindt
    • volumes.name: transip-key: Configureer een volume om de TransIP private key te mounten in de Traefik container. Dit is nodig om met de TransIP DNS API te kunnen communiceren
    • rbac.enabled: true: Schakelt Role Based Access Control in voor Traefik. Dit geeft gedetailleerde controle over Kubernetes resources en de Kubernetes API
    • ports.websecure.tls: enabled: true Schakel TLS in voor het Traefik dashboard. Als je die enkel lokaal benadert (zie volgende stap) dan is dit optioneel
    • dashboard: enable: true: Schakel de Traefik dashboard in
    • dashboard.ingressRoute: false Schakel het aanmaken van een IngressRoute voor het dashboard uit.
    • podAnnotations: prometheus.io/port: "8082": Configureer de poort die gebruikt wordt voor het exposen van Prometheus metrics
    • podAnnotations:prometheus.io/scrape: "true": Schakel Prometheus scraping in voor de Traefik pod
    • providers: kubernetesIngress: publishedService: enabled: true: Schakel de optie in voor Traefik om Kubernetes Ingress resources te ontdekken
    • priorityClassName: "system-cluster-critical": Stelt een priority class in voor Traefik
    • image: name: "rancher/library-traefik": De image die gebruikt wordt voor de deployment
    • Tolerations: - key: "CriticalAddonsOnly": Taint key enkel voor kritieke add-ons
    • Tolerations: - key: "node-role.kubernetes.io/control-plane": Taint key voor de control plane nodes operator. Met "NoSchedule" wordt scheduling uitgezet.
    • Tolerations- key: "node-role.kubernetes.io/master": Taint key voor de master nodes operator waar ook hier via "NoSchedule" scheduling wordt uitgezet.

     

    Stap 6

    Installeer de Traefik Helm Chart met het commando hieronder.

    helm install -f traefik.yaml traefik traefik/traefik -n traefik
    • helm install: Installeert de Helm Chart.
    • -f traefik.yaml: Het bestand uit stap 5 waarmee we de installatie aanpassen.
    • traefik: De naam van de Helm 'release', te controleren met het commando 'helm list'.
    • traefik/traefik: Respectievelijk de naam van de repository en te installeren Helm Chart.
    • -n traefik: De namespace waarin de Helm release wordt geïnstalleerd, zie stap 3.

    De Traefik dashboard

     

    Traefik komt met een webinterface waarmee je inzage krijgt in de status van je Kubernetes-cluster en het verkeer dat door je cluster verwerkt wordt. Het toont informatie over de routers en services die gebruikt worden om verkeer te verwerken en de gebruikte loadbalancing algoritmes. Het dashboard geeft je ook de mogelijkheid om logs en metrics te bekijken die door Traefik gegenereerd worden. Het dashboard is dus een handige tool voor het monitoren en troubleshooten van Traefik.

    Om gebruik te maken van het Traefik dashboard gebuik je het volgende commando:

    kubectl port-forward pod/traefik-6598fc985c-tg748 9000:9000 -n traefik

    Vervang traefik aan het eind door de namespace waar Traefik zich in bevindt en traefik-6598f985-tg748 door de naam van de Traefik pod. Beide kun je controleren met respectievelijk de volgende commando's:

    kubectl get ns
        kubectl get pods -n traefik

    Je kunt nu de Traefik dashboard bekijken in een browser vanaf de computer waarop je het eerste commando hebt uitgevoerd op het adres: http://127.0.0.1:9000/dashboard/

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op