Some notes while exploring the world of EOS charts
- The app container should start with the binary to be executed
- No preparation ==> Use init containers
- No magic substitutions in config files ==> Use config maps // custom resources
- Just run the binary or, worst case, supervisord if multiple processes are required
- To what extent we want internals to be configurable?
- Example, should the path of QDB data directory be configurable?
- This comment is valid for the environment inside the container. Outside, we should be able to use emptyDir, hostPath, persistentVolumeClaim, ...
- If stored on hostPath, we should come up with a norm to define the path of:
- Configuration files (should this rather be configMaps or custom resources?)
- Data directories (/var/k8s/data/)
- Log directories (/var/k8s/logs/)
- Removed some old, commented-out, env vars from kuboxed
- Created init container to:
quarkdb-create --path /var/quarkdb/node-0
chown -R daemon:daemon /var/quarkdb/node-0
- Start the xrtood process for quarkdb when the container starts
/etc/xrd.cf.quarkdb
is now a configMap- Logs go to an emptyDir
/etc/xrd.cf.mq
is now a configMap/etc/sysconfig/eos
is also a configmap. It is likely it must be shared across MQ, MGM, and FSTs. Check how to do this with an umbrella chart 2b. CORRECTION:/etc/sysconfig/eos
are now all env vars so that we do not have to source. The problem of duplication across charts remains.- Does it need to init somehow? . Other things (log dir to emptyDir, clean up, ...) similar to QDB
/etc/xrd.cf.mgm
is now a configMap/etc/sysconfig/eos
are now all env vars so that we do not have to source. The proble m of duplication across charts remains. . Other things (log dir to emptyDir)
- Need to define how to do sequencing across different pods and services
- Need to change the way FSTs register and boot. Can this be done by the FSTs themselves? What is required?
- The eos.keytab should be shared as a secret across all the EOS components
- Who need /etc/sysconfig/eos? All EOS and not QuarkDB?
- xrootd binary. Can we have only one instead of
/opt/eos/xrootd//bin/xroot
||/usr/bin/xrootd
? This seems to apply to all the EOS processes but not the xrootd for QuarkDB - What if I want to share a configmap template across several charts?
- Should we use a well-defined location inside the container for config files which land there via configmaps? E.g., /var/k8s/config/etc/sysconfig/eos ?
- Otherwise, I am happy (ugly) mounting over files that already exist
- Check and fix host names
- They relate to the name generated by Helm
- All the configMaps should have values instead of being hard-coded
- For shared params across charts (see umbrella chart)
- For params which we would like to change
- Decide whether to remove or not params which are commented out
- Umbrella chart:
- Set how to choose variables in _helpers.toml
- Set global values for variables used by multiple charts
- Set admin authentication method in EOS for config management (from other container) and FS registration 3b. Move all the other bits and pieces of config to a separate Pod // script
- This should (likely) be a Job (https://kubernetes.io/docs/concepts/workloads/controllers/job/)
- See how to change FS registration so that it can be done by the FST itself
- Sequence: Init containers?
- Health-checks?
- Set eos.keytab as a secret
- This should also be part of the umbrella chart