Skip to content

Configure network access for Core services

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.

  • UDS CLI installed
  • Access to a Kubernetes cluster with UDS Core deployed
  • Familiarity with UDS Bundles

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.

The following Core components support additionalNetworkAllow:

ComponentChartCommon use cases
FalcofalcoExternal alert destinations (SIEM, webhook)
VectorvectorExternal log storage (Elasticsearch, S3)
LokilokiExternal object storage access
Prometheus Stackkube-prometheus-stackExternal scrape targets
GrafanagrafanaExternal datasources (Thanos, additional Prometheus)
KeycloakkeycloakExternal IdP, OCSP endpoints
  1. Add network rules via bundle overrides

    Use the additionalNetworkAllow values path in your UDS bundle to inject additional allow rules for a Core component. Each entry follows the same schema as a Package CR allow rule. Select a component below for an example:

    Allow Falco Sidekick to send alerts to an external SIEM or webhook:

    uds-bundle.yaml
    packages:
    - name: core
    repository: registry.defenseunicorns.com/public/core
    ref: x.x.x-upstream
    overrides:
    falco:
    falco:
    values:
    - path: additionalNetworkAllow
    value:
    - direction: Egress
    selector:
    app.kubernetes.io/name: falcosidekick
    remoteHost: siem.example.com
    port: 443
    description: "Falcosidekick to external SIEM"
  2. Create and deploy your bundle

    Terminal window
    uds create --confirm && uds deploy uds-bundle-*.tar.zst --confirm

Verify the Package CR was reconciled with the additional rules:

Terminal window
uds zarf tools kubectl get package -n <component-namespace> -o yaml

Look for your custom allow entries in the Package CR’s spec.network.allow list. Then verify the resources were created:

Terminal window
# Check network policies
uds zarf tools kubectl get networkpolicy -n <component-namespace>
# For external egress, check service entries
uds zarf tools kubectl get serviceentry -n istio-egress-ambient

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 selector labels match the component’s pods: uds zarf tools kubectl get pods -n <namespace> --show-labels
  • For external hosts, verify the remoteHost matches exactly — no wildcards are supported
  • Ensure the component’s Helm chart supports additionalNetworkAllow (check the chart’s values.yaml for the field)

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 additionalNetworkAllow is a list (array), not an object
  • Run uds zarf package inspect on your deployed package to confirm the override was applied

These guides and concepts may be useful to explore next: