2023-02-09 09:29:41 +00:00
|
|
|
<#import "/templates/guide.adoc" as tmpl>
|
|
|
|
|
|
|
|
<@tmpl.guide
|
|
|
|
title="Kubernetes"
|
|
|
|
summary="Get started with Keycloak on Kubernetes">
|
|
|
|
|
|
|
|
:links-admin-console: Keycloak Admin Console
|
|
|
|
:links-account-console: Keycloak Account Console
|
|
|
|
|
2023-02-13 07:40:02 +00:00
|
|
|
== Before you start
|
2023-02-09 09:29:41 +00:00
|
|
|
|
|
|
|
Make sure you have Minikube installed, ideally with the Ingress addon enabled.
|
|
|
|
|
|
|
|
To check if you have the Ingress addon enabled run:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
minikube addons list
|
|
|
|
----
|
|
|
|
|
|
|
|
If the Ingress addon is not enabled run the following to enable it:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
minikube addons enable ingress
|
|
|
|
----
|
|
|
|
|
2023-02-13 07:40:02 +00:00
|
|
|
== Run Keycloak
|
2023-02-09 09:29:41 +00:00
|
|
|
|
|
|
|
The Keycloak QuickStarts repository includes some example files to help deploy Keycloak to Kubernetes.
|
|
|
|
|
|
|
|
Let's start with creating the Keycloak deployment and service:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
kubectl create -f https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/latest/kubernetes-examples/keycloak.yaml
|
|
|
|
----
|
|
|
|
|
|
|
|
This will start Keycloak on Kubernetes. It will also create an initial admin user with username `admin` and password
|
|
|
|
`admin`.
|
|
|
|
|
2023-02-13 07:40:02 +00:00
|
|
|
=== Access Keycloak with Ingress addon enabled
|
2023-02-09 09:29:41 +00:00
|
|
|
|
|
|
|
Start by creating an Ingress for Keycloak:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
wget -q -O - https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/latest/kubernetes-examples/keycloak-ingress.yaml | \
|
|
|
|
sed "s/KEYCLOAK_HOST/keycloak.$(minikube ip).nip.io/" | \
|
|
|
|
kubectl create -f -
|
|
|
|
----
|
|
|
|
|
|
|
|
If you don't have `wget` and `sed` available, download the file and manually edit the file replacing `KEYCLOAK_HOST`
|
|
|
|
with `keycloak.<minikube ip address>.nip.io`.
|
|
|
|
|
|
|
|
Run the following to find out the URLs of Keycloak:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
KEYCLOAK_URL=https://keycloak.$(minikube ip).nip.io &&
|
|
|
|
echo "" &&
|
|
|
|
echo "Keycloak: $KEYCLOAK_URL" &&
|
|
|
|
echo "Keycloak Admin Console: $KEYCLOAK_URL/admin" &&
|
|
|
|
echo "Keycloak Account Console: $KEYCLOAK_URL/realms/myrealm/account" &&
|
|
|
|
echo ""
|
|
|
|
----
|
|
|
|
|
|
|
|
Remember these URLs as you will need them throughout this guide. The URL for the account console won't work
|
|
|
|
right now as you will need to create the realm first.
|
|
|
|
|
2023-02-13 07:40:02 +00:00
|
|
|
=== Access Keycloak without Ingress
|
2023-02-09 09:29:41 +00:00
|
|
|
|
|
|
|
If you don't have the Ingress addon enabled, first run in a separate shell:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
minikube tunnel
|
|
|
|
----
|
|
|
|
|
|
|
|
and you can now access Keycloak from the following URL:
|
|
|
|
|
|
|
|
[source,bash,subs="attributes+"]
|
|
|
|
----
|
|
|
|
KEYCLOAK_URL=http://$(minikube ip):$(kubectl get services/keycloak -o go-template='{{(index .spec.ports 0).nodePort}}') &&
|
|
|
|
echo "" &&
|
|
|
|
echo "Keycloak: $KEYCLOAK_URL" &&
|
|
|
|
echo "Keycloak Admin Console: $KEYCLOAK_URL/admin" &&
|
|
|
|
echo "Keycloak Account Console: $KEYCLOAK_URL/realms/myrealm/account" &&
|
|
|
|
echo ""
|
|
|
|
----
|
|
|
|
|
|
|
|
Remember these URLs as you will need them throughout this guide. The URL for the account console won't work
|
|
|
|
right now as you will need to create the realm first.
|
|
|
|
|
|
|
|
include::templates/realm-config.adoc[]
|
|
|
|
|
|
|
|
include::templates/login-to-account.adoc[]
|
|
|
|
|
|
|
|
include::templates/first-app.adoc[]
|
|
|
|
|
|
|
|
include::templates/next.adoc[]
|
|
|
|
|
|
|
|
</@tmpl.guide>
|