Infrastructure(AWS) Option¶
AWSのマネージドサービスとの連携や、細かなチューニング等について記載します
Observability¶
AWSのObservability関連の各種サービスと連携することが可能です。詳細は下記のAWSドキュメントを参照ください
- Amazon EKS と Kubernetes での Container Insights のセットアップ
- CloudWatch Logs へログを送信する DaemonSet として Fluent Bit を設定する
Pod単位でIAMロールを設定する¶
- AWS EKSではKubernetes内のサービスアカウントとIAMロールを紐付けることにより、Pod単位での細かなアクセスコントロールが可能になります
- 例えば以下のような形でサービスアカウントのannotationにIAMロールのARNを設定することで紐付けることが可能です
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-sa
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/your-role
---
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
serviceAccountName: my-sa
...
- 必要に応じてサービスアカウントを作成してください
- 詳細はサービスアカウントのIAMロール を参照してください
- また、サービスアカウントからIAMロールのTokenを取得するために
IAM OIDCプロバイダー
をクラスタごとに準備する必要があります- 詳細はクラスターの IAM OIDC プロバイダーを作成するには を参照してください
AWS Cognito経由の認証フローを設定する¶
- RISKENのALB認証の設定でCognitoタイプ選択することができます
- Cognitoユーザプールを利用することで、複数のIdpからのログインを許可することも可能になります
- 詳細はAmazon Cognitoを利用する を参照してください
カスタムドメインURLを設定する¶
- Route53のエイリアスレコード を使用してカスタムドメインを設定することが可能です
RDSと連携する¶
- RDSを利用することで、可用性・メンテナンス性・可観測性が向上します
- 特にプロダクション環境ではRDSを利用が推奨です
- RDSへ接続するためには、DBへの接続情報をRISKENのパラメータに設定する必要があります
環境変数 | 説明 |
---|---|
DB_MASTER_HOST | マスターDBのホスト名 |
DB_MASTER_USER | マスターDBのユーザ名 |
DB_MASTER_PASSWORD | マスターDBのパスワード |
DB_SLAVE_HOST | スレーブDB(ReadOnly)のホスト名 |
DB_SLAVE_USER | スレーブDB(ReadOnly)のユーザ名 |
DB_SLAVE_PASSWORD | スレーブDB(ReadOnly)のパスワード |
SQSと連携する¶
- SQSを利用することで、可用性・メンテナンス性・可観測性が向上します
- 特にプロダクション環境ではSQSの利用が推奨です
Parameter Storeにシステムプロパティを登録する¶
RISKENでは各Podに設定する環境変数の値をParameter Storeから取得する機能をサポートしています。 詳細はParametersのページを参照してください
Secrets ManagerでCredentialを管理する¶
WIP
アクセストークン用のエンドポイントを作成する¶
- RISKENのアクセストークン機能を利用してプログラマブルにAPIアクセスさせるためには、アクセストークン用のエンドポイントを用意する必要があります。
-
以下は同一のALBでリスナールールを追加してエンドポイントを作成する例です
-
アクセストークン用にsubdomainを用意する
- 例:
api.your-domain.com
- 例:
- アクセストークン用にALBのリスナールールを追加
# コンソール用(WEBブラウザからのアクセス) IF: - Host Header: console.your-domain.com - Path: /api/* THEN: - Authenticatate: OIDC(*) - ForwardTo: {API用のターゲットグループ} # アクセストークン用(curlなどからのアクセス) IF: - Host Header: api.your-domain.com - Path: /api/* - Source IP: {必要に応じて設定} THEN: - ForwardTo: {API用のターゲットグループ}
Warning
アクセストークン用のルールに認証設定がない分インセキュアにはなりますが、トークンの最初の発行操作はコンソールにログインする必要があります。 また、トークンには有効期限が設定可能です。