Merge branch 'master' of code.ungleich.ch:ungleich-public/ungleich-k8s
This commit is contained in:
commit
cd035057a6
2 changed files with 85 additions and 0 deletions
|
@ -22,6 +22,8 @@ This project is testing, deploying and using IPv6 only k8s clusters.
|
||||||
* argocd (?) for CI and upgrades
|
* argocd (?) for CI and upgrades
|
||||||
* Maybe LoadBalancer support (our ClusterIP already does that though)
|
* Maybe LoadBalancer support (our ClusterIP already does that though)
|
||||||
* (Other) DNS entrys for services
|
* (Other) DNS entrys for services
|
||||||
|
* Internal backup / snapshots
|
||||||
|
* External backup (rsync, rbd mirror, etc.)
|
||||||
|
|
||||||
## Cluster setup
|
## Cluster setup
|
||||||
|
|
||||||
|
|
|
@ -112,3 +112,86 @@ Disadvantage: the Job pod needs to modify cluster resources.
|
||||||
|
|
||||||
Both kustomize and helm seem to support adjusting the namespace for
|
Both kustomize and helm seem to support adjusting the namespace for
|
||||||
resources easily.
|
resources easily.
|
||||||
|
|
||||||
|
## Helm specific notes
|
||||||
|
|
||||||
|
* Should we use the {{ .Release.name }} for matching on pods?
|
||||||
|
* What is the best strategy for naming deployments?
|
||||||
|
* What is the best strategy for naming configmaps?
|
||||||
|
* What is the best strategy for naming volumes?
|
||||||
|
|
||||||
|
Generally speaking, which resources
|
||||||
|
|
||||||
|
* stay the same when upgrading?
|
||||||
|
* should be different for different deployments?
|
||||||
|
|
||||||
|
Objective for a deployment is to continue functioning with rollover of
|
||||||
|
pods.
|
||||||
|
|
||||||
|
|
||||||
|
### Relevant objects
|
||||||
|
|
||||||
|
* .Release.Name = "per installation name"
|
||||||
|
. .Chart.Name = "name of the application (chart)"
|
||||||
|
* .Chart.Version = "version of the application (chart)"
|
||||||
|
|
||||||
|
### .Release (.Name) assumptions
|
||||||
|
|
||||||
|
Per release (name) we will include a specific service that should be
|
||||||
|
kept running and keep the same name even when the charts change
|
||||||
|
(upgrade).
|
||||||
|
|
||||||
|
### General identifier
|
||||||
|
|
||||||
|
#### v2
|
||||||
|
|
||||||
|
The .Release.Name includes the .Chart.name if we are using
|
||||||
|
--generate-name. However if we manually specify a release name
|
||||||
|
(like "rrrrrrrr") the .Chart.Name is not included.
|
||||||
|
|
||||||
|
As the admin of the cluster decides on the naming, it seems to make
|
||||||
|
sense to use .Release.Name alone as an identifier, as it can be
|
||||||
|
directly influenced by the admin.
|
||||||
|
|
||||||
|
#### v1
|
||||||
|
|
||||||
|
Using something like **{{ .Chart.Name }}-{{ .Release.Name }} as an
|
||||||
|
identifier or prefix for most "static" objects seems to make sense:
|
||||||
|
|
||||||
|
- .Chart.Name introduces the admin to where that objects belongs to
|
||||||
|
- .Release.Name makes it unique per release
|
||||||
|
|
||||||
|
In theory .Chart.Name could be omitted, but including it should make
|
||||||
|
maintaining the apps more easy.
|
||||||
|
|
||||||
|
|
||||||
|
### Service
|
||||||
|
|
||||||
|
The service name steers the DNS name
|
||||||
|
|
||||||
|
** If externally exposed, should probably stay the same during upgrade
|
||||||
|
** Should probably not change depending on the release
|
||||||
|
*** Or should it? Depends on the intent.
|
||||||
|
|
||||||
|
The service selector
|
||||||
|
|
||||||
|
* should probably target the .Release.Name and also something like
|
||||||
|
`use-as-service: true` to exclude other pods that might be around.
|
||||||
|
|
||||||
|
### Deployment
|
||||||
|
|
||||||
|
* Should probably be **named** depending on .Release.Name to allow
|
||||||
|
multiple
|
||||||
|
* Should probably **match** on .Release.Name to select/create correct pods
|
||||||
|
|
||||||
|
If there are multiple deployments within one release, probably suffix
|
||||||
|
them (for name and matching).
|
||||||
|
|
||||||
|
### Volumes
|
||||||
|
|
||||||
|
* Should probably be **named** depending on .Release.Name to allow
|
||||||
|
multiple: {{ .Release.name }}-volumename
|
||||||
|
* Will usually contain release specific data or persistent data we
|
||||||
|
want to keep
|
||||||
|
* ... unless the release is removed, then data / volumes / PV / PVC can be
|
||||||
|
deleted, too
|
||||||
|
|
Loading…
Reference in a new issue