Skip to main content
Version: 0.1.0

Diagram

Default network posture

The namespace starts from deny-by-default, then allows the operator, peer traffic, DNS, Kubernetes API access, and whichever external systems you configure deliberately.

Decision matrix

Traffic the operator expects by default

Traffic the operator expects by default.
DirectionPathWhy it exists
IngressOpenBao peer-to-peer trafficRaft members need to exchange cluster traffic on the peer port.
EgressDNS and Kubernetes APIPods and Jobs need name resolution and selected Kubernetes API access under strict policy.
Conditional ingress or egressGateway, ingress-controller, storage, transit, or PKI pathsThese are environment-specific and should be configured explicitly rather than allowed broadly.

DNS and Kubernetes API egress

Reference table

Core network settings

Core network settings.
FieldUse it forWhen it matters
network.dnsEndpointIPsAllow direct DNS egress to resolver IPs instead of only to pod-backed Services.Use this for node-local caches or host-networked DNS topologies where service-based rules are insufficient.
network.apiServerCIDROverride the default service-VIP allow-list for Kubernetes API access.Use this when you know the exact API-service CIDR you want to allow.
network.apiServerEndpointIPsAllow egress directly to backing API-server endpoint IPs.Use this when your CNI evaluates policy post-DNAT and the service VIP alone is not enough.

Configure

Configure DNS for non-default or node-local resolver paths

yaml

spec:
network:
dnsNamespace: "openshift-dns"
dnsEndpointIPs:
- "169.254.20.10"

Use dnsEndpointIPs only when the resolver is enforced by IP rather than by Service-backed pod traffic. This also affects backup and restore Jobs.

Add the environment-specific paths

Configure

Allow an ingress controller or Gateway data plane to reach the cluster

yaml

spec:
network:
trustedIngressPeers:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: traefik
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: ingress-system
podSelector:
matchLabels:
app.kubernetes.io/name: traefik

Use this when the source is a user-managed ingress controller or Gateway data plane. It is usually clearer than writing a raw ingressRules block for the same case.

Read the operator conditions

Reference table

Conditions that matter

Conditions that matter.
ConditionWhat it tells youTypical next move
APIServerNetworkReady=UnknownThe service-VIP path exists, but your environment may still need explicit endpoint IPs.Check whether your CNI enforces egress post-DNAT and add apiServerEndpointIPs if required.
BackupConfigurationReady=False or RestoreConfigurationReady=False with NetworkEgressRulesRequiredThe lifecycle Jobs cannot reach the storage target safely under current policy.Add explicit storage egress rules before relying on backup or restore workflows.

Continue service boundary setup

Published release documentation

You are reading docs for version 0.1.0. Use the version menu to switch to next or another archived release.

Was this page helpful?

Use Needs work to open a structured GitHub issue for this page. The Yes button only acknowledges the signal locally.