In Deckhouse Code, when installed in a Kubernetes cluster, the following network configuration options are used:
Configuration with an additional LoadBalancer for the web service and shell service: When the
global.codeHelm.loadbalancer.enabledvalue in the Helm chart is set totrue, the Haproxy component is deployed with a Service of type LoadBalancer. The Service accepts HTTP, HTTPS, and Git over SSH on a single external IP address via80,443, and22ports, respectively. Haproxy forwards traffic from port22to the corresponding Git SSH Pod. Ports80and443are handled by the Ingress controller, where TLS traffic is terminated. A separate IP address is also allocated, distinct from the Ingress controller’s IP address. A separate DNS record must be created for this address. The following services will be accessible via this DNS record:- Web interface (UI) on ports
80and443 - Git SSH on port
22
This network configuration is the default one. For more details on configuring the additional load balancer, refer to the Deckhouse Code documentation.
- Web interface (UI) on ports
Configuration without an additional LoadBalancer: When the
global.codeHelm.loadbalancer.enabledvalue in the Helm chart is set tofalse, the Ingress controller is used to access the web interface (UI) and other services via standard HTTP (80) and HTTPS (443) ports. However, the Ingress controller does not support TCP port proxying. Therefore, to access Git SSH via port22, a separate service ofLoadBalancerorNodePorttype is used.
Architecture
The following simplifications are made in the diagram:
- The diagram shows containers in different pods interacting directly with each other. In reality, they communicate via the corresponding Kubernetes Services (internal load balancers). Service names are omitted if they are obvious from the diagram context. Otherwise, the Service name is shown above the arrow.
- Pods may run multiple replicas. However, each pod is shown as a single replica in the diagram.
The Level 2 C4 architecture of Deckhouse Code network configurations is shown in the following diagrams.
With an additional LoadBalancer for the web and shell services:
Without an additional LoadBalancer: