Skip to content

Commit c9f0985

Browse files
authored
Merge pull request #3588 from embik/integrations-doc
Add integrations page to documentation
2 parents acd61ea + e1c50af commit c9f0985

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

docs/content/setup/.pages

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ nav:
33
- quickstart.md
44
- helm.md
55
- kubectl-plugin.md
6+
- integrations.md

docs/content/setup/integrations.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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

Comments
 (0)