Kubernetes

Kubernetes で Keycloak を始める

はじめる前に

Keycloak を目的の用途で使用するために、マシンまたはコンテナプラットフォームが十分なメモリと CPU を提供できることを確認してください。本番環境のサイジングを開始する方法の詳細については、CPU およびメモリリソースのサイジングに関する概念を参照してください。

Minikube がインストールされていることを確認してください。理想的には Ingress アドオンが有効になっていることが望ましいです。

Ingress アドオンが有効になっているか確認するには、次のコマンドを入力してください。

minikube addons list

Ingress アドオンが有効になっていない場合は、次のコマンドを入力して有効にしてください。

minikube addons enable ingress

Keycloak を起動する

Keycloak QuickStarts リポジトリには、Keycloak を Kubernetes にデプロイするのに役立つサンプルファイルが含まれています。

最初の手順として、次のコマンドを入力して Keycloak のデプロイメントとサービスを作成します。

kubectl create -f https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/refs/heads/main/kubernetes/keycloak.yaml

このコマンドは Kubernetes 上で Keycloak を起動し、ユーザー名 admin、パスワード admin で初期管理者ユーザーを作成します。

最終的に複数のサーバーレプリカが必要になる場合は、スケーリングガイドを参照してください。

Ingress アドオンを有効にして Keycloak にアクセスする

次に、次のコマンドを入力して Keycloak の Ingress を作成します。

wget -q -O - https://raw.githubusercontent.com/keycloak/keycloak-quickstarts/refs/heads/main/kubernetes/keycloak-ingress.yaml | \
sed "s/KEYCLOAK_HOST/keycloak.$(minikube ip).nip.io/" | \
kubectl create -f -

wgetsed が利用できない場合は、ファイルをダウンロードし、KEYCLOAK_HOSTkeycloak.<minikube ip address>.nip.io に置き換えて手動でファイルを編集してください。

Keycloak の URL を確認するには、次のコマンドを入力してください。

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 ""

Ingress なしで Keycloak にアクセスする

Ingress アドオンが有効になっていない場合は、別のシェルで次のコマンドを入力してください。

minikube tunnel

これで、次の URL から Keycloak にアクセスできます。

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 ""

これらの URL を覚えておいてください。このガイドの指示に従う際に必要になります。レルムを最初に作成する必要があるため、アカウントコンソールの URL はまだ機能しません。

管理コンソールにログインする

  1. Keycloak 管理コンソールに移動します。

  2. 先ほど作成したユーザー名とパスワードでログインします。

レルムを作成する

Keycloak のレルムはテナントに相当します。各レルムにより、管理者はアプリケーションとユーザーの独立したグループを作成できます。初期状態では、Keycloak には master という単一のレルムが含まれています。このレルムは Keycloak の管理専用に使用し、アプリケーションの管理には使用しないでください。

最初のレルムを作成するには、次の手順に従います。

  1. Keycloak 管理コンソールを開きます。

  2. [現在のレルム] の横にある [レルムの作成] をクリックします。

  3. [レルム名] フィールドに myrealm と入力します。

  4. [作成] をクリックします。

Add realm
図 1. レルムを追加

ユーザーを作成する

初期状態では、レルムにはユーザーがいません。ユーザーを作成するには、次の手順に従います。

  1. [現在のレルム] の横にある myrealm レルムにまだいることを確認してください。

  2. 左側のメニューの [ユーザー] をクリックします。

  3. [新しいユーザーを作成] をクリックします。

  4. フォームに次の値を入力します。

    • ユーザー名: myuser

    • : 任意の名前

    • : 任意の名前

  5. [作成] をクリックします。

Create user
図 2. ユーザーを作成

このユーザーがログインするにはパスワードが必要です。初期パスワードを設定するには、

  1. ページ上部の [認証情報] をクリックします。

  2. [パスワードを設定] フォームにパスワードを入力します。

  3. ユーザーが最初のログイン時にこのパスワードを更新する必要がないように、[一時的] を [オフ] に切り替えます。

Set password
図 3. パスワードを設定

アカウントコンソールにログインする

これでアカウントコンソールにログインして、このユーザーが正しく構成されていることを確認できます。

  1. Keycloak アカウントコンソールを開きます。

  2. myuser と先ほど作成したパスワードでログインします。

アカウントコンソールのユーザーとして、プロフィールの変更、二要素認証の追加、ID プロバイダーアカウントの追加など、アカウントを管理できます。

Keycloak Account Console

最初のアプリケーションを保護する

最初のアプリケーションを保護するには、まずアプリケーションを Keycloak インスタンスに登録することから始めます。

  1. Keycloak 管理コンソールを開きます。

  2. [現在のレルム] の横にある myrealm をクリックします。

  3. [クライアント] をクリックします。

  4. [クライアントを作成] をクリックします。

  5. フォームに次の値を入力します。

    • クライアントタイプ: OpenID Connect

    • クライアント ID: myclient

      Add client
      図 4. クライアントを追加
  6. [次へ] をクリックします。

  7. 標準フローが有効になっていることを確認します。

  8. [次へ] をクリックします。

  9. [ログイン設定] でこれらの変更を行います。

    • 有効なリダイレクト URIhttps://keycloak.dokyumento.jp/app/* に設定します。

    • Web オリジンhttps://keycloak.dokyumento.jp に設定します。

  10. [保存] をクリックします。

Update client
図 5. クライアントを更新

クライアントが正常に作成されたことを確認するために、Keycloak ウェブサイトの SPA テストアプリケーションを使用できます。

  1. https://keycloak.dokyumento.jp/app/ を開きます。

  2. [Keycloak URL] を Keycloak インスタンスの URL に変更します。

  3. [保存] をクリックします。

  4. [サインイン] をクリックして、先ほど起動した Keycloak サーバーを使用してこのアプリケーションを認証します。

次のステップへ

Keycloak を本番環境で実行する前に、次のアクションを検討してください。

  • PostgreSQL などの本番環境対応のデータベースに切り替えます。

  • 独自の証明書で SSL を構成します。

  • 管理者パスワードをより安全なパスワードに切り替えます。

詳細については、サーバーガイドを参照してください。

このページについて