Zum Hauptinhalt springen
Version: Weekly Build

Netzwerk, Firewalls und DNS

Privates Netzwerk und CIDR-Regeln

Platziere alle Maschinen in einem privaten, gerouteten Netzwerk, zum Beispiel 10.10.0.0/20. Jedes nicht überlappende private CIDR ist geeignet, sofern dasselbe CIDR als ceph.nodesSubnet in der Installationskonfiguration hinterlegt wird.

Stelle uneingeschränkte Kommunikation zwischen Codesphere-Hosts im privaten Netzwerk sicher. Kubernetes-, Ceph-, PostgreSQL-, Container-Registry- und SSH-Traffic durchqueren alle dieses Netzwerk. Falls interne Firewalls restriktiv sein müssen, leite eine explizite Port-Matrix für die gewählten Kubernetes- und Ceph-Versionen ab und teste sie vor der Installation.

Hosts ohne öffentliche Adressen benötigen ausgehenden Zugriff über NAT oder einen HTTP-Proxy. Sie müssen Paket-Repositories, die gewählte Container-Registry, Zertifikats-Endpunkte und alle vom Installer referenzierten Quell-URLs erreichen können.

Vermeide CIDR-Überlappungen zwischen dem Host-Netzwerk, dem Kubernetes-Pod-Netzwerk, dem Kubernetes-Service-Netzwerk, verbundenen Unternehmensnetzwerken und VPNs.

Externen Zugriff und Firewalls konfigurieren

Reserviere drei stabile externe Adressen und verbinde sie mit Kubernetes-LoadBalancer-Services über die Lastverteilungs-Implementierung der Infrastruktur:

  1. Das Platform-Gateway bedient HTTP und HTTPS.
  2. Das öffentliche Workspace-Gateway bedient Workspace-HTTP- und HTTPS-Traffic.
  3. Der Workspace-SSH-Proxy bedient SSH-Traffic für Workspaces.

Installiere und konfiguriere in einer Public Cloud den Kubernetes-Cloud-Controller bzw. die Lastverteilungs-Integration des jeweiligen Anbieters. Konfiguriere auf Bare Metal oder anderer Infrastruktur ohne native Implementierung MetalLB mit einem Adresspool, der die reservierten Adressen enthält. Siehe Gateway und Lastverteilung. Die Adressen müssen über Service- und Node-Neustarts hinweg stabil bleiben. Falls die Integration erst nach dem Start von Kubernetes abgeschlossen werden kann, schließe sie in Die Infrastrukturintegration abschließen ab.

Wende diese Boundary-Firewall-Regeln an:

QuelleZielPortsZweck
Vertrauenswürdige AdministrationsnetzwerkeJumpboxTCP 22Administration
InternetPlatform-GatewayTCP 80, 443Codesphere-UI und -API; ACME HTTP-01 bei Verwendung
InternetWorkspace-GatewayTCP 80, 443Gehostete Workspaces und benutzerdefinierte Domains
InternetWorkspace-SSH-ProxyTCP 22Workspace-SSH
Codesphere-privates NetzwerkAlle Codesphere-HostsGesamter erforderlicher interner TrafficKubernetes, Ceph, PostgreSQL, Registry und SSH
Codesphere-HostsInternet oder genehmigte ProxysErforderlicher ausgehender TrafficPakete, Images, Zertifikate und Integrationen

Exponiere SSH oder PostgreSQL nicht gegenüber 0.0.0.0/0. PostgreSQL TCP 5432 muss normalerweise nur von Codesphere-Hosts und genehmigten Administrations- oder Monitoring-Netzwerken erreichbar sein.

DNS-Einträge

Drei stabile externe Adressen werden auf vier DNS-Einträge abgebildet. Das Platform-Gateway bedient sowohl die reine Basisdomain als auch die Data-Center-spezifische Domain; nur die Wildcard unter der Data-Center-spezifischen Domain routet zum Workspace-Gateway:

EintragKubernetes-ServiceZiel
<base-domain>gateway-controllerPlatform-Gateway-IP
<dc-id>.<base-domain>gateway-controllerPlatform-Gateway-IP
*.<dc-id>.<base-domain>public-gateway-controllerWorkspace-Gateway-IP
<dc-id>.ssh.<base-domain>ssh-workspace-proxyWorkspace-SSH-Proxy-IP

Diese Einträge werden im Rahmen von Die Secrets verschlüsseln und DNS konfigurieren angelegt, sobald die Adressen bekannt sind. Plane die DNS-Zone und Delegation bereits jetzt, damit dieser Schritt später nicht blockiert wird.

Zertifikatsoptionen

Wähle einen Zertifikats-Issuer für die Plattform: eine selbstsignierte CA, eine Organisations-CA oder ACME (DNS-01 oder HTTP-01). Siehe Cluster-Ingress-CA-Optionen für die unterstützten certIssuer-Typen und ihre Vault-Anforderungen. Stelle bei Verwendung von ACME sicher, dass die DNS-Zone den gewählten Solver unterstützt, oder dass TCP 80 das Platform-Gateway für HTTP-01 erreicht.

Weiter geht's

Weiter geht es mit Hosts bereitstellen.