brief-airline-84727
07/05/2025, 6:58 AMjolly-florist-66728
07/05/2025, 6:58 AMbrief-airline-84727
07/05/2025, 6:59 AMjolly-florist-66728
07/05/2025, 6:59 AMflytectl
(no client secret), and "confidential" for backend services (with client secret).
2. Verify Scopes and Grant Types
- The scopes requested by Flyte (e.g., openid
, profile
, offline_access
, all
) must be allowed and mapped in your IdP.
- For Keycloak, the scope for refresh tokens is offline_access
, not just offline
.
- The client must allow the "authorization_code" grant type and support PKCE.
3. Check Redirect URI
- The redirect URI in your IdP client configuration must exactly match the one used by Flyte CLI (e.g., http://localhost:53593/callback
).
- Any mismatch will cause the token exchange to fail.
4. Inspect the Token Format
- After authentication, decode the access and ID tokens (they should be three-part JWTs, separated by dots).
- If the access token is not a JWT (sometimes IdPs return opaque tokens), configure your IdP to issue JWTs or use the ID token for authentication if supported.
5. Flyte Configuration
- In your ~/.flyte/config.yaml
, ensure the admin
section has the correct authType: Pkce
, clientId
, and redirectUri
.
- Example:
admin:
endpoint: <your_flyteadmin_endpoint>
authType: Pkce
clientId: flytectl
redirectUri: http://localhost:53593/callback
6. Logs and Error Messages
- If you see errors like "Could not retrieve id token from metadata" or "malformed jwt," it usually means the token is not present or not a JWT.
- Double-check the IdP logs and Flyte logs for more details.
7. Common Pitfalls
- For Keycloak, ensure the client scope is set to offline_access
and not just offline
.
- For Okta, make sure the API access management is enabled and the correct scopes are assigned.
If you follow these steps and still encounter issues, please provide your IdP client configuration and the relevant Flyte config for further troubleshooting.
Sources:
- https://github.com/flyteorg/flyte/issues/4592
- https://github.com/flyteorg/flyte/issues/4955 π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/06/2025, 7:53 PMjolly-florist-66728
07/06/2025, 7:53 PM/login
in Flyte Console usually means authentication is enabled but not properly configured, or the console cannot reach the IdP or FlyteAdmin. To enable PKCE for Flyte Console, you must configure authentication in your Flyte deployment with the correct OIDC settings, clientId, and redirect URIs, and ensure your IdP client allows the PKCE flow and the redirect URI matches /callback
on your Flyte domain.
Specifically, set auth.enabled: true
and auth.oidc.baseUrl
, clientId
, and clientSecret
in your Helm values file, and ensure redirectUri
is set to https://<your-flyte-domain>/callback
in your IdP. See the official authentication configuration guide and Keycloak example for details.
Would you like a step-by-step example for a specific IdP (e.g., Keycloak, Okta, Google)?
Sources:
- Keycloak example
- official authentication configuration guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/06/2025, 7:57 PMjolly-florist-66728
07/06/2025, 7:57 PMvalues.yaml
), set:
auth:
enabled: true
oidc:
baseUrl: https://<your-idp-domain>/auth/realms/<realm>
clientId: <flyte-console-client-id>
clientSecret: <client-secret-if-required>
authorizedUris:
- https://<your-flyte-domain>
internal:
clientId: flytepropeller
clientSecret: <propeller-client-secret>
In your IdP (e.g., Keycloak), register a client for the Flyte Console with:
- Redirect URI: https://<your-flyte-domain>/callback
- Grant type: Authorization Code (with PKCE enabled)
- Scopes: openid
, profile
, offline_access
This setup ensures the Flyte Console uses PKCE for authentication. For more details, see the official authentication configuration guide.
Sources:
- official authentication configuration guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/06/2025, 7:59 PMjolly-florist-66728
07/06/2025, 7:59 PMconfigmap.adminServer.auth.userAuth
in your Helm values or Kubernetes config. This section defines the OIDC settings for user authentication, including the openId
baseUrl, clientId, scopes, and redirect URL. For example:
configmap:
adminServer:
auth:
userAuth:
openId:
baseUrl: https://<your-idp-domain>/auth/realms/<realm>
clientId: <flyte-console-client-id>
scopes:
- openid
- profile
- offline_access
This matches the structure described in the official authentication configuration guide.
Sources:
- official authentication configuration guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/09/2025, 3:08 AMjolly-florist-66728
07/09/2025, 3:08 AMkeyrings.alt
if you are on a headless machine. There is no explicit Flyte command to clear the token cache; you must manually delete the stored credentials as described in this discussion.
Would you like detailed steps for a specific operating system or tool?
Sources:
- https://github.com/flyteorg/flyte/issues/4784 π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/09/2025, 3:14 AMjolly-florist-66728
07/09/2025, 3:14 AMbrief-airline-84727
07/09/2025, 3:17 AMjolly-florist-66728
07/09/2025, 3:17 AMbrief-airline-84727
07/17/2025, 5:02 AMjolly-florist-66728
07/17/2025, 5:02 AMbrief-airline-84727
07/17/2025, 5:05 AMjolly-florist-66728
07/17/2025, 5:05 AMinternal
section of the auth
config in your Helm values or config file. For example:
auth:
enabled: true
internal:
clientId: flytepropeller
clientSecret: <your-client-secret>
clientSecretHash: <bcrypt-hash-of-secret>
This configuration is described in the official authentication configuration guide.
Would you like a step-by-step example for a specific deployment method?
Sources:
- official authentication configuration guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/17/2025, 5:06 AMjolly-florist-66728
07/17/2025, 5:06 AMauth.appAuth.authServerType: External
and configure externalAuthServer
with your IdP's base URL, metadata URL, and allowed audience. Also, set the internal
section with the clientId and clientSecret provided by your IdP for FlytePropeller (or other components). Example:
auth:
enabled: true
appAuth:
authServerType: External
externalAuthServer:
baseUrl: https://<your-idp-domain>/auth/realms/<realm>
metadataUrl: .well-known/openid-configuration
allowedAudience: https://<your-flyte-deployment-URL>
internal:
clientId: <client-id-from-idp>
clientSecret: <client-secret-from-idp>
clientSecretHash: <bcrypt-hash-if-required>
See the official guide for more details.
Would you like a full example for a specific IdP (e.g., Keycloak, Okta, Azure)?
Sources:
- official guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/17/2025, 5:08 AMjolly-florist-66728
07/17/2025, 5:08 AMclientSecret
(the plain secret from your IdP) in the internal
section. The clientSecretHash
is only required if you use Flyte's internal auth server. For external IdPs, provide the clientId
and clientSecret
as given by your IdP, as shown in the official guide.
Would you like a step-by-step example for a specific IdP?
Sources:
- official guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/17/2025, 5:11 AMjolly-florist-66728
07/17/2025, 5:11 AMclientId
and clientSecret
(the plain secret from your IdP) in the secrets.adminOauthClientCredentials
section. The clientSecretHash
is only required for the internal auth server. This is confirmed in the Flyte-core values.yaml and related discussions.
Would you like a sample configuration for Flyte-core with an external IdP?
Sources:
- Flyte-core values.yaml π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/18/2025, 5:35 AMjolly-florist-66728
07/18/2025, 5:35 AMclientId
and clientSecret
values for each propeller in their respective cluster's configuration. Each propeller's Helm values or Kubernetes secret should contain its own credentials, as described in the official guide. This allows each propeller to authenticate independently with the external IdP.
For each cluster, update the secrets.adminOauthClientCredentials
and configmap.adminServer.auth.internal
sections with the specific clientId
and clientSecret
for that propeller.
Would you like a concrete example for multi-cluster configuration?
Sources:
- official guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/18/2025, 5:37 AMjolly-florist-66728
07/18/2025, 5:37 AMvalues-dataplane1.yaml
, values-dataplane2.yaml
), set:
secrets:
adminOauthClientCredentials:
enabled: true
clientId: <unique-client-id-for-this-propeller>
clientSecret: <unique-client-secret-for-this-propeller>
configmap:
adminServer:
auth:
internal:
clientId: <unique-client-id-for-this-propeller>
clientSecret: <unique-client-secret-for-this-propeller>
Each FlytePropeller instance will use its own client credentials to authenticate with FlyteAdmin and the external IdP. This approach is described in the official guide.
Let me know if you need a full multi-cluster example or more details on secret management.
Sources:
- official guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.brief-airline-84727
07/18/2025, 5:39 AMjolly-florist-66728
07/18/2025, 5:39 AMbrief-airline-84727
07/18/2025, 5:40 AMjolly-florist-66728
07/18/2025, 5:40 AMkubectl create secret generic flyte-secret-auth \
--from-literal=client_secret=<UNIQUE_CLIENT_SECRET> \
-n flyte
2. In each data planeβs Helm values (e.g., values-dataplane1.yaml
):
secrets:
adminOauthClientCredentials:
enabled: true
clientId: <UNIQUE_CLIENT_ID>
clientSecret: <UNIQUE_CLIENT_SECRET>
configmap:
adminServer:
auth:
internal:
clientId: <UNIQUE_CLIENT_ID>
clientSecret: <UNIQUE_CLIENT_SECRET>
3. In the control planeβs Helm values (e.g., values-controlplane.yaml
), configure clusters and authentication:
configmap:
clusters:
labelClusterMap:
dataplane1:
- id: dataplane1
weight: 1
dataplane2:
- id: dataplane2
weight: 1
clusterConfigs:
- name: "dataplane1"
endpoint: https://<dataplane1-api>
enabled: true
auth:
type: "file_path"
tokenPath: "/var/run/credentials/dataplane1_token"
certPath: "/var/run/credentials/dataplane1_cacert"
inCluster: false
- name: "dataplane2"
endpoint: https://<dataplane2-api>
enabled: true
auth:
type: "file_path"
tokenPath: "/var/run/credentials/dataplane2_token"
certPath: "/var/run/credentials/dataplane2_cacert"
inCluster: false
adminServer:
auth:
appAuth:
authServerType: External
externalAuthServer:
baseUrl: https://<your-idp-domain>/auth/realms/<realm>
metadataUrl: .well-known/openid-configuration
allowedAudience: https://<your-flyte-deployment-URL>
jolly-florist-66728
07/18/2025, 5:40 AM/var/run/credentials
in the FlyteAdmin pod.
5. Each FlytePropeller instance will use its own clientId/clientSecret to authenticate with FlyteAdmin and the IdP.
For more details, see the official multi-cluster deployment guide and authentication configuration.
Would you like a step-by-step walkthrough for a specific cloud provider or more on secret manager plugins?
Sources:
- official multi-cluster deployment guide π 0 button π 0 button π‘ Hint: Mention @runllm in the thread for followups.