Skip to content

Commit 551f772

Browse files
dsarielopenshift-merge-bot[bot]
authored andcommitted
[openshift_setup] Replace ICSP with IDMS/ITMS for modern mirror configuration
- Migrate from deprecated ImageContentSourcePolicy to ImageDigestMirrorSet - Add ImageTagMirrorSet for tag-based image pulls - Support both digest and tag-based image resolution - Enable NeverContactSource in the corresponding downstream patch that contains rbac-proxy registry - Improve granular control over mirror selection order - Update molecule test Signed-off-by: David Sariel <dsariel@redhat.com> [1] https://docs.redhat.com/en/documentation/openshift_container_platform/4.14/html/config_apis/imagetagmirrorset-config-openshift-io-v1 [2] https://docs.redhat.com/en/documentation/openshift_container_platform/4.14/html/config_apis/imagedigestmirrorset-config-openshift-io-v1 ANVIL-58
1 parent 620b121 commit 551f772

5 files changed

Lines changed: 63 additions & 10 deletions

File tree

docs/dictionary/en-custom.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ FreeIPA
99
IDM
1010
ICSP
1111
IDMS
12+
ImageDigestMirrorSet
13+
ImageTagMirrorSet
1214
IMVHO
1315
IdP
1416
Idempotency

roles/openshift_setup/README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ should be configured for in an OCP/CRC cluster.
1515
* `cifmw_openshift_setup_ca_bundle_path`: (String) Path to the CA bundle.
1616
Defaults to `/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem`. Only has an
1717
effect if `cifmw_openshift_setup_ca_registry_to_add` is set.
18-
* `cifmw_openshift_setup_digest_mirrors`: (List) List of alternative mirrored repository locations. Defaults to `[]`.
18+
* `cifmw_openshift_setup_digest_mirrors`: (List) List of alternative mirrored repository locations for digest-based image pulls. Used to create ImageDigestMirrorSet resources. Defaults to `[]`.
1919
* Example:
2020
```yaml
2121
cifmw_openshift_setup_digest_mirrors:
@@ -26,6 +26,17 @@ effect if `cifmw_openshift_setup_ca_registry_to_add` is set.
2626
mirrors:
2727
- mirror.quay.rdoproject.org
2828
```
29+
* `cifmw_openshift_setup_tag_mirrors`: (List) List of alternative mirrored repository locations for tag-based image pulls. Used to create ImageTagMirrorSet resources. When both digest and tag mirrors are configured, digest mirrors take precedence for digest-based pulls, while tag mirrors act as a fallback for tag-based pulls. Defaults to `[]`.
30+
* Example:
31+
```yaml
32+
cifmw_openshift_setup_tag_mirrors:
33+
- source: quay.io
34+
mirrors:
35+
- mirror.quay.io
36+
- source: registry.redhat.io
37+
mirrors:
38+
- my-mirror.example.com
39+
```
2940
* `cifmw_openshift_setup_allowed_registries`: (List) List of allowed registries when setting up insecure registry configuration. Used in conjunction with `cifmw_update_containers_registry`. Defaults to common registries.
3041
* Example:
3142
```yaml

roles/openshift_setup/defaults/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ cifmw_openshift_setup_skip_internal_registry: false
2424
cifmw_openshift_setup_skip_internal_registry_tls_verify: false
2525
cifmw_openshift_setup_ca_bundle_path: "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"
2626
cifmw_openshift_setup_digest_mirrors: []
27+
cifmw_openshift_setup_tag_mirrors: []
2728
cifmw_openshift_setup_operator_override_catalog_name: "redhat-operators-4.17"
2829
cifmw_openshift_setup_operator_override_catalog_namespace: "openshift-marketplace"
2930
cifmw_openshift_setup_operator_override_catalog_image: "registry.redhat.io/redhat/redhat-operator-index:v4.17"

roles/openshift_setup/molecule/default/converge.yml

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
- source: quay.rdoproject.org
2929
mirrors:
3030
- mirror.quay.rdoproject.org
31+
cifmw_openshift_setup_tag_mirrors:
32+
- source: registry.redhat.io
33+
mirrors:
34+
- mirror.registry.redhat.io
3135
roles:
3236
- role: "openshift_setup"
3337
tasks:
@@ -66,13 +70,29 @@
6670
kubeconfig: "{{ cifmw_openshift_kubeconfig }}"
6771
api_key: "{{ cifmw_openshift_token | default(omit)}}"
6872
context: "{{ cifmw_openshift_context | default(omit)}}"
69-
api_version: operator.openshift.io/v1alpha1
70-
kind: ImageContentSourcePolicy
73+
api_version: config.openshift.io/v1
74+
kind: ImageDigestMirrorSet
7175
name: registry-digest-mirrors
7276
register: _registry_mirror
7377

7478
- name: Assert that digest mirrors are correct
7579
ansible.builtin.assert:
7680
that:
77-
- _registry_mirror.resources[0].spec.repositoryDigestMirrors[0].source == "quay.rdoproject.org"
78-
- _registry_mirror.resources[0].spec.repositoryDigestMirrors[0].mirrors[0] == "mirror.quay.rdoproject.org"
81+
- _registry_mirror.resources[0].spec.imageDigestMirrors[0].source == "quay.rdoproject.org"
82+
- _registry_mirror.resources[0].spec.imageDigestMirrors[0].mirrors[0] == "mirror.quay.rdoproject.org"
83+
84+
- name: Check that tag mirror resource is created
85+
kubernetes.core.k8s_info:
86+
kubeconfig: "{{ cifmw_openshift_kubeconfig }}"
87+
api_key: "{{ cifmw_openshift_token | default(omit)}}"
88+
context: "{{ cifmw_openshift_context | default(omit)}}"
89+
api_version: config.openshift.io/v1
90+
kind: ImageTagMirrorSet
91+
name: registry-tag-mirrors
92+
register: _tag_mirror
93+
94+
- name: Assert that tag mirrors are correct
95+
ansible.builtin.assert:
96+
that:
97+
- _tag_mirror.resources[0].spec.imageTagMirrors[0].source == "registry.redhat.io"
98+
- _tag_mirror.resources[0].spec.imageTagMirrors[0].mirrors[0] == "mirror.registry.redhat.io"

roles/openshift_setup/tasks/configure_registries.yml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# License for the specific language governing permissions and limitations
1515
# under the License.
1616

17-
# This task file configures insecure registries and ImageContentSourcePolicy
17+
# This task file configures insecure registries and ImageDigestMirrorSet/ImageTagMirrorSet
1818
# Can be used standalone from playbooks that don't need the full openshift_setup role
1919

2020
- name: Add insecure registry
@@ -37,7 +37,7 @@
3737
- "{{ cifmw_update_containers_registry }}"
3838
allowedRegistries: "{{ all_registries }}"
3939

40-
- name: Create a ICSP with repository digest mirrors
40+
- name: Create ImageDigestMirrorSet repository digest mirrors
4141
when:
4242
- cifmw_openshift_setup_digest_mirrors is defined
4343
- cifmw_openshift_setup_digest_mirrors | length > 0
@@ -46,9 +46,28 @@
4646
api_key: "{{ cifmw_openshift_token | default(omit)}}"
4747
context: "{{ cifmw_openshift_context | default(omit)}}"
4848
definition:
49-
apiVersion: operator.openshift.io/v1alpha1
50-
kind: ImageContentSourcePolicy
49+
apiVersion: config.openshift.io/v1
50+
kind: ImageDigestMirrorSet
5151
metadata:
5252
name: registry-digest-mirrors
5353
spec:
54-
repositoryDigestMirrors: "{{ cifmw_openshift_setup_digest_mirrors }}"
54+
imageDigestMirrors: "{{ cifmw_openshift_setup_digest_mirrors }}"
55+
56+
# If both ImageDigestMirrorSet and ImageTagMirrorSet are applied to the registries,
57+
# ITMS acts as a fallback for tag-based pulls, while IDMS provides the primary
58+
# secure source for digests
59+
- name: Create ImageTagMirrorSet for tag-based pulls
60+
when:
61+
- cifmw_openshift_setup_tag_mirrors is defined
62+
- cifmw_openshift_setup_tag_mirrors | length > 0
63+
kubernetes.core.k8s:
64+
kubeconfig: "{{ cifmw_openshift_kubeconfig }}"
65+
api_key: "{{ cifmw_openshift_token | default(omit)}}"
66+
context: "{{ cifmw_openshift_context | default(omit)}}"
67+
definition:
68+
apiVersion: config.openshift.io/v1
69+
kind: ImageTagMirrorSet
70+
metadata:
71+
name: registry-tag-mirrors
72+
spec:
73+
imageTagMirrors: "{{ cifmw_openshift_setup_tag_mirrors }}"

0 commit comments

Comments
 (0)