Keycloakとtraefikを使って認証環境を作る練習

個人的に知識があいまいな認証回りの最小限の知見整理として、Traefik を用いて Keycloak で発行したアクセストークンが無いとアプリケーションにアクセスできないようにする最小限の設定を考えてみました。

ちなみに GPT-4o にフォローしてもらって大枠を整理し、動作に不具合が起きた部分を再度調べて…という流れで進めました。

【要注意】 この手順に従って構成した環境は本番利用するにはセキュリティ面で問題があるので、あくまで Keycloak や Traefik の設定ポイントの参考としてください。

検証した各ミドルウェアのバージョン

  • minikube: v1.33.1
  • Keycloak: 24.0.4
  • Traefik: 2.11.2
    • traefik-jwt-plugin: v0.7.1

前提条件

  1. Minikube がインストールされている
  2. kubectl がインストールされている
  3. 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]