Cause: OpenShift 4.8 added an API for customizing platform routes, such as the routes for OpenShift console and OAuth. This API includes status and spec fields in the cluster ingress configuration for reporting the current host names of customizable routes as well as the user's desired host names for these routes, respectively. The API also defined constraints for these values. These constraints were overly restrictive and excluded some valid potential host names, such as host names with top-level domains (TLDs) that contained decimal digits.
Consequence: The overly restrictive validation for the new API had two important consequences. First, the restriction on spec prevented users from specifying custom host names that should have been permitted. Second, the restriction on status prevented users from being able to install clusters with domains that should have been permitted, because the operators that report the status would fail when trying to update status. For example, installing a cluster with the domain m3558001.ocptest1 would fail because of the "1" in the TLD.
Fix: The constraints on host names in the new API were relaxed to allow all host names that are valid for routes.
Result: OpenShift once again allows users to use cluster domains with TLDs that contain decimal digits. OpenShift additionally allows users to customize the console and OAuth routes using any host names that are valid for routes.
DescriptionJoel Rosental R.
2022-01-11 11:22:37 UTC
Description of problem:
When creating an Ingress object if it contains a digit in the TLD, e.g: something.domai2n, then validation fails.
OpenShift release version:
4.9.11
Cluster Platform:
OpenShift Container Platform (UPI installation)
How reproducible:
Always
Steps to Reproduce (in detail):
1. Create an Ingress object that contains a hostname with a number in the top-level-domain, e.g: something.domai2n:
apiVersion: config.openshift.io/v1
kind: Ingress
metadata:
name: cluster
spec:
componentRoutes:
- hostname: something.domai2n
name: test
namespace: openshift-console
domain: <removed>
status: {}
2. oc apply -f <file.yaml>
3.
Actual results:
The Ingress "cluster" is invalid: spec.componentRoutes.hostname: Invalid value: "something.domai2n": spec.componentRoutes.hostname in body must be of type hostname: "something.domai2n"
Expected results:
It should succeed as TLD has valid syntax.
Impact of the problem:
Currently stopping a customer delivery environment.
Comment 1Miciah Dashiel Butler Masters
2022-01-11 17:12:50 UTC
Based on C#28, Tested with the latest 4.11.0-0.nightly-2022-04-11-200046 nightly, the error no more occurs with component route containing numeric values in the hostname:
-------
oc get clusterversion
NAME VERSION AVAILABLE PROGRESSING SINCE STATUS
version 4.11.0-0.nightly-2022-04-11-200046 True False 76m Cluster version is 4.11.0-0.nightly-2022-04-11-200046
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: config.openshift.io/v1
kind: Ingress
metadata:
creationTimestamp: "2022-04-12T04:02:34Z"
generation: 4
name: cluster
resourceVersion: "54152"
uid: 52fc2920-532a-4839-877a-d3dbb388d75d
spec:
componentRoutes:
- hostname: custom-route-inval3d.doma2n
name: downloads
namespace: openshift-console
-------
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory (Important: OpenShift Container Platform 4.11.0 bug fix and security update), and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://access.redhat.com/errata/RHSA-2022:5069
Description of problem: When creating an Ingress object if it contains a digit in the TLD, e.g: something.domai2n, then validation fails. OpenShift release version: 4.9.11 Cluster Platform: OpenShift Container Platform (UPI installation) How reproducible: Always Steps to Reproduce (in detail): 1. Create an Ingress object that contains a hostname with a number in the top-level-domain, e.g: something.domai2n: apiVersion: config.openshift.io/v1 kind: Ingress metadata: name: cluster spec: componentRoutes: - hostname: something.domai2n name: test namespace: openshift-console domain: <removed> status: {} 2. oc apply -f <file.yaml> 3. Actual results: The Ingress "cluster" is invalid: spec.componentRoutes.hostname: Invalid value: "something.domai2n": spec.componentRoutes.hostname in body must be of type hostname: "something.domai2n" Expected results: It should succeed as TLD has valid syntax. Impact of the problem: Currently stopping a customer delivery environment.