前提条件
- MySQL インスタンス(v8.0+)にアクセス可能な Kubernetes クラスター(v1.24 以降)
- 最低限必要なクラスターリソース:4 vCPU、16GB RAM
- テーブルに対する読み書きおよび削除権限を持つデータベース認証情報
- Helm(バージョン 3.17.0 以降)
- API、Console、IDP エンドポイント用のドメイン名
インストール手順
Authlete レジストリから Helm チャートおよびコンテナイメージにアクセスするには、以下の手順に従ってください。セットアップフェーズ
1. 組織の作成
- Authlete Console にログインします。
- 自社用の組織を作成します。
- Organization ID を控えておきます。
2. アクセスのリクエスト
- Organization ID と Organization Name を Authlete サポートに共有します。
- Authlete は、あなたの組織に対してレジストリアクセスを許可します。
3. 組織トークンの発行
- Authlete Console にて、組織用の Token を発行します。
- Organization ID と Token は認証に必要なので手元に保持しておいてください。
準備フェーズ
1. Kubernetes ネームスペースの作成
2. Helm レジストリへのログイン
以下のコマンドを使用してログインします:<ORG_ID> および <TOKEN> を実際の値に置き換えてください。
ログインが完了すると、レジストリから Helm チャートを取得できるようになります。
3. Helm チャートの取得
Authlete の Helm チャートは OCI フォーマットで配布されています。以下のコマンドでチャートを取得してローカルに展開します:4. イメージレジストリの設定
Authlete のコンテナイメージへのアクセスには 2 つのオプションがあります: オプション A: 直接レジストリアクセス(開発/評価環境) 開発または評価目的の環境では、Authlete のレジストリから直接イメージを取得可能です:5. イメージのミラー
信頼性と制御性を高めるため、Authlete 提供のコンテナイメージを自社のレジストリにミラーリングすることを推奨します。これにより、Authlete のレジストリへの直接依存を避け、再現性のあるデプロイが可能になります。| イメージ | 説明 | 対応バージョンタグ |
|---|---|---|
| server | OAuth 2.0 および OpenID Connect 処理を担うコア API サーバー | 3.0.27 |
| server-db-schema | API サーバー用の DB 初期化ツール | v3.0.27 |
| idp | ユーザー認証と管理を行う ID プロバイダサーバー | 1.0.23 |
| idp-db-schema | IdP サーバー用のデータベーススキーマ初期化ツール | v1.0.23 |
| console | プラットフォーム設定および監視用の React ベース管理コンソール | 1.0.17 |
| nginx | TLS 終端とルーティングを担当する Nginx リバースプロキシ | 1.29.1 |
| valkey | パフォーマンス向上と DB 負荷軽減のためのキャッシュサービス | 8.0.1 |
| gce-proxy | GCP 環境での安全な DB 接続のための Cloud SQL プロキシ | 1.37.0 |
| authlete-bootstrapper | プラットフォーム初回デプロイ時のみ使用される初期化サービス | 1.1.0 |
values.yaml を更新して、インストール前にミラーしたイメージパスを使用してください。
代替として、crane を使用してイメージを直接プッシュすることもできます。
crane を使用したミラー
設定フェーズ
1. Values とシークレットの設定
-
既定の
values.yamlはチャートに同梱されています。必要に応じて内容を確認・変更してください。 -
global.repoを自社レジストリに設定します。
- ドメイン名を
domainsセクションに設定します:
2. TLS 証明書の設定
- ドメイン用の TLS 証明書(例: Let’s Encrypt や社内の証明機関から取得)を用意し、
authleteネームスペースにkubernetes.io/tlsタイプの Kubernetes シークレットを作成してください。証明書はすべてのドメイン(例: api.example.com、login.example.com、console.example.com)をカバーしている必要があります。ワイルドカードまたは SAN 証明書を使用できます。
3. データベースおよびメモリキャッシュへの TLS 接続を有効化 (任意)
アプリケーション設定
環境変数の変更だけで TLS 暗号化を有効化できます。 Redis: Redis 接続で TLS 暗号化が必要な場合は、MEMCACHE_HOST にrediss:// を指定します。
sslMode プロパティで有効化します。
注記: Cloud SQL Proxy を使用する場合、接続はプロキシにより既に暗号化されるため、sslMode は disable を設定してください。追加の TLS 層を有効にすると動作しません。
注記: Redis やデータベースが提示する TLS 証明書がプライベート CA によって発行されている場合は、すべての証明書を含むカスタムバンドルを作成し、アプリケーションに読み込ませる必要があります。詳細は Private CA セクションを参照してください。
-
Private CA (Optional)
- ConfigMap 名は “custom-ca-bundle” とすること
- 少なくとも
ca-bundle.p12とca-bundle.crtの 2 つのキーを含めること
CA バンドルの作成
trust-manager のドキュメント に記載の方法で公開 CA バンドルを抽出することを推奨します。以下では、そのバンドルを含む ConfigMap の作成方法を説明します。trust-manager を使ったバンドル作成 (任意)
trust-manager を使うと、Kubernetes で信頼バンドルの管理が容易になります。インストール手順は trust-manager の公式ドキュメント を参照してください。trust-manager をインストールしたら、単一の Bundle オブジェクトを作成します。必要な証明書をすべて含む ConfigMap は自動的に生成されます。 以下は trust-manager が最終バンドルを組み立てるためのBundle の例です。この Bundle のマニフェストファイル名は bundle-creation.yaml とします。
注記: cert-manager が提供する公式の Debian trust パッケージを使用している場合は、trust パッケージが最新に保たれているか定期的に確認してください。
バンドルの手動作成
以下の手順では、docker コマンドを使ってカスタムバンドルを数ステップで作成します。注記: 以下のチュートリアルはサンプルコードです。バンドルの作成・保管・更新を安全に行うことはお客様の責務です。
gen-bundles.shファイルを作成
- バンドルをビルド
ca-bundle.p12とca-bundle.crtが準備できたら、次のように Kubernetes の ConfigMap を作成します。
注記::
trust-manager のバンドル作成に使用されている現在の Debian ベースイメージは docker.io/library/debian:12-slim で、ca-certificates のターゲットバージョンは 20230311+deb12u1.0 です。
アプリケーションからカスタムバンドルを読み込む
バンドルの準備ができたら、アプリケーションから利用できるように追加設定を行います。.Values.global.tls.caBundle.enabled を “true” に設定して、バンドルをアプリケーションの Pod にマウントします。
バンドルの更新
新しいバンドルを作成して既存のものと置き換えた場合は、IdP、Authlete Server、プロキシの各 Pod (アプリケーション) を再起動してください。再起動時に、アプリケーションが更新後のバンドルを読み込みます。5. データベース接続を設定
本プラットフォームは 2 つのデータベースを必要とします。1 つは API サーバー用、もう 1 つは IdP サーバー用です。secret-values.yaml で接続情報を設定します。
注記: MySQL 8.0+ を使用する場合、データベースは次の設定で構成してください:
- 文字セット:
utf8mb4- 照合順序:
utf8mb4_0900_ai_ci
- チャートアーカイブには
secret-values.yamlのテンプレートも同梱されています。データベースおよび Authlete 管理者の資格情報に合わせて修正してください。
※ AWS-EKSでMySQLデータベースのDNS名を使用される場合: ・RDS-Proxyを使用する場合:host: sample-db.proxy-stu901vwx234.us-east-1.rds.amazonaws.com・RDS-Proxyを使用しない場合:host: sample-db.cluster-stu901vwx234.us-east-1.rds.amazonaws.com
6. キャッシュの設定
以下が現在サポートされているキャッシュソリューション:マネージドキャッシュサービス
本番環境ではマネージドキャッシュサービスの利用を推奨します。以下のサービスに対応しています:- Google Cloud Platform:Memorystore for Valkey
- Amazon Web Services:ElastiCache for Redis or Serverless-Valkey
- Azure:Azure Cache for Redis
GCP 利用者への注意:Memorystore for Valkey を使用する際は、Private Service Connect(PSC)とサービス接続ポリシーを利用した接続を推奨します。これがサポートされている唯一のネットワーク方式です。詳細な手順は Memorystore for Valkey ネットワーク構成ガイド を参照してください。マネージドキャッシュサービスを使用するには、
values.yamlを下記の通りに編集します:
注意:キャッシュサービスがクラスターモードの場合は以下の環境変数も追加してください:
7. 外部シークレットマネージャー
外部シークレットマネージャーを使用する場合、Helmデプロイに必要なシークレットがクラスター上に存在し、適切に構成されている必要があります。シークレットが見つからない場合は、デプロイおよびアップグレードの工程が失敗します。 必要なシークレットはauthlete-credentialsとproxy-certs(proxy-certsを外部シークレットマネージャーで管理する場合)です。
外部シークレットマネージャーにauthlete-secretのシークレットを追加します。
Cache Authが無効の場合:
Cache Authが有効の場合:
authlete-proxy-secretのシークレットを作成してください
externalSecrets機能を有効化する場合は、values.yamlを下記のように更新して下さい。
8. Podアフィニティの設定
Podアフィニティを有効化するには、values.yamlを下記のように編集してください:
apiAffinityはデフォルトとしてfalseに設定されており、その場合podアフィニティは無効になります。
Podアフィニティを有効化することによって、API podと同じノードに存在するプロキシpodをスケジューリングすることが可能になり、パーフォーマンスを向上させ、またネットワークレイテンシーを軽減させることができます。
9. その他の設定オプション
プロキシ設定
ドメイン名が非常に長い場合、map_hash_max_size パラメータの制限に達する可能性があります。mapHashBucketSize と serverNamesHashBucketSize の値を増やすことで回避できます。
DB スキーマ更新フック
Liquibase の変更セットに含まれる新しい変更を自動適用し、アプリケーションと同じバージョンのデータベーススキーマを保つため、DB スキーマ更新フックを導入しました。これらのフックは冪等であり、アップグレード版と旧版の間でスキーマに変更がない限り、既存のデータベーススキーマを変更しません。 これらのフックは、インストール時およびアプリケーションバージョン更新時にスキーマを作成・更新するために必要です。ただし、新規アプリケーションをデプロイしない、またはスキーマ変更が見込まれない場合は無効化できます。デプロイフェーズ
1. コアプラットフォームコンポーネントのインストール
Helm を使用してコアコンポーネントをインストールします。外部シークレットマネージャーを使用しない場合:
外部シークレットマネージャーを使用する場合:
インストールの確認:
2. オプションコンポーネントのインストール
要件に応じて、以下の任意コンポーネントをインストールすることも可能です。- 管理コンソール: Authlete プラットフォームの主な設定 UI
- IdP サーバー: ユーザー認証と管理のための OIDC 準拠 IdP
外部シークレットマネージャーを使用しない場合:
外部シークレットマネージャーを使用する場合:
オプションコンポーネントの確認:
3. ロードバランサーの構成
最後のステップとして、Authlete デプロイメントを外部に公開するためのロードバランサーサービスを構成します。- まず、クラウドプロバイダーで静的外部 IP アドレスを予約します。
注意:以下のコマンドは GCP 専用です。他のクラウドプロバイダー(AWS、Azure など)を使用している場合は、各プロバイダーのドキュメントを参照して静的 IP アドレスを予約してください。
GCP では、GKE LoadBalancer サービスが同じリージョンに割り当てられた IP のみをサポートするため、リージョン固定の静的 IP を予約する必要があります。
- 予約した IP を使用してロードバランサーサービスを作成します。以下の内容で
proxy-lb-service.yamlというファイルを作成してください:
- ロードバランサー設定を適用します:
- ロードバランサーの構成を確認します:
EXTERNAL-IP に予約した IP アドレスが表示されれば、Authlete デプロイメントは HTTPS 経由でその IP を通じてアクセス可能になります。
4. ドメインとロードバランサーのマッピング
3 つのドメインすべてに対して、ロードバランサーの IP アドレスを指すように DNS レコードを作成してください:- ブラウザで
https://console.your-domain.comにアクセス secret-values.yamlに設定した管理者アカウントでログイン- Authlete サービスの構成を開始
注意:コンソールにアクセスできない場合は、以下の項目を確認してください:
- DNS レコードがすべてのネームサーバーに伝播されているか
- ロードバランサーのヘルスチェックが成功しているか
- TLS 証明書がすべてのドメインに対して有効であるか
Helmチャートチェンジログ
現在のHelmチャートバージョンは2.1.3です。
2025年11月06日アップデート
- Redisに対してACL(Access Control List)サポートが実装されました
2025年10月02日アップデート
- 外部シークレットマネージャーのサポートが実装されました
2025年09月12日アップデート
- プライベート証明書認証局(CA)を通したTLS接続のサポートが実装されました
- 不足していた内部接続向けのIPレンジが追加されました
map_hash_bucket_sizeおよびserver_names_hash_bucket_sizeパラメーターが、より大きな値を受け付けられるように拡張されました