Configure network access for Core services
What you’ll accomplish
Section titled “What you’ll accomplish”After completing this guide, you will have extended the network access rules for UDS Core’s own services — allowing them to reach additional internal or external destinations that aren’t covered by the default configuration.
Prerequisites
Section titled “Prerequisites”- UDS CLI installed
- Access to a Kubernetes cluster with UDS Core deployed
- Familiarity with UDS Bundles
Before you begin
Section titled “Before you begin”UDS Core’s built-in Package CRs define the network rules each component needs out of the box. However, some deployment scenarios require additional network access — for example:
- Falco sending alerts to an external SIEM or webhook
- Vector shipping logs to an external Elasticsearch or S3 endpoint
- Grafana querying an external Thanos or additional datasources
- Prometheus scraping targets outside the cluster
- Keycloak reaching an external identity provider or OCSP endpoint
Most Core components support an additionalNetworkAllow values field that lets you inject extra allow rules into the component’s Package CR at deploy time via bundle overrides.
Supported components
Section titled “Supported components”The following Core components support additionalNetworkAllow:
| Component | Chart | Common use cases |
|---|---|---|
| Falco | falco | External alert destinations (SIEM, webhook) |
| Vector | vector | External log storage (Elasticsearch, S3) |
| Loki | loki | External object storage access |
| Prometheus Stack | kube-prometheus-stack | External scrape targets |
| Grafana | grafana | External datasources (Thanos, additional Prometheus) |
| Keycloak | keycloak | External IdP, OCSP endpoints |
-
Add network rules via bundle overrides
Use the
additionalNetworkAllowvalues path in your UDS bundle to inject additionalallowrules for a Core component. Each entry follows the same schema as a Package CRallowrule. Select a component below for an example:Allow Falco Sidekick to send alerts to an external SIEM or webhook:
uds-bundle.yaml packages:- name: corerepository: registry.defenseunicorns.com/public/coreref: x.x.x-upstreamoverrides:falco:falco:values:- path: additionalNetworkAllowvalue:- direction: Egressselector:app.kubernetes.io/name: falcosidekickremoteHost: siem.example.comport: 443description: "Falcosidekick to external SIEM"Allow Vector to ship logs to an external Elasticsearch cluster:
uds-bundle.yaml packages:- name: corerepository: registry.defenseunicorns.com/public/coreref: x.x.x-upstreamoverrides:vector:vector:values:- path: additionalNetworkAllowvalue:- direction: Egressselector:app.kubernetes.io/name: vectorremoteNamespace: elasticremoteSelector:app.kubernetes.io/name: elasticsearchport: 9200description: "Vector to Elasticsearch"Allow Grafana to query an external Thanos instance:
uds-bundle.yaml packages:- name: corerepository: registry.defenseunicorns.com/public/coreref: x.x.x-upstreamoverrides:grafana:grafana:values:- path: additionalNetworkAllowvalue:- direction: Egressselector:app.kubernetes.io/name: grafanaremoteNamespace: thanosremoteSelector:app: thanosport: 9090description: "Grafana to Thanos Query" -
Create and deploy your bundle
Terminal window uds create --confirm && uds deploy uds-bundle-*.tar.zst --confirm
Verification
Section titled “Verification”Verify the Package CR was reconciled with the additional rules:
uds zarf tools kubectl get package -n <component-namespace> -o yamlLook for your custom allow entries in the Package CR’s spec.network.allow list. Then verify the resources were created:
# Check network policiesuds zarf tools kubectl get networkpolicy -n <component-namespace>
# For external egress, check service entriesuds zarf tools kubectl get serviceentry -n istio-egress-ambientTroubleshooting
Section titled “Troubleshooting”Additional rule not taking effect
Section titled “Additional rule not taking effect”Symptoms: The Core component still cannot reach the external or internal destination.
Solution:
- Verify the Package CR includes your additional rule:
uds zarf tools kubectl get package <name> -n <namespace> -o yaml - Check that
selectorlabels match the component’s pods:uds zarf tools kubectl get pods -n <namespace> --show-labels - For external hosts, verify the
remoteHostmatches exactly — no wildcards are supported - Ensure the component’s Helm chart supports
additionalNetworkAllow(check the chart’svalues.yamlfor the field)
Override not applied
Section titled “Override not applied”Symptoms: The Package CR doesn’t include your custom rules after deployment.
Solution:
- Verify the bundle override path is correct:
overrides.<zarf-component>.<chart-name>.values - Check that
additionalNetworkAllowis a list (array), not an object - Run
uds zarf package inspecton your deployed package to confirm the override was applied
Related documentation
Section titled “Related documentation”Next steps
Section titled “Next steps”These guides and concepts may be useful to explore next: