A Kubernetes Operator based on the Operator SDK for creating and syncing resources in Keycloak.
The official documentation might be found in the here.
If you've found a security vulnerability, please look at the instructions on how to properly report it
If you believe you have discovered a defect in the Keycloak Operator please open an issue in our Issue Tracker. Please remember to provide a good summary, description as well as steps to reproduce the issue.
| CustomResourceDefinition | Description |
|---|---|
| Keycloak | Manages, installs and configures Keycloak on the cluster |
| KeycloakRealm | Represents a realm in a keycloak server |
| KeycloakClient | Represents a client in a keycloak server |
| KeycloakBackup | Manage Keycloak database backups |
Note: You will need a running Kubernetes or OpenShift cluster to use the Operator
make cluster/prepare # This will apply the necessary Custom Resource Definitions (CRDs) and RBAC rules to the clusterskubectl apply -f deploy/operator.yaml # This will start the operator in the current namespaceOnce the CRDs and RBAC rules are applied and the operator is running. Use the examples from the operator.
kubectl apply -f deploy/examples/keycloak/keycloak.yamlNote: You will need a running Kubernetes or OpenShift cluster to use the Operator
$GOPATH/src/github.com/keycloak/keycloak-operatormake setup/mod cluster/preparemake code/run
-- The above step will launch the operator on the local machine
-- To see how do debug the operator or how to deploy to a cluster, see below alternatives to step 3make cluster/create/examplesminikube addons enable ingress ./hack/modify_etc_hosts.shkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-0.32.0/deploy/static/provider/cloud/deploy.yaml
(see also https://kubernetes.github.io/ingress-nginx/deploy/) ./hack/modify_etc_hosts.sh keycloak.local 127.0.0.1make test/e2eTo clean the cluster (Removes CRDs, CRs, RBAC and namespace)
make cluster/cleanDebug the operator in Goland
Go Build debug configuration* Name = Keycloak Operator
* Run Kind = File
* Files = <project full path>/cmd/manager/main.go
* Working Directory = <project full path>
* Environment = KUBERNETES_CONFIG=<kube config path>;WATCH_NAMESPACE=keycloak
Debug the operator in VS Code
{
"name": "Keycloak Operator",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${workspaceFolder}/cmd/manager/main.go",
"env": {
"WATCH_NAMESPACE": "keycloak",
"KUBERNETES_CONFIG": "<kube config path>"
},
"cwd": "${workspaceFolder}",
"args": []
}
Deploy the operator into the running cluster
operator-sdk build <image registry>/<organisation>/keycloak-operator:<tag>. e.g. operator-sdk build quay.io/keycloak/keycloak-operator:testimage property in deploy/operator.yaml to the above full image pathkubectl apply -f deploy/operator.yaml -n <NAMESPACE>Debug the e2e operator tests in Goland
Test kind to PackageWorking directory to <your project directory>Go tool arguments to -i -parallel=1Program arguments to -root=<your project directory> -kubeconfig=<your home directory>/.kube/config -globalMan deploy/empty-init.yaml -namespacedMan deploy/empty-init.yaml -test.v -singleNamespace -localOperator -test.timeout 0| Command | Description |
|---|---|
make cluster/prepare | Creates the keycloak namespace, applies all CRDs to the cluster and sets up the RBAC files |
make cluster/clean | Deletes the keycloak namespace, all keycloak.org CRDs and all RBAC files named keycloak-operator |
make cluster/create/examples | Applies the example Keycloak and KeycloakRealm CRs |
| Command | Description |
|---|---|
make test/unit | Runs unit tests |
make test/e2e | Runs e2e tests with operator ran locally |
make test/e2e-latest-image | Runs e2e tests with latest available operator image running in the cluster |
make test/e2e-local-image | Runs e2e tests with local operator image running in the cluster |
make test/coverage/prepare | Prepares coverage report from unit and e2e test results |
make test/coverage | Generates coverage report |
| Command | Description |
|---|---|
make setup | Runs setup/mod setup/githooks code/gen |
make setup/githooks | Copys githooks from ./githooks to .git/hooks |
make setup/mod | Resets the main module's vendor directory to include all packages |
make setup/operator-sdk | Installs the operator-sdk |
make code/run | Runs the operator locally for development purposes |
make code/compile | Builds the operator |
make code/gen | Generates/Updates the operator files based on the CR status and spec definitions |
make code/check | Checks for linting errors in the code |
make code/fix | Formats code using gofmt |
make code/lint | Checks for linting errors in the code |
| Command | Description |
|---|---|
make setup/travis | Downloads operator-sdk, makes it executable and copys to /usr/local/bin/ |
All images used by the Operator might be controlled using dedicated Environmental Variables:
| Image | Environment variable | Default |
|---|---|---|
Keycloak | RELATED_IMAGE_KEYCLOAK | quay.io/keycloak/keycloak:9.0.2 |
RHSSO for OpenJ9 | RELATED_IMAGE_RHSSO_OPENJ9 | registry.redhat.io/rh-sso-7/sso74-openshift-rhel8:7.4-1 |
RHSSO for OpenJDK | RELATED_IMAGE_RHSSO_OPENJDK | registry.redhat.io/rh-sso-7/sso74-openshift-rhel8:7.4-1 |
| Init container | RELATED_IMAGE_KEYCLOAK_INIT_CONTAINER | quay.io/keycloak/keycloak-init-container:master |
| Backup container | RELATED_IMAGE_RHMI_BACKUP_CONTAINER | quay.io/integreatly/backup-container:1.0.10 |
| Postgresql | RELATED_IMAGE_POSTGRESQL | registry.redhat.io/rhel8/postgresql-10:1 |
Before contributing to Keycloak Operator please read our contributing guidelines.
Content type
Image
Digest
Size
111 MB
Last updated
almost 6 years ago
docker pull pacecar/keycloak-operator