openshift / openshift/openshift-controller-manager

openshift-controller-manager doesn't seem to respect MirrorSet and pull secret configs

Open
#269 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

lifecycle/frozen
Dominant language
Go
Stars
27
Forks
102
Avg merge
14h 19m
Merged PRs (30d)
1

Description

The "openshift-controller-manager" doesn't seem to respect cluster MirrorSet and pull secret configs.

Steps to reproduce:

  1. Provision a new cluster using one of the supported methods.
  2. Observe egress traffic of the cluster. Several HTTP requests to "docker.io" are made every hour.
  3. Create a ImageDigestMirrorSet and ImageTagMirrorSet resource to prevent direct requests to "docker.io" and instead proxy them over a specified mirror. See the YAML definitions [0] and [1].
  4. Again observe egress traffic of the cluster. Even with these resources applied, requests to "docker.io" are still made every hour.

This gets us to a rate-limit on docker.io rather quickly. We even tried to configure a cluster pull secret for docker.io, although this secret doesn't seem to be used for authenticating those specific requests.

The behavior of periodic pulls (or, more precisely, manifest fetches) has also been observed here by another user: https://serverfault.com/questions/1116219/openshift-docker-rate-limit-and-regular-pulls

The requests to docker.io are made due to the community samples operator adding several sample images from docker.io to the cluster (see the output of oc get images | grep docker.io).
To stop those requests from occurring, the community samples operator needs to be disabled (via oc patch OperatorHub/cluster --type=merge --patch='{"spec":{"sources":[{"name":"community-operators","disabled":true}]}}) and all image references to docker.io removed (via oc get images | grep docker.io | cut -d " " -f1 | xargs --verbose -I{} oc delete image "{}").

[0]:

apiVersion: config.openshift.io/v1
kind: ImageDigestMirrorSet
metadata:
  name: dockerio-digest-mirror
spec:
  imageDigestMirrors:
    - mirrorSourcePolicy: NeverContactSource
      mirrors:
        - your-docker-proxy.com
      source: docker.io

[1]:

apiVersion: config.openshift.io/v1
kind: ImageTagMirrorSet
metadata:
  name: dockerio-tag-mirror
spec:
  imageTagMirrors:
    - mirrorSourcePolicy: NeverContactSource
      mirrors:
        - your-docker-proxy.com
      source: docker.io

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the periodic docker.io requests in openshift-controller-manager with the ImageDigestMirrorSet, ImageTagMirrorSet, and pull-secret configurations described in the issue. Trace the controller path responsible for the manifest fetches and the community samples operator's image references. Done means the configured mirror and authentication behavior is respected, with coverage for the reported configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
backend, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.