AI Gateway Connectivity Reference

Every hostname, port, and direction a hybrid data plane needs, and the inspection and filtering decisions that break it

This page exists to answer one question completely: what does a network team have to open so that a self-hosted AI Gateway data plane can reach Strata Cloud Manager and the models it proxies for. It applies to every hybrid platform, since the data plane makes the same calls whether it runs on EKS, AKS, GKE, ECS, Azure Container Apps, or an on-premises cluster.

The deployment guides cover connectivity in the context of their own procedures. This page is the consolidated list, written to be handed to whoever owns the firewall.

The Strata Cloud Manager URL is not what you open

The most common wrong assumption

Your Strata Cloud Manager tenant URL is for administrators in a browser. The data plane never contacts it. Opening egress to your SCM console hostname achieves nothing, and a gateway allowed only that destination will never register.

Prisma AIRS AI Gateway is built on Portkey, which Palo Alto Networks acquired and integrated behind Strata Cloud Manager. The console you administer is SCM. The endpoints the data plane calls are still the Portkey management plane hostnames, under portkey.ai. Both facts are true at once, and seeing portkey.ai in your firewall logs is expected rather than a sign of misconfiguration.

Two consequences follow. A network team given only "allow Strata Cloud Manager" will open the wrong thing. And a security review that sees traffic to a domain nobody recognizes may block it, which produces the failure described under TLS Inspection.

Direction of travel

All connectivity is outbound only, over TCP 443. The data plane initiates every connection. Responses return on connections it opened, which is not the same as an inbound connection and does not need a firewall rule of its own.

What you do not need to build
  • No inbound rule from Palo Alto Networks into your network.
  • No public listener on the gateway. Your load balancer serves your own applications and nothing else.
  • No private link back from the management plane. Palo Alto Networks confirmed on 2026-09-27 that private link is not supported with Strata Cloud Manager and that the only connectivity between a gateway and the cloud is outbound from the gateway.
  • No Palo Alto Networks principal authorized into your cloud account.
Remove an inbound path built earlier

Deployments that predate 2026-09-27 and followed the Portkey platform pages may carry an endpoint service with a Palo Alto Networks principal authorized, or management plane addresses in a load balancer security group. Nothing uses either. Remove them, and tell your account team you have done so in case a connection is still held on their side.

What to open from the pods

These are the destinations the gateway process itself calls. On Kubernetes they are what a pod-level egress policy governs; on ECS or Container Apps they are what the task or replica needs.

DestinationPortPurpose
aigw.portkey.aiTCP 443Gateway control traffic, configured as CONTROL_PLANE_BASEPATH. Also the hosted SaaS gateway endpoint, which is why the name appears in two unrelated contexts.
api.portkey.aiTCP 443Registration, configuration sync, and the sync API. Configured as CONFIG_READER_PATH and SOURCE_SYNC_API_BASEPATH.
albus.portkey.aiTCP 443Analytics and log delivery, configured as ALBUS_BASEPATH. See the note below on confirming this one.
Each LLM provider you integrateTCP 443One per integration: api.openai.com, api.anthropic.com, <resource>.openai.azure.com, bedrock-runtime.<region>.amazonaws.com, or your own hosted model.
service.api.aisecurity.paloaltonetworks.comTCP 443Prisma AIRS Scan API, called per request once a guardrail is attached. Use the regional host your AIRS deployment profile specifies.
Each MCP origin server you registerTCP 443Only when the MCP gateway is in use.
Allow every management plane hostname, not a subset

Allowing all of them costs nothing and removes a class of intermittent failure that is unpleasant to diagnose, because an endpoint that is quiet at rest and active under load looks like a new fault rather than a missing rule.

Read the authoritative list off your own gateway

Endpoint names have changed, and published lists disagree

Hostnames have moved as the product was integrated into Strata Cloud Manager, and material from before that integration is still in circulation. Different sources name different hosts for the same function, and some record a variable name as though it were a hostname. ALBUS_BASEPATH is a variable, and whether its value resolves to a host called albus depends on the release you are running.

Rather than trusting any list, including this one, read the endpoints out of the deployment in front of you. The chart supplies them as environment values, so a running pod is the only source correct for your version and tenant:

kubectl exec -n airs-gw <GATEWAY_POD> -- env \
  | grep -E 'BASEPATH|CONFIG_READER_PATH' | sort

That returns the base paths the data plane actually uses, which is what belongs on the firewall request. Confirm the result with your account team before a production change, and treat the table above as a starting position rather than the final word.

To see which of them carry traffic in practice, enable query logging on CoreDNS and read the log after the gateway has run for a few minutes. Exclude any shell testing you do yourself: a wget from inside the pod goes through CoreDNS and is indistinguishable from gateway traffic.

What to open from the nodes

DestinationPortPurpose
registry.portkey.aiTCP 443Container image pull for the gateway image.
docker.io, quay.ioTCP 443Only when the chart's optional bundled components are enabled. A mirrored or air-gapped cluster needs all three mirrored.
A pod NetworkPolicy cannot permit the image pull

The image is pulled by the container runtime on the node, not by the pod. It never appears in pod DNS and no Kubernetes NetworkPolicy can allow or deny it. This rule has to be applied at the node, subnet, or firewall layer.

Teams that write a careful pod egress policy and then cannot start the gateway are usually missing exactly this. The symptom is ImagePullBackOff on every pod, with a pod-level policy that looks complete.

Cloud service endpoints

These are specific to where the data plane runs and to the storage and identity choices you made. They are easy to forget because they are not part of the product's own endpoint list.

▶Amazon EKS and ECS
DestinationWhy
sts.<region>.amazonaws.comIAM Roles for Service Accounts exchanges a projected token for credentials here. Without it the pod cannot reach S3. An interface VPC endpoint keeps it off the public path. EKS Pod Identity moves this dependency to the node agent instead.
Amazon S3Only when you configure a customer-held log store. A gateway VPC endpoint keeps the traffic off the NAT gateway, which matters for cost as well as policy, since log bodies run to roughly 10 kB each.
ElastiCache endpoint on 6379Stays inside the VPC. Allow the node or pod security group as the source rather than the VPC CIDR.
Secrets Manager, CloudWatch Logs, ECS, SSMECS only, through NAT or interface endpoints.
▶Azure AKS and Container Apps
DestinationWhy
Microsoft Entra ID token endpointsWorkload Identity exchanges a federated token for an access token.
<account>.blob.core.windows.netOnly when the log store points at your own Blob Storage container.
Azure Managed Redis endpointInside the VNet. Scope the firewall rules to the AKS subnet.
Key VaultContainer Apps only, which resolves its secrets there at start.
▶Google GKE
DestinationWhy
oauth2.googleapis.com, iamcredentials.googleapis.comWorkload Identity Federation token exchange.
storage.googleapis.comOnly when the log store points at your own Cloud Storage bucket.
Memorystore endpointInside the VPC.
Not connectivity, but it stops the deployment

GKE needs a subnet with purpose REGIONAL_MANAGED_PROXY in the cluster region before a regional load balancer will provision. Nothing in the Helm output reports it as missing; the symptom is a load balancer that never appears.

Filter by hostname, not by address

None of the management plane endpoints publish stable addresses, and the published figures that do circulate relate to an inbound path that Strata Cloud Manager does not support. Build the allow-list on hostnames.

This has a direct consequence for Kubernetes. A NetworkPolicy matches on IP ranges and cannot express a wildcard hostname, so it cannot implement *.portkey.ai. Hostname filtering belongs on a firewall in the egress path. Use NetworkPolicy to constrain which pods may egress at all, and the firewall to constrain where they may go.

Kubernetes permits all egress by default. Where a cluster applies restrictive policies, the gateway needs an explicit allowance or it will never register. The published example below is deliberately permissive so a first deployment works; narrow the CIDR once the deployment is proven.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-gateway-egress
  namespace: airs-gw
spec:
  podSelector: {}
  policyTypes:
    - Egress
  egress:
    - to:
        - ipBlock:
            cidr: 0.0.0.0/0

TLS inspection

Add a decryption exemption for *.portkey.ai and for every LLM provider endpoint you integrate. The gateway validates the certificate chain it expects, so a re-signed certificate fails the handshake.

This deserves more attention than a single line in a prerequisites list, because inspection breaks the deployment in three independent places, the symptoms look nothing alike, and fixing one leaves the others broken.

LayerWho makes the callSymptomFix
Image pullThe container runtime on the nodeImagePullBackOff with x509: certificate signed by unknown authority. Pods never start.Add the intercepting CA to the node's trust store. On a managed node group this is a launch template or bootstrap script, not a pod change.
Management planeThe gateway process in the containerPods Running and healthy, the gateway never registers, and API keys fail with Error Code: 03.Mount the CA into the container and point NODE_EXTRA_CA_CERTS at it.
Provider callsThe gateway process in the containerRegistration succeeds and the gateway reports Healthy, while every LLM request fails with fetch failed.Exempt the provider endpoints as well, not only *.portkey.ai.
A Healthy gateway does not mean inference works

The third row is the one that costs the most time. Where an egress control permits management traffic and blocks inference calls to model providers, the gateway registers, syncs on schedule, and reports Healthy in Strata Cloud Manager. The console looks correct in every respect. Every LLM request fails, and the gateway log records nothing: no error, no retry, no trace of the request at all.

Connection Status in Strata Cloud Manager confirms the management path only. Treat it as evidence that registration works, never as evidence that traffic works. Prove inference separately with a test request, as in Verification below.

A passing curl test proves less than it appears to

Where an inspecting proxy is in the path, curl from a shell on the same host or in the same container frequently succeeds against a hostname the gateway cannot reach. The difference is that curl trusts the proxy CA from the system trust store and the gateway does not. Treat a passing connectivity test as inconclusive whenever inspection is involved, and confirm who issued the certificate instead:

echo | openssl s_client -connect api.portkey.ai:443 \
  -servername api.portkey.ai 2>/dev/null \
  | openssl x509 -noout -issuer

A public issuer such as Amazon or Let's Encrypt is fine. Your own organization's CA means the session is being intercepted.

Your source address

Where an intermediate firewall needs to allow traffic by source, the address presented depends on how the compute egresses, and the answer is often not what the architecture diagram implies.

  • Private subnets behind NAT — the source is the NAT gateway's Elastic IP or equivalent. With one NAT gateway per Availability Zone there is more than one, so supply all of them.
  • Public subnets with auto-assigned addresses — the source is each node's own public address, which changes whenever a node is replaced. Source-based allow-listing is impractical in this shape.

Confirm which applies before committing to a source range, because the cluster creation command does not always place nodes where people assume:

kubectl exec -n airs-gw <GATEWAY_POD> -- wget -qO- https://checkip.amazonaws.com

Verification

Work outward. Each check isolates a different layer, and running them in order stops you diagnosing a firewall problem that is really a credential problem.

▶1. Can the node reach the registry?

If the pods are not Running, nothing else is worth testing.

kubectl get pods -n airs-gw
kubectl describe pod -n airs-gw <POD> | sed -n '/Events:/,$p'

Expect: every pod Running and ready. ImagePullBackOff with a certificate error in the events is TLS inspection at the node layer.

▶2. Can the container reach the management plane?

The gateway image ships wget rather than curl, so commands written around curl fail with a confusing error about the binary rather than the network.

kubectl exec -n airs-gw <POD> -- \
  wget -q -O /dev/null https://api.portkey.ai/ \
  && echo reachable || echo blocked

Where NODE_EXTRA_CA_CERTS is in use, test the way the gateway does instead, because that variable applies to the application runtime and not to wget:

kubectl exec -n airs-gw <POD> -- node -e '
require("https").get("https://api.portkey.ai/",
  r => console.log("OK", r.statusCode))
  .on("error", e => console.log("ERR", e.code))'

Expect: any HTTP status, including 401 or 404. The status does not matter; completing the handshake does.

▶3. Did registration actually happen?

In Strata Cloud Manager, open AI Security → AI Gateway → Admin Settings → Gateway Registration.

Expect: Connection Status reads Healthy and Last Sync shows a recent timestamp that keeps advancing. Pods check in roughly every 30 seconds, so allow a minute before treating Unknown as a failure.

Last Sync is the column to trust. It only moves when the data plane reaches the management plane.

▶4. Does inference work? This is a separate question

Registration and inference use different destinations and can fail independently. A Healthy gateway proves nothing about provider connectivity, so test it explicitly.

kubectl port-forward -n airs-gw <GATEWAY_POD> 8787:8787

curl -X POST "http://localhost:8787/v1/messages" \
  -H "Authorization: Bearer <GATEWAY_API_KEY>" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "@<slug>/<model>", "max_tokens": 32,
       "messages": [{"role": "user", "content": "Say OK"}]}'

Expect: a completion. An error naming the model still proves the gateway authenticated you and reached the integration. A hang, or fetch failed, points at provider egress rather than at the gateway.

Address the pod, not the Deployment

In some chart versions the bundled Redis pod carries the same app.kubernetes.io/name label as the gateway, so kubectl port-forward deployment/airs-gw and kubectl logs deployment/airs-gw can resolve to Redis instead. Resolve a gateway pod name explicitly and use that.

Symptom lookup

SymptomMost likely connectivity cause
ImagePullBackOff, pods never startregistry.portkey.ai not reachable from the node, or TLS inspection at the node layer. A pod NetworkPolicy is never the cause.
Pods Running, Connection Status stays UnknownThe management plane hostnames are not reachable from the container, or inspection is re-signing them. Check api.portkey.ai first.
Every API key fails with Error Code: 03Ambiguous by design: it covers both a genuinely wrong key and a key the gateway could not validate because it could not reach the management plane. Rule out connectivity before rotating keys.
Healthy in SCM, every LLM request failsProvider endpoints are blocked while management traffic is permitted. Check egress to the provider, not to Palo Alto Networks.
Requests hang, then fetch failed or a socket closeSomething in the egress path is terminating provider calls. An AI security or DLP control that permits reads and blocks inference produces exactly this.
Log entries appear in SCM with empty bodiesLog store configuration rather than connectivity.
Streams truncate on long generationsLoad balancer idle timeout shorter than the generation. Not a firewall rule.

Sourcing and confidence

Connectivity guidance is worth stating with its provenance, because a firewall change request is hard to retract and the published sources disagree with each other.

ClaimBasis
Outbound only, no inbound pathConfirmed by Palo Alto Networks on 2026-09-27.
The management plane hostnamesPublished documentation. Names have changed across releases and published lists disagree, so this page directs you to read them off a running gateway rather than trusting the table.
The chart supplies the endpoints as environment valuesRead from the environment of a running gateway container.
The image pull bypasses pod DNS and NetworkPolicyProperty of Kubernetes, confirmed by observation.
TLS inspection breaks three layers independentlyAll three observed. The provider-call case was reproduced deliberately.
Cloud service endpoints per platformDerived from the identity and storage mechanisms each platform uses. Not individually validated against a deployment in every cloud.
Confirm the list before a production change request

Endpoint names have changed across the product's integration into Strata Cloud Manager, and material from before that integration is still in circulation. Where a customer is raising a firewall change they cannot easily revise, confirm the current list with your account team and treat this page as the starting position rather than the final word.

Related guides