|
2 | 2 | title: Kubernetes |
3 | 3 | --- |
4 | 4 |
|
5 | | -The kubernetes integration will automatically deploy outposts on any Kubernetes Cluster. |
6 | | - |
7 | | -This integration has the advantage over manual deployments of automatic updates (whenever authentik is updated, it updates the outposts), and authentik can (in a future version) automatically rotate the token that the outpost uses to communicate with the core authentik server. |
8 | | - |
9 | | -This integration creates the following objects: |
10 | | - |
11 | | -- Deployment for the outpost container |
12 | | -- Service for protocol access |
13 | | -- Service for metrics access |
14 | | -- Secret to store the token |
15 | | -- Prometheus ServiceMonitor (if the Prometheus Operator is installed in the target cluster) |
16 | | -- Ingress (only Proxy outposts) |
17 | | -- HTTPRoute (only Proxy outposts, when the Gateway API resources are installed in the target cluster, and the `kubernetes_httproute_parent_refs` setting is set, see below) |
18 | | -- Traefik Middleware (only Proxy outposts with forward auth enabled) |
19 | | - |
20 | | -The following outpost settings are used: |
21 | | - |
22 | | -- `object_naming_template`: Configures how the container is called |
23 | | -- `container_image`: Optionally overwrites the standard container image (see [Configuration](../../../install-config/configuration/configuration.mdx) to configure the global default) |
24 | | -- `kubernetes_replicas`: Replica count for the deployment of the outpost |
25 | | -- `kubernetes_namespace`: Namespace to deploy in, defaults to the same namespace authentik is deployed in (if available) |
26 | | -- `kubernetes_ingress_annotations`: Any additional annotations to add to the ingress object, for example cert-manager |
27 | | -- `kubernetes_ingress_secret_name`: Name of the secret that is used for TLS connections, can be empty to disable TLS config |
28 | | -- `kubernetes_ingress_class_name`: Optionally set the ingress class used for the generated ingress, requires authentik 2022.11.0 |
29 | | -- `kubernetes_httproute_parent_refs`: Define which Gateways the HTTPRoute wants to be attached to. |
30 | | -- `kubernetes_httproute_annotations`: Any additional annotations to add to the HTTPRoute object |
31 | | -- `kubernetes_service_type`: Service kind created, can be set to LoadBalancer for LDAP outposts for example |
32 | | -- `kubernetes_disabled_components`: Disable any components of the kubernetes integration, can be any of |
33 | | - - 'secret' |
34 | | - - 'deployment' |
35 | | - - 'service' |
36 | | - - 'service-metrics' |
37 | | - - 'prometheus servicemonitor' |
38 | | - - 'ingress' |
39 | | - - 'traefik middleware' |
40 | | - - 'httproute' |
41 | | -- `kubernetes_image_pull_secrets`: If the above docker image is in a private repository, use these secrets to pull. (NOTE: The secret must be created manually in the namespace first.) |
42 | | -- `kubernetes_json_patches`: Applies an RFC 6902 compliant JSON patch to the Kubernetes objects. |
| 5 | +The Kubernetes integration automatically deploys and manages outposts in a Kubernetes cluster. |
| 6 | + |
| 7 | +Compared with a [manual Kubernetes deployment](../manual-deploy-kubernetes.md), this integration keeps managed outposts aligned with authentik updates and reduces the amount of cluster-side configuration that you need to maintain. |
| 8 | + |
| 9 | +## Created resources |
| 10 | + |
| 11 | +This integration creates the following Kubernetes resources: |
| 12 | + |
| 13 | +- A `Deployment` for the outpost container. |
| 14 | +- A `Service` for protocol traffic. |
| 15 | +- A `Service` for metrics traffic. |
| 16 | +- A `Secret` that stores the outpost token. |
| 17 | +- A `ServiceMonitor` if the Prometheus Operator is installed in the target cluster. |
| 18 | +- An `Ingress` for proxy outposts. |
| 19 | +- An `HTTPRoute` for proxy outposts if Gateway API resources are installed in the target cluster and `kubernetes_httproute_parent_refs` is configured. |
| 20 | +- A Traefik `Middleware` resource for proxy outposts that use forward auth. |
| 21 | + |
| 22 | +## Supported settings |
| 23 | + |
| 24 | +These settings control how authentik creates and manages Kubernetes resources. For the full shared outpost configuration reference, see [Outposts configuration](../index.mdx#configuration). |
| 25 | + |
| 26 | +### General settings |
| 27 | + |
| 28 | +- `object_naming_template`: Configures the names of created Kubernetes resources. |
| 29 | +- `container_image`: Overrides the default outpost image. You can also configure the global default in [Configuration](../../../install-config/configuration/configuration.mdx#authentik_outposts). |
| 30 | +- `kubernetes_replicas`: Sets the number of replicas in the generated deployment. |
| 31 | +- `kubernetes_namespace`: Sets the namespace where authentik deploys the outpost. By default, this uses the namespace where authentik is installed, if available. |
| 32 | +- `kubernetes_service_type`: Sets the generated Service type, for example `ClusterIP` or `LoadBalancer`. |
| 33 | +- `kubernetes_image_pull_secrets`: Uses existing image pull secrets for private registries. Create these secrets in the target namespace before you use this setting. |
| 34 | +- `kubernetes_json_patches`: Applies [RFC 6902](https://datatracker.ietf.org/doc/html/rfc6902) JSON patches to generated Kubernetes objects. |
| 35 | + |
| 36 | +### Ingress settings |
| 37 | + |
| 38 | +- `kubernetes_ingress_annotations`: Adds annotations to the generated Ingress, for example for cert-manager. |
| 39 | +- `kubernetes_ingress_secret_name`: Sets the TLS secret name for the generated Ingress. Leave this empty to disable TLS configuration on the Ingress. |
| 40 | +- `kubernetes_ingress_class_name`: Sets the ingress class for the generated Ingress. |
| 41 | +- `kubernetes_ingress_path_type`: Sets the Ingress `pathType`. If unset, authentik uses the controller default. |
| 42 | + |
| 43 | +### Gateway API settings |
| 44 | + |
| 45 | +- `kubernetes_httproute_parent_refs`: Defines which Gateway resources the generated `HTTPRoute` attaches to. |
| 46 | +- `kubernetes_httproute_annotations`: Adds annotations to the generated `HTTPRoute`. |
| 47 | + |
| 48 | +### Disabled components |
| 49 | + |
| 50 | +Use `kubernetes_disabled_components` to prevent authentik from creating specific resources. Supported values are: |
| 51 | + |
| 52 | +- `secret` |
| 53 | +- `deployment` |
| 54 | +- `service` |
| 55 | +- `service-metrics` |
| 56 | +- `prometheus servicemonitor` |
| 57 | +- `ingress` |
| 58 | +- `traefik middleware` |
| 59 | +- `httproute` |
43 | 60 |
|
44 | 61 | ## Permissions |
45 | 62 |
|
46 | | -The permissions required for this integration are documented in the helm chart. See [Cluster-level](https://github.com/goauthentik/helm/blob/main/charts/authentik-remote-cluster/templates/clusterrolebinding.yaml) and [Namespace-level](https://github.com/goauthentik/helm/blob/main/charts/authentik-remote-cluster/templates/rolebinding.yaml). |
| 63 | +The required permissions for this integration are documented in the Helm chart: |
| 64 | + |
| 65 | +- [Cluster-level permissions](https://github.com/goauthentik/helm/blob/main/charts/authentik-remote-cluster/templates/clusterrolebinding.yaml) |
| 66 | +- [Namespace-level permissions](https://github.com/goauthentik/helm/blob/main/charts/authentik-remote-cluster/templates/rolebinding.yaml) |
47 | 67 |
|
48 | 68 | ## Remote clusters |
49 | 69 |
|
50 | | -To add a remote cluster, you can simply install this helm chart in the target cluster and namespace: https://artifacthub.io/packages/helm/goauthentik/authentik-remote-cluster |
| 70 | +To connect a remote cluster, install the [`authentik-remote-cluster` Helm chart](https://artifacthub.io/packages/helm/goauthentik/authentik-remote-cluster) in the target cluster and namespace. |
51 | 71 |
|
52 | | -After installation, the helm chart outputs an example kubeconfig file, that you can enter in authentik to connect to the cluster. |
| 72 | +After installation, the chart outputs an example kubeconfig file. Add that kubeconfig to authentik to connect to the cluster. |
0 commit comments