|
| 1 | +# 011-greenhouse-plugin-options-structure |
| 2 | + |
| 3 | +- Status: [draft ] <!-- optional --> |
| 4 | +- Deciders: [Uwe, Ivo, Esther, Andreas] <!-- optional --> |
| 5 | +- Date: [YYYY-MM-DD when the decision was last updated] <!-- optional. To customize the ordering without relying on Git creation dates and filenames --> |
| 6 | +- Tags: [greenhouse / cloudoperators] <!-- optional --> |
| 7 | +- Technical Story: [description | ticket/issue URL] <!-- optional --> |
| 8 | + |
| 9 | +## Context and Problem Statement |
| 10 | + |
| 11 | +Some plugins require or allow a lot of configuration options which are currently kubernetes CRD style situated in deeply nested object structures. |
| 12 | +We auto generate the edit screens for the plugins and the deep nesting makes the forms hard to read and use. |
| 13 | +Examples: |
| 14 | + |
| 15 | +- `kubeMonitoring.prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.resources.requests.storage` |
| 16 | +- `kubeMonitoring.prometheus.annotations.nginx\.ingress\.kubernetes\.io/auth-tls-secret` |
| 17 | + where the yaml is like |
| 18 | + |
| 19 | + ```yaml |
| 20 | + kubeMonitoring: |
| 21 | + prometheus: |
| 22 | + annotations: |
| 23 | + nginx.ingress.kubernetes.io/auth-tls-secret: namespace/secret |
| 24 | + ``` |
| 25 | +
|
| 26 | +The goal of this ADR is to find a way to automatically structure these config options better. |
| 27 | +
|
| 28 | +**Discussion:** |
| 29 | +
|
| 30 | +- configure display names for the mandatory/important config options |
| 31 | +- flat structure in config map that maps to the nested structure |
| 32 | +
|
| 33 | +## Decision Drivers <!-- optional --> |
| 34 | +
|
| 35 | +- [driver 1, e.g., a force, facing concern, …] |
| 36 | +- [driver 2, e.g., a force, facing concern, …] |
| 37 | +- … <!-- numbers of drivers can vary --> |
| 38 | +
|
| 39 | +## Considered Options |
| 40 | +
|
| 41 | +- [option 1] |
| 42 | +- [option 2] |
| 43 | +- [option 3] |
| 44 | +- … <!-- numbers of options can vary --> |
| 45 | +
|
| 46 | +## Decision Outcome |
| 47 | +
|
| 48 | +Chosen option: "[option 1]", |
| 49 | +because [justification. e.g., only option, which meets k.o. criterion decision driver | which resolves force force | … | comes out best (see below)]. |
| 50 | +
|
| 51 | +### Positive Consequences <!-- optional --> |
| 52 | +
|
| 53 | +- [e.g., improvement of quality attribute satisfaction, follow-up decisions required, …] |
| 54 | +- … |
| 55 | +
|
| 56 | +### Negative Consequences <!-- optional --> |
| 57 | +
|
| 58 | +- [e.g., compromising quality attribute, follow-up decisions required, …] |
| 59 | +- … |
| 60 | +
|
| 61 | +## Pros and Cons of the Options | Evaluation of options <!-- optional --> |
| 62 | +
|
| 63 | +### [option 1] |
| 64 | +
|
| 65 | +[example | description | pointer to more information | …] <!-- optional --> |
| 66 | +
|
| 67 | +| Decision Driver | Rating | Reason | |
| 68 | +|---------------------|--------|-------------------------------| |
| 69 | +| [decision driver a] | +++ | Good, because [argument a] | | |
| 70 | +| [decision driver b] | --- | Good, because [argument b] | |
| 71 | +| [decision driver c] | -- | Bad, because [argument c] | |
| 72 | +| [decision driver d] | o | Neutral, because [argument d] | |
| 73 | +
|
| 74 | +### [option 2] |
| 75 | +
|
| 76 | +[example | description | pointer to more information | …] <!-- optional --> |
| 77 | +
|
| 78 | +| Decision Driver | Rating | Reason | |
| 79 | +|---------------------|--------|-------------------------------| |
| 80 | +| [decision driver a] | +++ | Good, because [argument a] | | |
| 81 | +| [decision driver b] | --- | Good, because [argument b] | |
| 82 | +| [decision driver c] | -- | Bad, because [argument c] | |
| 83 | +| [decision driver d] | o | Neutral, because [argument d] | |
| 84 | +
|
| 85 | +### [option 3] |
| 86 | +
|
| 87 | +[example | description | pointer to more information | …] <!-- optional --> |
| 88 | +
|
| 89 | +| Decision Driver | Rating | Reason | |
| 90 | +|---------------------|--------|-------------------------------| |
| 91 | +| [decision driver a] | +++ | Good, because [argument a] | | |
| 92 | +| [decision driver b] | --- | Good, because [argument b] | |
| 93 | +| [decision driver c] | -- | Bad, because [argument c] | |
| 94 | +| [decision driver d] | o | Neutral, because [argument d] | |
| 95 | +
|
| 96 | +## Related Decision Records <!-- optional --> |
| 97 | +
|
| 98 | +[previous decision record, e.g., an ADR, which is solved by this one | next decision record, e.g., an ADR, which solves this one | … | pointer to more information] |
| 99 | +
|
| 100 | +## Links <!-- optional --> |
| 101 | +
|
| 102 | +- [Link type](link to adr) <!-- example: Refined by [xxx](yyyymmdd-xxx.md) --> |
| 103 | +- … <!-- numbers of links can vary --> |
0 commit comments