Over the weekend, I had a deeper look into this repository and came up with a bunch of questions.
- Why is the podman socket enabled during the installation, but not being used for communication with podman?
- Since there is a lot of communication with Podman, why are the official Podman Go bindings not used?
- Why is the setup script not inside the container as the entrypoint script? Normally, I would expect the script to be supplied with only environment variables.
- Why is Apache started during setup? Couldn't we talk to Tomcat directly instead?
- Why are the SSL certificates ignored during setup? Just skip SSL entirely if we don't check the validity of the certs.
- Why are the entrypoints for mgradm, mgrctl and mgrpxy not under
<repo>/cmd? This is what I would expect in a standard Go project.
- During setup, I encountered multiple errors, and the error messages were not very descriptive. Sometimes all I got was a red "exit 1".
- Why do I find snake_case imports in some modules? I would expect CamelCase for everything.
- Much of the information is being gathered with exec calls and corresponding generated commands. Why is there no network-based internal API that is being called? (Sidecar-Pattern)
- Why is the setup not implemented as an init-container but as fully dedicated pods?
All of this together made it quite challenging to get comfortable with the codebase on the weekend. I am not saying we should refactor everything, but a few notes on the design decisions - if intentional - would be nice so people can follow the style of the project more easily.
Over the weekend, I had a deeper look into this repository and came up with a bunch of questions.
<repo>/cmd? This is what I would expect in a standard Go project.All of this together made it quite challenging to get comfortable with the codebase on the weekend. I am not saying we should refactor everything, but a few notes on the design decisions - if intentional - would be nice so people can follow the style of the project more easily.