個人的に知識があいまいな認証回りの最小限の知見整理として、Traefik を用いて Keycloak で発行したアクセストークンが無いとアプリケーションにアクセスできないようにする最小限の設定を考えてみました。
ちなみに GPT-4o にフォローしてもらって大枠を整理し、動作に不具合が起きた部分を再度調べて…という流れで進めました。
【要注意】 この手順に従って構成した環境は本番利用するにはセキュリティ面で問題があるので、あくまで Keycloak や Traefik の設定ポイントの参考としてください。
検証した各ミドルウェアのバージョン
- minikube: v1.33.1
- Keycloak: 24.0.4
- Traefik: 2.11.2
- traefik-jwt-plugin: v0.7.1
前提条件
- Minikube がインストールされている
- kubectl がインストールされている
- Helm がインストールされている
ステップ 1: Minikube のセットアップ
まず、Minikube を起動します。
minikube start
ステップ 2: Keycloak のデプロイ
Keycloak を最低限の構成でデプロイするために、以下の Kubernetes マニフェストファイルを作成します。keycloak-deployment.yaml
という名前で保存してください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: keycloak
labels:
app: keycloak
spec:
replicas: 1
selector:
matchLabels:
app: keycloak
template:
metadata:
labels:
app: keycloak
spec:
containers:
- name: keycloak
image: quay.io/keycloak/keycloak:24.0.4
args: ["start-dev"]
env:
- name: KEYCLOAK_ADMIN
value: admin
- name: KEYCLOAK_ADMIN_PASSWORD
value: admin
- name: KC_PROXY
value: "edge"
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: keycloak
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: keycloak
次に、Keycloak のデプロイメントとサービスを作成します。
[Read More]