-
Bug
-
Resolution: Done
-
Normal
-
None
-
4.13, 4.12
-
Moderate
-
No
-
4
-
OSDOCS Sprint 238
-
1
-
False
-
Description of problem:
We installed OCP version 4.12.15 in our s390x LPAR (RHEL 9.1). As we have a Multi-NIC OCP setup, we heavily rely on this troubleshooting article which changed from OCP 4.11 to OCP 4.12.
https://docs.openshift.com/container-platform/4.12/support/troubleshooting/troubleshooting-network-issues.html
All issue which we faced mainly because of the wrong content in OCP official document.
The MachineConfig that we are supposed to use from the above official document: (Same issue for both Master and Worker)
https://docs.openshift.com/container-platform/4.12/support/troubleshooting/troubleshooting-network-issues.html#:~:text=Master%20machine%20config%20manifest
Issue 1:
Let's first fix the elephant in the room. The formatting:
- "metadata.name" was wrongly indented: Changed 4 spaces to 2 spaces.
- "spec.config" was wrongly indented: Changed 1 space to 2 spaces and added 1 space for all the lines underneath.
Note: Changes made in red.
```yaml
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 99-nodeip-hint-master
spec:
config:
ignition:
version: 3.2.0
storage:
files:
- contents:
source: data:text/plain;charset=utf-8;base64, <encoded_content>
mode: 0644
overwrite: true
path: /etc/default/nodeip-configuration
```
-------------------------------------------------------------------------------------------
Issue 2:
<encoded_content> base64:
The troubleshooting guide used the following to generate the base64 string:
```
echo 'NODEIP_HINT=192.0.2.1' | base64
```
However, I believe the encoded newline character is not needed and might even cause issues. Therefore, I suggest to use:
```
echo -n 'NODEIP_HINT=192.0.2.1' | base64
```
---------------------------------------------------------------------------------------
Issue 3:
<encoded_content>:
When you now put in the <encoded_content> like this:
```yaml
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 99-nodeip-hint-master
spec:
config:
ignition:
version: 3.2.0
storage:
files:
- contents:
source: data:text/plain;charset=utf-8;base64, Tk9ERUlQX0hJTlQ9MTkyLjAuMi4x
mode: 0644
overwrite: true
path: /etc/default/nodeip-configuration
```
It is valid YAML, and it won't complain generating the ignition files. However, the installation will fail with a parsing error:
```
Error:
...
2023-05-10T16:57:57.032231329+00:00 stderr F F0510 16:57:57.032217 1 bootstrap.go:47] error running MCC[BOOTSTRAP]: parsing Ignition config spec v3.2 failed with error: config is not valid
2023-05-10T16:57:57.032231329+00:00 stderr F Report: error at $.storage.files.0.contents.source, line 1 col 75: invalid data character
```
First the above error does not tell what file exactly caused the parsing error. So it is already difficult to figure out that the issues was caused once again by the MachineConfig above.
The problem this time is that the Data URI scheme "data:text/plain;charset=...." is not allowed to contain any unencoded space characters. Fixing this now leads to this final version:
```
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
labels:
machineconfiguration.openshift.io/role: master
name: 99-nodeip-hint-master
spec:
config:
ignition:
version: 3.2.0
storage:
files:
- contents:
source: data:text/plain;charset=utf-8;base64,Tk9ERUlQX0hJTlQ9MTkyLjAuMi4x
mode: 0644
overwrite: true
path: /etc/default/nodeip-configuration
```
--------------------------------------------------------------------------------------------
Issue 4:
.yml versus .yaml File Ending:
When you create two manifest files with the above content for master and one slightly modified version for the worker during the installation with the filenames: `99-nodeip-hint-master.yml`, `99-nodeip-hint-worker.yml`. We get an obscure error when trying to create the ignition files. This error goes away when changing the file ending to `.yaml` which is the official file ending. However, either the error message should be more clear about this OR `.yml` should just work as it is used quite often. When searching for `.yml` in the search field of the OCP documentation there are a lot of matches.
Regards,
Seeman Mannan
Version-Release number of selected component (if applicable):
How reproducible:
Steps to Reproduce:
1. 2. 3.
Actual results:
Expected results:
Additional info: