AWS
このドキュメントでは、AWS(EKS)上でDiarkisを構築、デプロイ、オーケストレーションするプロセスについて説明します。
概要
提供されているk8s設定を使用すれば、Diarkisの使用は簡単です。ただし、これらの設定は初期段階のものであるため、必要に応じて自由に修正してください。
必要条件
Docker のいずれかの設定:
AWSアカウント と請求が有効になっていること。AWSアカウントやプロジェクトをお持ちでない場合は、こちらを参照して始めてください。
Kubernetes CLI (
kubectl
コマンド) はこちらからダウンロード可能です。EKS CLI (
eksctl
コマンド) はAWS Workshopのこちらからダウンロード可能です。
セットアップガイド
以下の手順で、テンプレートDiarkisサーバークラスタの構築、デプロイ、オーケストレーションのプロセスをご案内します。これらの手順で、開始するのに十分な情報が得られるはずです。
Diarkisイメージ用のECRを作成
Diarkisコンポーネントイメージをデプロイ用にプッシュする前に、まずリモートECRレジストリを準備する必要があります。ベースイメージとしてデフォルトでalpine
を使用しており、Docker Hubから取得できます。
aws sts get-caller-identity # 正しいターゲットを確認
aws ecr create-repository --repository-name http
aws ecr create-repository --repository-name udp
aws ecr create-repository --repository-name tcp
aws ecr create-repository --repository-name mars
Diarkis用のEKSを作成して接続
eksctl create cluster -f cloud/aws/cluster_config.yaml # 約10分かかります
注意: 選択したAZでNATゲートウェイの互換性に関するエラーが発生した場合は、別のAZを選択してください
aws eks --region ap-northeast-1 update-kubeconfig --name diarkis # k8s認証情報を取得
EKSファイアウォールを開放
EKSノードへの0.0.0.0/0
からのポート7000-8000
のTCPおよびUDPトラフィックを許可します。
セキュリティグループ名eks-cluster-sg-diarkis-*
で設定することをお勧めします。
サーバーイメージにタグを付けてプッシュ
server-template
で生成されたプロジェクトルートから、以下のコマンドを実行します:
make build-local
./remote_bin
にサーバー実行ファイル(udp
、tcp
、http
、mars
)を生成した後、コンテナイメージをビルドします:
make setup-aws
make build-container-aws
make push-container-aws
マニフェストを適用
kustomize build k8s/aws/overlays/dev0 | kubectl apply -f -
以下の4つのコンポーネントが実行中かどうかを確認します:
$ kubectl get po -n dev0
NAME READY STATUS RESTARTS AGE
http-5c7dbbb6d7-lhjlm 1/1 Running 0 3d14h
mars-0 1/1 Running 0 3d14h
tcp-88dc5f97d-7sqk9 1/1 Running 0 3d14h
udp-fdc6bbccc-dwc5w 1/1 Running 0 3d14h
Diarkisクラスタの確認
まず、パブリックエンドポイントを取得します:
EXTERNAL_IP=$(kubectl get svc http -o json -n dev0 | jq -r '.status.loadBalancer.ingress[].hostname')
kubectl get svc -n dev0 -o wide # または、このコマンドを使用
取得したEXTERNAL_IP
にHTTP GETリクエストを送信します:
curl ${EXTERNAL_IP}/auth/1
以下のようなレスポンスが返ってきた場合、正常に動作しています:
{
"TCP": "ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com:7201",
"UDP": "ec2-yy-yy-yy-yy.ap-northeast-1.compute.amazonaws.com:7101",
"sid": "xxxxxxxxxx",
"encryptionKey": "xxxxxxxxxx",
"encryptionIV": "xxxxxxxxxx",
"encryptionMacKey": "xxxxxxxxxx"
}
項目が不足している場合、デプロイされたコンポーネントのいずれかに問題がある可能性があります。この時点で、Diarkisサポートに連絡することをお勧めします。
クラスタオートスケーラーのセットアップ
kubectl apply -f cluster-autoscaler-autodiscover.yaml
このファイルはdiarkis
というクラスタ名用に事前設定されています。異なるクラスタ名を使用する場合は、マニフェスト内のdiarkis
への参照を修正してください。
ログコレクターのセットアップ
コンテナからのログはCloudWatch Logsを使用して集約できます。
fluent-bit
は既にamazon-cloudwatch
名前空間にデプロイされていますが、権限が設定されていません。
diarkis-public
とdiarkis-private
ノードにCloudWatchAgentServerPolicy
を割り当ててログを集約します。ログは/aws/containerinsights/Cluster_Name/application
の下に表示され、フィルタリングが可能です。
最終更新
役に立ちましたか?