Ausführen von edoc platform hinter einem Proxyserver
Sie können eine edoc platform-System hinter einem Proxyserver ausführen. Erfahren Sie in diesem Artikel, welche Maßnahmen Sie durchführen müssen, um einen reibungslosen Betrieb für edoc platform sicherzustellen.
In diesem Artikel erfahren Sie, welche Proxydaten Sie in den Umgebungsvariablen angeben, welche Details Sie auf Betriebssystemebene konfigurieren und wie Sie die Konfiguration (Configmap) in den Kubernetes-Containern bereitstellen.
Der Service snap.microk8s.daemon-kubelet.service muss mindestens einmal neu gestartet werden.
Angeben des Proxys in den Umgebungsvariablen
Der Service kubelet verwendet die environment-Konfigurationsdatei, die Sie unter /etc/environment finden. Sie müssen folgende Daten in die Datei eintragen:
Adresse des Proxyservers (Hostname und Port des Proxyservers)
Anmeldedaten für den Proxyserver (Benutzername und Passwort, optional)
IP-Bereich für Kubernetes
Um den IP-Bereich vom Kubernetes bzw. die Adresse von einem Service im Kubernetes-Netz zu ermitteln, geben Sie folgenden Befehl ein:
ip addr show cbr0|grep "inet "
Beispielantwort:
inet 10.1.1.1/24 scope global cbr0
Geben Sie in der Konfigurationsdatei /etc/environment den Proxyserver und die Anmeldedaten für den Proxserver und den IP-Bereich ein.
HTTP_PROXY=http://<proxy_username:proxy_password@proxy_host:proxy_port>
HTTPS_PROXY=http://<proxy_username:proxy_password@proxy_host:proxy_port>
NO_PROXY=<IP range for Kubernetes, e.g. 10.1.1.0/24>
http_proxy=http://<proxy_username:proxy_password@proxy_host:proxy_port>
https_proxy=http://<proxy_username:proxy_password@proxy_host:proxy_port>
no_proxy=<IP range for Kubernetes, e.g. 10.1.1.0/24>
Verwenden des Proxys auf Betriebssystemebene und in “kubelet”
Nachdem Sie die environment-Konfigurationsdatei geändert haben, müssen die Änderungen angewendet werden, damit der Proxyserver von den Apps auf Ubuntu und in kubelet verwendet wird.
Laden Sie die systemd-Konfiguration mit folgenden Befehl neu:
sudo systemctl daemon-reload
Starten Sie den Dienst kubelet mit folgendem Befehl erneut, um die geänderte Konfiguration anzuwenden:
sudo systemctl restart snap.microk8s.daemon-kubelet.service
Weitere Informationen zum Installieren eines Proxys finden Sie unter: https://microk8s.io/docs/install-proxy (in englischer Sprache).
Automatisches Erstellen einer Proxy-ConfigMap via Artisan-Befehl
Damit der Proxyserver auch in den Kubernetes-Containern genutzt wird, müssen Sie die geänderten Proxyserverdaten in allen Kubernetes-Namespaces bereitstellen. Standardmäßig sorgt die edoc agent-Aufgabe SyncSystemState dafür, dass die Konfiguration regelmäßig aktualisiert wird.
Sie können die Konfiguration auch manuell mit dem Artisan-Befehl über die Befehlszeile (command line) ausführen.
Verwenden Sie folgenden Befehl im Verzeichnis /opt/agent, um die Proxyeinstellungen nicht nur für den kubelet-Service, sondern auch zentral als Kubernetes-ConfigMap in den Namespaces bereitzustellen:
php artisan agent:proxyGenerate
# To automatically restart the affected deployments:
php artisan agent:proxyGenerate --auto
Basiswissen zum Artisan-Befehl
Folgende Schritte werden mit dem Artisan-Befehl ausgeführt:
Leere Proxyeinstellungen
Wenn während des Prozesses keine Proxyvariablen gefunden werden, löscht der Artisan-Befehl vorhandene proxy-config
-ConfigMaps und fragt optional nach einem Neustart der betroffenen Deployments.
Umgebungsdatei wird geprüft: Liest die Konfigurationsdatei /etc/environment ein. Wenn die Konfigurationsdatei nicht gefunden wird, bricht der Befehl ab.
Zielnamespaces werden ermittelt: Standardmäßig werden nur die Namespaces master, staging und test berücksichtigt. Existieren diese Namespaces im Cluster, wird für jeden Namespace der Prozess durchgeführt.
Proxyvariablen werden extrahiert: Es werden alle Keys
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
(auch in Kleinbuchstaben) gelesen. Zusätzlich werden zurNO_PROXY
-Variable automatisch folgende Suffixe hinzugefügt:TEXT.default, .master, .staging, .test, .phpmyadmin, .kube-system, .traefik
Erzeugen oder Aktualisieren der Namespace-ConfigMap: Für jeden Namespace werden die Umgebungsvariablen in eine Kubernetes-ConfigMap geschrieben. Wenn bereits eine ConfigMap für den Namespace existiert, werden die enthaltenen Daten mit den neu extrahierten Proxyvariablen verglichen. Wenn es keine Änderungen gibt, wird das Neustarten der Deployments übersprungen. Allen Pods in den Namespaces, für die der Zugriff auf externe Dienste relevant ist, werden über die ConfigMap im Deployment die Proxyserver-Umgebungsvariablen zugewiesen.
Deployments werden neu gestartet: Anschließend werden die betroffenen Deployments im Namespace neu gestartet.