Konfigurácia Traefik IngressRoute pre Externú Službu (Zabbix Monitor)

Vytvorené: 24. 8. 2025 14:58 Aktualizované: 27. 8. 2025 13:14
Vyriešené
Obsah článku

title: "Konfigurácia Traefik IngressRoute pre Externú Službu (Zabbix Monitor)"
slug: "k3s-traefik-ingressroute-external-service-zabbix"
technologies: ["Kubernetes (k3s)", "Traefik", "YAML", "IngressRoute", "Middleware"]
tags: ["k3s", "traefik", "ingress", "networking", "external-service", "zabbix"]
date_solved: "2025-08-24"

Projekt/Téma: Konfigurácia Traefik IngressRoute pre Externú Službu (Zabbix Monitor)

  1. Cieľ / Problém na vyriešenie: Cieľom bolo sprístupniť externú službu (Zabbix monitor bežiaci na samostatnej VM) v rámci Kubernetes klastra cez Traefik IngressRoute na zabezpečenej HTTPS adrese monitor.oit.sk.

  2. Použité technológie a nástroje:

    • Orchestrátor: Kubernetes (k3s)
    • Ingress Controller: Traefik
    • Konfiguračný jazyk: YAML
    • Kubernetes objekty: Service (bez selektora), Endpoints, IngressRoute, Middleware
  3. Kľúčové postupy a konfiguračné kroky:

    1. Vytvorenie Service objektu bez selektora, ktorý slúži ako abstraktný cieľ pre Ingress v rámci klastra.
    2. Vytvorenie Endpoints objektu s rovnakým názvom ako Service. Tento objekt manuálne mapuje Service na externú IP adresu a port (napr. 192.168.22.10:80).
    3. Vytvorenie Certificate objektu pre cert-manager, aby sa zabezpečil TLS certifikát pre doménu monitor.oit.sk.
    4. Definovanie IngressRoute pre websecure (HTTPS) entrypoint, ktorý smeruje prevádzku na vytvorený Service.
  4. Výsledné kódy a skripty:

    
    # --- 2. Služba (Service) - Abstrakcia pre routing
    apiVersion: v1
    kind: Service
    metadata:
    name: monitor-external-service
    namespace: monitoring
    spec:
    ports:
    - name: web
    port: 80
    targetPort: 80

--- 3. Koncový bod (Endpoints) - Manuálne prepojenie na externú IP VM

apiVersion: v1 kind: Endpoints metadata: name: monitor-external-service namespace: monitoring subsets:

  • addresses:
    • ip: "192.168.22.10" ports:
    • name: web port: 80 protocol: TCP

--- 7. IngressRoute pre HTTPS (secure)

apiVersion: traefik.io/v1alpha1 kind: IngressRoute metadata: name: monitor-ingress-secure namespace: monitoring spec: entryPoints:

  • websecure routes:
  • match: Host(monitor.oit.sk) kind: Rule services:
    • name: monitor-external-service port: 80 tls: secretName: monitor-tls
  1. Zistené problémy a riešenia (Gotchas):

    • Problém: IngressRoute pre monitor.oit.sk nefungoval a nebol registrovaný v Traefik dashboarde.
    • Riešenie: V definícii IngressRoute (monitor-ingress-secure) sa nachádzal odkaz na Middleware s názvom monitor-basic-auth. Definícia tohto Middleware však bola v konfiguračnom súbore zakomentovaná. Keďže Traefik nenašiel referencovaný Middleware, celý IngressRoute považoval za neplatný. Riešením bolo odstránenie celej sekcie middlewares z definície IngressRoute.
  2. Finálny výsledok / Záver: Po odstránení odkazu na neexistujúci Middleware začal Traefik správne spracovávať IngressRoute a úspešne smerovať HTTPS prevádzku z monitor.oit.sk na externú IP adresu Zabbix servera.

Vyriešené: 24. 8. 2025