KI für DevOps-Engineers – Teil 1: Die Grundlagen von DevOps-KI
DevOps ist ein entscheidender Erfolgsfaktor in der Softwareentwicklung, und wir sind definitiv alle auf die eine oder andere Weise auf KI gestoßen. Eine
In der heutigen schnelllebigen Cloud-nativen Landschaft ist der Bedarf an effizienter Dienst-Orchestrierung, Dienst-Entdeckung und sicherer Kommunikation zwischen Diensten entscheidend. HashiCorp Nomad, Consul Connect und Traefik bilden eine leistungsstarke Kombination, die den Einsatz, die Entdeckung und das Load-Balancing von Diensten mit integrierten Sicherheitsfunktionen vereinfacht. In diesem Beitrag wird untersucht, wie diese Tools zusammen verwendet werden können, um Dienste in einer dynamischen Umgebung effizient zu verbinden und zu verwalten.
Durch die Integration dieser Technologien können wir effiziente Dienst-Orchestrierung, sichere Service-Mesh-Fähigkeiten und intelligentes Traffic-Routing in einer dynamischen Cluster-Umgebung erreichen.
Beim Betrieb von Diensten in einer verteilten Umgebung benötigen Sie mehr als nur einen Orchestrator. Hier sind die Gründe, warum jede Komponente wichtig ist:
Nomads Orchestrierung: Nomad ermöglicht es Ihnen, Jobs mühelos über mehrere Knoten hinweg auszuführen. Es verwaltet sowohl containerisierte als auch Legacy-Workloads und ist damit ein vielseitiges Tool für den Einsatz.
Consul Connects Sicherheit: Consul stellt eine sichere Dienst-zu-Dienst-Kommunikation mit mTLS bereit. Das bedeutet, dass alle Dienste, die über Consul Connect kommunizieren, authentifiziert und verschlüsselt sind.
Traefiks Load-Balancing: Traefik integriert sich mit Consuls Dienst-Entdeckung, um als Ingress-Controller und Load-Balancer für Ihre Nomad-Jobs zu fungieren und Traffic intelligent auf Basis von Echtzeit-Dienstinformationen zu routen.
Dieser Stack beseitigt die Komplexität, verschiedene Schichten für Dienst-Entdeckung, Load-Balancing und Sicherheit zu verwalten, indem er einen nahtlosen, integrierten Ansatz bietet.
Wir folgen unseren in früheren Blogposts verwendeten Beispielen, um Workloads mit HashiCorp Vault gesicherten Geheimnissen bereitzustellen und sichere Kommunikation zwischen Diensten mit Consul Connect zu gewährleisten.
Zunächst müssen Sie einen Nomad-Cluster bereitstellen. Nomad ist leichtgewichtig und kann auf jeder Infrastruktur laufen, von Bare-Metal bis hin zu Kubernetes. Sobald Nomad läuft, können Sie Jobs mithilfe seines HCL-basierten Job-Spezifikationsformats definieren. Diese Jobs beschreiben, wie und wo Anwendungen bereitgestellt werden sollen.
Hier ist unser aktualisierter dynamic-app
Nomad-Job, der Consul Connect Sidecar-Proxys beinhaltet. Dieser Job setzt einen einfachen Webdienst ein, der sich mit einer MySQL-Datenbank verbindet und Vault verwendet, um Datenbank-Anmeldeinformationen sicher abzurufen. Der Dienst wird für die sichere Kommunikation bei Consul Connect registriert. Wir haben auch Traefik-Tags hinzugefügt, um den Dienst über Traefik verfügbar zu machen – den Load-Balancer und Ingress-Controller.
1job "dynamic-app" {
2 datacenters = ["dc1"]
3 type = "service"
4 namespace = "demo"
5
6 group "dynamic-app" {
7 count = 1
8
9 restart {
10 attempts = 10
11 interval = "5m"
12 delay = "25s"
13 mode = "delay"
14 }
15
16 network {
17 mode = "bridge"
18 }
19
20 vault {
21 policies = ["nomad-dynamic-app"]
22 change_mode = "signal"
23 change_signal = "SIGINT"
24 }
25
26 service {
27 name = "dynamic-app"
28 port = "8080"
29 tags = ["traefik.enable=true",
30 "traefik.http.routers.dynamic-app.rule=Host(`dynamic-app.127.0.0.1.nip.io`)",
31 "traefik.http.routers.dynamic-app.entrypoints=http",
32 "traefik.http.routers.dynamic-app.tls=false",
33 "traefik.connsulcatalog.connect=true"
34 ]
35 connect {
36 sidecar_service {
37 proxy {
38 upstreams {
39 destination_name = "mysql-server"
40 local_bind_port = 3306
41 }
42 }
43 }
44 }
45 check {
46 expose = true
47 type = "http"
48 name = "health"
49 method = "GET"
50 interval = "10s"
51 timeout = "2s"
52 path = "/health"
53 }
54 }
55
56 task "dynamic-app" {
57 driver = "docker"
58
59 config {
60 image = "ghcr.io/infralovers/nomad-vault-mysql:1.0.0"
61 volumes = [
62 "local/config.ini:/usr/src/app/config/config.ini"
63 ]
64 ports = [8080]
65 }
66
67 template {
68 destination = "local/config.ini"
69 data = <<EOF
70 [DEFAULT]
71 LogLevel = DEBUG
72 Port = 8080
73 [DATABASE]
74 Address = 127.0.0.1
75 Port = 3306
76
77 Database = my_app
78 {{ with secret "dynamic-app/db/creds/app" }}
79 User = {{ .Data.username }}
80 Password = {{ .Data.password }}
81 {{ end }}
82
83 [VAULT]
84 Enabled = True
85 InjectToken = True
86 Namespace =
87 Address = {{ env "VAULT_ADDR" }}
88 KeyPath = dynamic-app/transit
89 KeyName = app
90EOF
91 }
92 resources {
93 cpu = 256
94 memory = 256
95 }
96 }
97 }
98}
Dieser Nomad-Job führt einen dynamic-app
Webdienst aus und registriert ihn bei Consul Connect für sichere Kommunikation.
Consul Connect ermöglicht es Diensten, die in Consul registriert sind, sicher über mTLS zu kommunizieren. Im obigen Beispiel-Job haben wir einen Consul Connect Sidecar-Proxy für den Webdienst konfiguriert. Dieser Proxy verschlüsselt und entschlüsselt den Traffic zwischen den Diensten.
Traefik integriert sich nahtlos mit Consul zur Dienst-Entdeckung und zum Routing. In unserem Setup wird Traefik automatisch Dienste, die in Consul registriert sind, erkennen und den Traffic zu ihnen leiten.
Hier ist ein Traefik-Konfigurationsausschnitt für die Consul-Integration:
1entryPoints:
2 web:
3 address: ":80"
4
5providers:
6 consulCatalog:
7 endpoint:
8 address: "127.0.0.1:8500"
9 exposedByDefault: false
10 connectAware: true
11 connectByDefault: true
12
13api:
14 dashboard: true
15 insecure: true
Mit dieser Konfiguration fungiert Traefik als Reverse Proxy und Load-Balancer für alle in Consul registrierten Dienste, einschließlich derjenigen, die mit Nomad bereitgestellt werden.
Sie müssen Tags zu Ihrem Nomad-Job hinzufügen, um Dienste über Traefik verfügbar zu machen. Zum Beispiel:
1tags = ["traefik.enable=true", "traefik.http.routers.web.rule=Host(`example.com`)"]
Traefik wird diesen Dienst nun erkennen und HTTP-Traffic basierend auf den definierten Regeln routen.
Da wir Consul Connect verwenden, wird Traefik auch über die sichere Kommunikation zwischen Diensten informiert und den Traffic entsprechend leiten, aber wir müssen das connect
-Tag in der Tag-Deklaration aktivieren.
1tags = ["traefik.enable=true", "traefik.http.routers.web.rule=Host(`example.com`)", "traefik.connsulcatalog.connect=true"]
Innerhalb der Traefik-Konfiguration müssen Sie die Optionen connectAware
und connectByDefault
definieren, um Traefik über die Consul Connect-Dienste zu informieren.
1providers:
2 consulCatalog:
3 endpoint:
4 address: "127.0.0.1:8500"
5 exposedByDefault: false
6 connectAware: true
7 connectByDefault: true
Sobald Sie Ihre Nomad-Jobs bereitgestellt haben, wird Consul die Dienste automatisch registrieren und Traefik wird sie für das Load-Balancing aufnehmen. Consul Connect stellt sicher, dass die gesamte Kommunikation zwischen den Diensten verschlüsselt und authentifiziert ist.
Zusammenfassend:
Die Kombination von HashiCorp Nomad, Consul Connect und Traefik bietet eine leistungsstarke und flexible Lösung für den Einsatz, die Entdeckung, die Sicherung und das Routing von Diensten in einer dynamischen Umgebung. Ob Sie eine kleine oder große Infrastruktur betreiben, dieser Stack vereinfacht die Komplexität der Verwaltung von Dienst-Kommunikation, Load-Balancing und Sicherheit, sodass Sie sich auf den Aufbau zuverlässiger und skalierbarer Anwendungen konzentrieren können.
Durch die Nutzung dieser Tools zusammen können Sie den Prozess der Bereitstellung und Verwaltung von Diensten mit Leichtigkeit rationalisieren und gleichzeitig robuste Sicherheit und Leistung gewährleisten.
Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.
Hier kontaktieren