Add changeset and docs for kubernetes oidcTokenProvider feature
Signed-off-by: Daniel Bravo <dbravo@vmware.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
---
|
||||
'@backstage/plugin-kubernetes': patch
|
||||
'@backstage/plugin-kubernetes-backend': patch
|
||||
'@backstage/plugin-kubernetes-common': patch
|
||||
---
|
||||
|
||||
Add support for 'oidc' as authProvider for kubernetes authentication
|
||||
and adds optional 'oidcTokenProvider' config value. This will allow
|
||||
users to authenticate to kubernetes cluster using id tokens obtained
|
||||
from the configured auth provider in their backstage instance.
|
||||
@@ -92,6 +92,8 @@ cluster. Valid values are:
|
||||
| `aws` | This will use AWS credentials to access resources in EKS clusters |
|
||||
| `googleServiceAccount` | This will use the Google Cloud service account credentials to access resources in clusters |
|
||||
| `azure` | This will use [Azure Identity](https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview) to access resources in clusters |
|
||||
| `oidc` | This will use [Oidc Tokens](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#openid-connect-tokens) to authenticate to the Kubernetes API. When this is used the `oidcTokenProvider` |
|
||||
| field should also be set. |
|
||||
|
||||
##### `clusters.\*.skipTLSVerify`
|
||||
|
||||
@@ -115,6 +117,33 @@ kubectl -n <NAMESPACE> get secret $(kubectl -n <NAMESPACE> get sa <SERVICE_ACCOU
|
||||
| base64 --decode
|
||||
```
|
||||
|
||||
##### `clusters.\*.oidcTokenProvider` (optional)
|
||||
|
||||
This field is to be used when using the `oidc` auth provider. It will use the id tokens
|
||||
from a configured [backstage auth provider](https://backstage.io/docs/auth/) to
|
||||
authenticate to the cluster. The selected `oidcTokenProvider` needs to be properly
|
||||
configured under `auth` for this to work.
|
||||
|
||||
```yaml
|
||||
kubernetes:
|
||||
clusterLocatorMethods:
|
||||
- type: 'config'
|
||||
clusters:
|
||||
- name: test-cluster
|
||||
url: http://localhost:8080
|
||||
authProvider: oidc
|
||||
oidcTokenProvider: okta # This value needs to match a config under auth.providers
|
||||
auth:
|
||||
providers:
|
||||
okta:
|
||||
development:
|
||||
clientId: ${AUTH_OKTA_CLIENT_ID}
|
||||
clientSecret: ${AUTH_OKTA_CLIENT_SECRET}
|
||||
audience: ${AUTH_OKTA_AUDIENCE}
|
||||
```
|
||||
|
||||
The following values are supported out-of-the-box by the frontend: `google`, `microsoft`, `okta`, `onelogin`.
|
||||
|
||||
##### `clusters.\*.dashboardUrl` (optional)
|
||||
|
||||
Specifies the link to the Kubernetes dashboard managing this cluster.
|
||||
|
||||
@@ -41,6 +41,7 @@ export interface ClusterDetails {
|
||||
dashboardParameters?: JsonObject;
|
||||
dashboardUrl?: string;
|
||||
name: string;
|
||||
oidcTokenProvider?: string | undefined;
|
||||
// (undocumented)
|
||||
serviceAccountToken?: string | undefined;
|
||||
skipMetricsLookup?: boolean;
|
||||
|
||||
@@ -194,10 +194,14 @@ export interface KubernetesFetchError {
|
||||
export interface KubernetesRequestBody {
|
||||
// (undocumented)
|
||||
auth?: {
|
||||
google?: string;
|
||||
google: string;
|
||||
};
|
||||
// (undocumented)
|
||||
entity: Entity;
|
||||
// (undocumented)
|
||||
oidc?: {
|
||||
[key: string]: string;
|
||||
};
|
||||
}
|
||||
|
||||
// Warning: (ae-missing-release-tag) "ObjectsByEntityResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
|
||||
|
||||
@@ -17,6 +17,7 @@ import type { JsonObject } from '@backstage/types';
|
||||
import { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common';
|
||||
import { OAuthApi } from '@backstage/core-plugin-api';
|
||||
import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common';
|
||||
import { OpenIdConnectApi } from '@backstage/core-plugin-api';
|
||||
import { default as React_2 } from 'react';
|
||||
import { RouteRef } from '@backstage/core-plugin-api';
|
||||
import { V1ConfigMap } from '@kubernetes/client-node';
|
||||
@@ -225,6 +226,7 @@ export interface KubernetesApi {
|
||||
{
|
||||
name: string;
|
||||
authProvider: string;
|
||||
oidcTokenProvider?: string | undefined;
|
||||
}[]
|
||||
>;
|
||||
// (undocumented)
|
||||
@@ -242,7 +244,12 @@ export const kubernetesApiRef: ApiRef<KubernetesApi>;
|
||||
//
|
||||
// @public (undocumented)
|
||||
export class KubernetesAuthProviders implements KubernetesAuthProvidersApi {
|
||||
constructor(options: { googleAuthApi: OAuthApi });
|
||||
constructor(options: {
|
||||
googleAuthApi: OAuthApi;
|
||||
oidcProviders?: {
|
||||
[key: string]: OpenIdConnectApi;
|
||||
};
|
||||
});
|
||||
// (undocumented)
|
||||
decorateRequestBodyForAuth(
|
||||
authProvider: string,
|
||||
|
||||
Reference in New Issue
Block a user