Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

authentik chart rework #230

Merged
merged 18 commits into from
Feb 15, 2024
Merged

authentik chart rework #230

merged 18 commits into from
Feb 15, 2024

Conversation

rissson
Copy link
Member

@rissson rissson commented Jan 3, 2024

Major Helm chart rework to allow for more configurability and extension in the future.

Closes #218
Closes #109
Closes #227
Closes #221
Closes #216
Closes #168
Closes #209
Closes #219
Closes #94
Closes #170
Closes #229
Closes #200
Closes #232

Everything after this is to be included in the release notes


Breaking changes

The vendored Bitnami PostgreSQL and Redis Helm charts have been removed and now use upstream versions.

The PostgreSQL Helm chart has been updated from 10.16.2 to 12.12.10. The full diff is here but is quite large. We recommend checking out the upstream release notes for the 11.x.x and 12.x.x upgrades. Among the changes you may be required to do, the postgresql.persistence key has been renamed to postgresql.primary.persistence, postgresql.postgresqlPassword to postgresql.auth.password, postgresql.existingSecret to postgresql.auth.existingSecret. Note that this update does not change the major version of PostgreSQL, so no manual intervention is required on that side.

The Redis Helm chart has been updated from 15.7.6 to 18.6.1. The full diff is here but is quite large. We recommend checking out the upstream release notes for the 16.x.x, 17.x.x and 18.x.x upgrades. If you do not have any custom values, no action is required. Not that this upgrades the major Redis version from 6 to 7, and thus no rollback is possible.

Ingress versions before networking.k8s.io/v1 are not supported anymore.

blueprints has been renamed to blueprints.configMaps and blueprints.secrets has been added to import blueprints from secrets.

image has been renamed to global.image, and can now be overridden for the server and worker with server.image and worker.image.

image.pullSecrets has been renamed to global.imagePullSecrets, and can now be overridden for the server and worker with server.imagePullSecrets and worker.imagePullSecrets.

annotations has been renamed global.deploymentAnnotations, and additional annotations can now be configured for only the server or worker with server.deploymentAnnotations and worker.deploymentAnnotations.

podAnnotations has been renamed global.podAnnotations, and additional annotations can now be configured for only the server or worker with server.podAnnotations and worker.podAnnotations.

nodeSelector has been renamed to global.nodeSelector, and can now be overridden for the server and worker with server.nodeSelector and worker.nodeSelector.

tolerations has been renamed to global.tolerations, and can now be overridden for the server and worker with server.tolerations and worker.tolerations.

affinity has been removed and replaced by the reworked global.affinity which pre-sets affinity rules. It is possible override those rules for the server and worker with server.affinity and worker.affinity.

env, envValueFrom and envFrom have been removed and replaced by global.env and global.envFrom. global.env now puts the configured list directly into the deployment, without modifications as the previous setting used to do. It is now also possible to pass environment variables to only the server or worker with server.env, worker.env, server.envFrom and worker.envFrom.

additionalContainers has been removed and replaced by server.extraContainers and worker.extraContainers. The previous dictionary must now be a list and name is a required property.

initContainers has been removed and replaced by server.initContainers and worker.initContainers. The previous dictionary must now be a list and name is a required property.

volumes and volumeMounts have been renamed to global.volumes and global.volumeMounts. Additionally, server.volumes, worker.volumes, server.volumeMounts and worker.volumeMounts have been added.

replicas has been renamed to server.replicas.

strategy has been renamed to server.deploymentStrategy. worker.strategy has been renamed to worker.deploymentStrategy. global.deploymentStrategy has been added to configure deployment strategy for all authentik deployments.

priorityClassName has been renamed to server.priorityClassName. Also, server.priorityClassName and worker.priorityClassName can be used with global.priorityClassName.

containerSecurityContext has been renamed to server.containerSecurityContext.

livenessProbe, readinessProbe and startupProbe have been renamed to server.livenessProbe, server.readinessProbe and server.startupProbe. Additionally, the enabled option of those has been removed. If you need to disable those, you can do server.readinessProbe: ~ in your values. Also, some defaults have been reworked.

autoscaling.server has been renamed to server.autoscaling and autoscaling.worker has been renamed to worker.autoscaling.

pdb.server has been renamed to server.pdb and pdb.worker has been renamed to worker.pdb.

resources.server has been renamed to server.resources and resources.worker has been renamed to worker.resources.

service has been renamed server.service. Inside the service definition, port has been renamed servicePortHttp, nodePort has been renamed nodePortHttp, name has been renamed to servicePortHttpName, protocol has been removed. A lot of options have been added to customize it.

prometheus.serviceMonitor has been renamed to server.metrics.serviceMonitor. Inside the service monitor definition, create has been renamed to enabled.

prometheus.rules.create has been renamed to prometheus.rules.enabled. Additional options have also been added for more configurability.

ingress has been renamed to server.ingress. Additionally, the hosts key has been replaced by a list of hosts and paths, instead of a stand-in for an ingress definition. Additional keys are now also available for more configurability.

The geoip.image has been broken up into a dictionary following the other images definitions.

The GeoIP image repository has been changed from docker.io/maxmindinc/geoipupdate to ghcr.io/maxmind/geoipupdate. The image version has been ugpraded from 4.8 to 6.0.0

New features

global.additionalLabels has been added for labels to be applied to all resources.

Add global.revisionHistoryLimit for the number of deployment ReplicaSets to retain.

global.podLabels, server.podLabels and worker.podLabels have been added to configure extra labels to add the the deployed pods.

global.addPrometheusAnnotations allows for Prometheus annotations to be added to metrics services. This can be used as an alternative to the ServiceMonitors.

global.securityContext has been added to define pod-level security context for all deployed pods.

global.topologySpreadConstraints has been added to define topology spread constraints rules for all components.

The autoscaling configuration has gained some more configurability. Check out the values.yaml for more information.

server.terminationGracePeriodSeconds has been added and is set to a value of 30 by default.

Add the ability to use an existing secret for GeoIP credentials with geoip.existingSecret.

additionalObjects has been added to allow deploying other Kubernetes objects.

@rissson rissson self-assigned this Jan 3, 2024
@rissson rissson force-pushed the full-rework branch 9 times, most recently from 821a2b8 to 8953aa7 Compare January 3, 2024 14:10
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
@rissson
Copy link
Member Author

rissson commented Jan 6, 2024

The only thing missing I want to add is examples of values, but that can be done after a first round of review. Good luck 💙

@rissson rissson marked this pull request as ready for review January 6, 2024 00:20
@rissson rissson requested a review from a team as a code owner January 6, 2024 00:20
rissson and others added 5 commits January 8, 2024 18:03
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
…dentials

Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
@rissson rissson requested a review from BeryJu February 15, 2024 20:27
@rissson rissson merged commit 7f7ac1d into main Feb 15, 2024
2 checks passed
@rissson rissson deleted the full-rework branch February 15, 2024 20:57
@Zorlin
Copy link

Zorlin commented Feb 23, 2024

Nice work, thanks for this :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment