|
| 1 | +# Integrations |
| 2 | + |
| 3 | +kcp integrates with several CNCF projects. This page documents known integrations. Please be aware that we try our best to keep it updated but rely on community contributions for that. |
| 4 | + |
| 5 | +kcp has some "obvious" integrations e.g. with [Kubernetes](https://kubernetes.io) (since it can be deployed on a Kubernetes cluster) and [Helm](https://helm.sh) (since a Helm chart is maintained as the |
| 6 | +primary installation method on Kubernetes). |
| 7 | + |
| 8 | +The fact that kcp is compatible with the Kubernetes Resource Model (KRM) also means that projects using the Kubernetes API might be compatible. The [api-syncagent](https://docs.kcp.io/api-syncagent) |
| 9 | +component also allows integration of *any* Kubernetes controller/operator in principle. An example of this can be found in our [KubeCon London workshop](https://docs.kcp.io/contrib/learning/20250401-kubecon-london/workshop/). |
| 10 | + |
| 11 | +## multicluster-runtime |
| 12 | + |
| 13 | +kcp integrates with [kubernetes-sigs/multicluster-runtime](https://github.com/kubernetes-sigs/multicluster-runtime) by providing a so-called provider which gives a controller dynamic |
| 14 | +access to kcp workspaces. Multiple providers exists for different use cases, see [kcp-dev/multicluster-provider](https://github.com/kcp-dev/multicluster-provider) for a full overview. |
| 15 | + |
| 16 | +## Dex |
| 17 | + |
| 18 | +kcp integrates with any OIDC provider, which includes [Dex](https://dexidp.io). To use `kubectl` with it, [kubelogin](https://github.com/int128/kubelogin) is required. |
| 19 | + |
| 20 | +To integrate them make sure to set up a static client in Dex that is configured similar to: |
| 21 | + |
| 22 | +```yaml |
| 23 | +staticClients: |
| 24 | +- id: kcp-kubelogin |
| 25 | + name: kcp-kubelogin |
| 26 | + secret: <RANDOM-SECRET-HERE> |
| 27 | + RedirectURIs: |
| 28 | + - http://localhost:8000 |
| 29 | + - http://localhost:18000 |
| 30 | +``` |
| 31 | +
|
| 32 | +Which is then used by [kubelogin](https://github.com/int128/kubelogin) (warning: the secret is shared across all users!). Check its documentation for more details. |
| 33 | +
|
| 34 | +A kubeconfig's `users` configuration would look similar to this: |
| 35 | + |
| 36 | +```yaml |
| 37 | +users: |
| 38 | +- name: oidc |
| 39 | + user: |
| 40 | + exec: |
| 41 | + apiVersion: client.authentication.k8s.io/v1beta1 |
| 42 | + args: |
| 43 | + - oidc-login |
| 44 | + - get-token |
| 45 | + - --oidc-issuer-url=https://<url-to-dex> |
| 46 | + - --oidc-client-id=kcp-kubelogin |
| 47 | + - --oidc-client-secret=<RANDOM-SECRET-HERE> |
| 48 | + - --oidc-extra-scope=email,groups |
| 49 | + command: kubectl |
| 50 | + env: null |
| 51 | + interactiveMode: IfAvailable |
| 52 | + provideClusterInfo: false |
| 53 | +``` |
| 54 | + |
| 55 | +## OpenFGA |
| 56 | + |
| 57 | +kcp can integrate with [OpenFGA](https://openfga.dev/) via a shim webhook component that accepts kcp's [authorization webhooks](../concepts/authorization/authorizers.md#webhook-authorizer) and translates |
| 58 | +them to OpenFGA queries. |
| 59 | + |
| 60 | +!!! info "Third Party Solutions" |
| 61 | + A third-party example of such a webhook would be Platform Mesh's [rebac-authz-webhook](https://github.com/platform-mesh/rebac-authz-webhook). |
0 commit comments