fix(dind): widen insecure-registries to cover Kubernetes service CIDR (iac#82)#85
Merged
Merged
Conversation
Closes iac#82.
The DinD daemon.json on ARC runners listed only the dogfood Docker Hub
cache as an insecure-registries entry. Ephemeral test-namespace
backends at `artifact-keeper-backend.test-${RUN_ID}.svc.cluster.local:8080`
fell outside that allowlist, so dockerd refused plain-HTTP push/pull
to them. Concrete impact: artifact-keeper-test#52's
test-docker-native-client.sh pre-flight-skipped on every CI run with
"dockerd has no insecure-registries entry". With RELEASE_GATE=1
(set in PR #52 round 3), that skip turns into a hard fail.
Approach: add Rocky's Kubernetes service CIDR (10.96.0.0/12) to the
insecure-registries list. dockerd does not support hostname wildcards
(no `*.svc.cluster.local`), but it does support CIDR for IPs. The
service network covers every in-cluster Service ClusterIP, so all
ephemeral test backends are reachable.
Risk: in-cluster-only. The service network is not routable from
outside the cluster, so this widens the allowlist to ports/services
that are already exposed to in-cluster pods anyway. No new attack
surface.
Configmap applied live on Rocky. Existing runner pods keep the old
daemon.json until they respawn (post-current-job); new pods pick up
the widened allowlist immediately.
|
This was referenced Apr 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Closes iac#82.
The DinD
daemon.jsonon ARC runners listed only the dogfood Docker Hub cache as an insecure-registries entry. Ephemeral test-namespace backends atartifact-keeper-backend.test-\${RUN_ID}.svc.cluster.local:8080fell outside that allowlist, so dockerd refused plain-HTTP push/pull to them.Concrete impact: artifact-keeper-test#52's
test-docker-native-client.shpre-flight-skipped on every CI run with "dockerd has no insecure-registries entry". With `RELEASE_GATE=1` (set in PR #52 round 3), that skip turns into a hard fail.Fix
Added Rocky's Kubernetes service CIDR (`10.96.0.0/12`) to insecure-registries. dockerd does not support hostname wildcards (no `*.svc.cluster.local`), but it does support CIDR for IPs. The service network covers every in-cluster Service ClusterIP.
Risk
In-cluster-only. The Kubernetes service network is not routable from outside the cluster, so this widens the allowlist to ports/services that are already exposed to in-cluster pods anyway. No new attack surface.
Verification
Configmap already applied live on Rocky. Verified:
```
$ kubectl -n arc-runners get configmap dind-registry-mirror -o jsonpath='{.data.daemon\.json}'
{
"registry-mirrors": [...],
"insecure-registries": [
"ak-cache-artifact-keeper-backend.infra-registry-cache.svc.cluster.local:8080",
"10.96.0.0/12"
]
}
```
Existing runner pods keep the old daemon.json until they respawn (post-current-job); new pods pick up the widened allowlist immediately.
Test Checklist
Infrastructure