v3.0.0-rc #722
Breee
announced in
Announcements
v3.0.0-rc
#722
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
provider-keycloak v3.0.0-rc
Compared against v2.24.1.
Every claim below links to the code or PR that proves it.
Breaking change:
clientSecretWoVersionis a stringUpstream changed
client_secret_wo_versionfromTypeInttoTypeString(terraform-provider-keycloak#1559),
released in v5.9.0
and pinned in
Makefile:17. A CRD field type cannot change inplace, so the affected kinds got a new API version and a conversion webhook
(#679).
v1alpha1(served)v1alpha2(storage)openidclient.keycloak.crossplane.io/Clienttype: number(clients.yaml:381-385)type: string(clients.yaml:2009-2013)oidc.keycloak.crossplane.io/IdentityProvidertype: numbertype: stringThe same applies to the namespaced variants (
*.keycloak.m.crossplane.io).Conversion is registered by
config/conversion/conversion.go(
BumpVersionForIntToStringChange) and wired into both kinds inconfig/openidclient/config.go:50andconfig/oidc/config.go:24.What you have to do
Nothing at upgrade time —
v1alpha1stays served and existing objects convertin both directions. Migrate at your own pace:
Verify the webhook is wired up after upgrading:
Requirements and constraints:
mounts TLS certificates, i.e.
webhooks.enabled=true(Crossplane default).With webhooks disabled the provider revision stays unhealthy, because the
CRDs declare
spec.conversion.strategy: Webhook(
clients.yaml:9-15).spec.conversionfrom the CRDs; thecaBundleis injected by the Crossplane package manager at runtime.v1alpha1will be removed in a future major release.New managed resources
19 new kinds, each available cluster-scoped (
*.keycloak.crossplane.io) andnamespaced (
*.keycloak.m.crossplane.io), all atv1alpha1.Fine-grained admin permissions (FGAPv2)
AdminPermissionsuserkeycloak_users_admin_permissionsAdminPermissionsrolekeycloak_role_admin_permissionsAdminPermissionsgroupkeycloak_group_admin_permissionsClientAdminPermissionsopenidclientkeycloak_openid_client_admin_permissionsThese require Keycloak 26.2+ with the
admin-fine-grained-authz:v2feature anda realm with
adminPermissionsEnabled: true; Keycloak then creates the realm'sadmin-permissionsclient that acts as resource server(
examples/user/adminpermissions.yaml).Full examples, including permissions scoped to specific clients:
examples/role/adminpermissions.yaml,examples/group/adminpermissions.yaml,examples/openidclient/clientadminpermissions.yaml.Client authorization
ClientAggregatePolicykeycloak_openid_client_aggregate_policyClientAuthorizationClientScopePolicykeycloak_openid_client_authorization_client_scope_policyClientAuthorizationScopekeycloak_openid_client_authorization_scopeClientTimePolicykeycloak_openid_client_time_policyClientJsPolicykeycloak_openid_client_js_policyClientAuthorizationPolicykeycloak_generic_client_authorization_policyAll in group
openidclient.keycloak.crossplane.io.ClientAuthorizationPolicyis the escape hatch for policy types that have nodedicated kind — custom SPI policy providers, referenced by the
typereturnedfrom
PolicyProviderFactory.getId()(
examples/openidclient/clientauthorizationpolicy.yaml).Realm keystores
keycloak_realm_keystore_rsawas the only keystore resource in v2.24.1(
package/crdsat v2.24.1).#653 adds
the remaining five, all in group
realm.keycloak.crossplane.io:KeystoreAesGeneratedkeycloak_realm_keystore_aes_generatedKeystoreEcdsaGeneratedkeycloak_realm_keystore_ecdsa_generatedKeystoreHMACGeneratedkeycloak_realm_keystore_hmac_generatedKeystoreJavaKeystorekeycloak_realm_keystore_java_keystoreKeystoreRsaGeneratedkeycloak_realm_keystore_rsa_generatedCovered end-to-end by
dev/demos/basic/005-realm-keystores-comprehensive.yaml.Identity providers
Group
oidc.keycloak.crossplane.io:FacebookIdentityProviderkeycloak_oidc_facebook_identity_providerGithubIdentityProviderkeycloak_oidc_github_identity_providerMicrosoftIdentityProviderkeycloak_oidc_microsoft_identity_providerRealm client registration
realm.keycloak.crossplane.io/ClientRegistrationPolicyfromkeycloak_realm_client_registration_policy(#708,
examples/realmclientregistrationpolicy.yaml):Typed policy references
Admin-permission and permission resources take a flat list of policy IDs in
Terraform. Those lists are now exposed as one typed reference field per policy
type via
config/multitypes, consolidated back into the original field beforethe Terraform call
(#709,
config/openidclient/config.go:311-378,config/user/config.go:61-128).Added fields:
aggregatePolicies,clientPolicies,clientScopePolicies,groupPolicies,jsPolicies,regexPolicies,rolePolicies,timePolicies,userPolicies(each with*Refs/*Selector).Backwards compatible:
KeepOriginalField: truekeeps the rawpolicieslistsettable for policy types without a managed resource
(
config/openidclient/config.go:311-315).ClientAdminPermissionsadditionally resolvesclientIdsagainst both OpenIDand SAML clients through
clientIdsRefs/samlClientIdsRefs(
config/openidclient/config.go:287-302).Tooling and CI
make generatenow also runs doc generation, sollms.txt/llms-full.txtcan no longer go stale (#721).
make crddifffails on breaking CRD schema changes;CRDDIFF_ALLOW_BREAKING=trueopts out on a major release branch(
Makefile:353-382).diffing
config/schema.jsonagainst the generatedconfig/generated.lst(#684,
#697,
#719).
(#702).
(#696,
#693), and
hugo-versionis no longer misdetected as a Go version(#707).
(#671).
(#680).
Dependencies
terraform-provider-keycloak(schema)Makefile:17github.com/keycloak/terraform-provider-keycloak(Go)v0.0.0-20260810123218-3c42a703d62ego.mod:13, #699Upgrade
Bump the package to
v3.0.0:Confirm the conversion webhook is active (command above). If the provider
revision does not become healthy, check that Crossplane runs with webhooks
enabled.
Optionally migrate
ClientandIdentityProvidermanifests tov1alpha2and quote
clientSecretWoVersion.This discussion was created from the release v3.0.0-rc.
All reactions