Kubernetes Python library used does not match upstream image and has a bug
Summary
The version of the Kubernetes Python library (installed through Pip) is 12.0.1, which is different from the version used in the upstream image (11.0.0). This difference causes certain ansible tasks in the kiali-operator image to throw errors.
Steps to reproduce
To display the Kubernetes library version in the image:
-
docker run --rm -it --entrypoint "/usr/bin/pip3" quay.io/kiali/kiali-operator:v1.36.0 list | grep kubernetes
for the upstream image -
docker run --rm -it --entrypoint /usr/local/bin/pip3 registry1.dso.mil/ironbank/opensource/kiali/kiali-operator:v1.36.0 list | grep kubernetes
for the IronBank image
To view the error message, use this IronBank image (tag v1.35.0 or v1.36.0) with the upstream kiali-operator helm chart
What is the current bug behavior?
The kiali-operator image loops over the Ansible tasks it runs at startup. Tasks that use k8s_info
(example) throw an error (pasted in "Relevant logs")
This seems to be a common issue:
- https://github.com/kubernetes-client/python/issues/1333
- https://github.com/RedHat-EMEA-SSA-Team/hetzner-ocp4/issues/149
- https://github.com/kiali/kiali-operator/pull/220
What is the expected correct behavior?
The "kiali-operator" image finishes its Ansible tasks and deploys the "kiali" image
Relevant logs and/or screenshots
The error was: urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=80): Max retries exceeded with url: /version (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f7b243ef5b0>: Failed to establish a new connection: [Errno 111] Connection refused'))
Possible fixes
Manually install the working older version of the Python library, e.g.
RUN pip3 install --upgrade kubernetes==11.0.0
Defintion of Done
-
Bug has been identified and corrected within the container
/cc @ironbank-notifications/bug