翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Terraform を使用して Amazon EKS に CockroachDB クラスターをデプロイする
Sandip Gangapadhyay と Kalyan Senthilnathan、Amazon Web Services
概要
このパターンは、CockroachDB
対象者
このパターンを実装するには、以下について理解しておくことをお勧めします。
HashiCorp Terraform の概念とコードとしてのインフラストラクチャ (IaC) プラクティス
AWS のサービス、特に Amazon EKS
StatefulSets、サービス設定などの Kubernetes の基本
分散 SQL データベース
TLS 証明書管理などのセキュリティの概念。
DevOps プラクティス、CI/CD ワークフロー、インフラストラクチャの自動化
前提条件と制限
前提条件
アクティブな AWS アカウント
Amazon EKS クラスターにリソースをデプロイするアクセス許可
ノードにラベルが付けられた Amazon EKS クラスターバージョン v1.23 以降
node=cockroachdbAmazon EKS クラスターにインストールされた Amazon Elastic Block Store Container Storage Interface (CSI) ドライバー
バージョン 1.19.0 以降 Terraform CLI バージョン 1.0.0 以降、インストール
済み kubectl、インストール済み
「インストール済み
」Git AWS Command Line Interface (AWS CLI) バージョン 2.9.18 以降、インストールおよび設定済み
制限事項
CockroachDB Kubernetes 演算子は、マルチリージョンデプロイ用の複数の Kubernetes クラスターをサポートしていません。その他の制限については、「Orchestrate CockroachDB Across Multiple Kubernetes Clusters
(CockroachDB ドキュメント)」およびCockroachDB Kubernetes Operator (GitHub)」を参照してください。 永続ボリュームクレーム (PVCs) の自動プルーニングは現在、デフォルトで無効になっています。つまり、ノードを廃止して削除した後、オペレーターはポッドにマウントされた永続ボリュームを削除しません。詳細については、CockroachDB ドキュメントの「自動 PVC プルーニング
」を参照してください。
製品バージョン
CockroachDB バージョン 22.2.2
アーキテクチャ
ターゲットアーキテクチャ
次の図は、Virtual Private Cloud (VPC) 内の 3 つの AWS アベイラビリティーゾーンにまたがる高可用性 CockroachDB のデプロイを示しています。CockroachDB ポッドは Amazon EKS を通じて管理されます。このアーキテクチャは、ユーザーが Network Load Balancer を介してデータベースにアクセスする方法を示しています。これにより、トラフィックが CockroachDB ポッドに分散されます。ポッドは各アベイラビリティーゾーンの Amazon Elastic Compute Cloud (Amazon EC2) インスタンスで実行され、耐障害性と耐障害性を提供します。

作成されたリソース
このパターンで使用される Terraform モジュールをデプロイすると、次のリソースが作成されます。
Network Load Balancer – このリソースは、クライアントリクエストのエントリポイントとして機能し、CockroachDB インスタンス全体にトラフィックを均等に分散します。
CockroachDB StatefulSet – StatefulSet は、Amazon EKS クラスター内の CockroachDB デプロイの目的の状態を定義します。CockroachDB ポッドの順序付けられたデプロイ、スケーリング、更新を管理します。
CockroachDB ポッド – これらのポッドは、Kubernetes ポッド内のコンテナとして実行される CockroachDB のインスタンスです。これらのポッドは、分散クラスター全体のデータを保存および管理します。
CockroachDB データベース – これは、複数のポッドにまたがる CockroachDB によって管理される分散データベースです。高可用性、耐障害性、パフォーマンスのためにデータをレプリケートします。
ツール
AWS のサービス
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンド AWS のサービス を使用して を操作するのに役立つオープンソースツールです。
Amazon Elastic Kubernetes Service (Amazon EKS) を使用すると、独自の Kubernetes コントロールプレーンやノードをインストールまたは維持 AWS することなく、 で Kubernetes を実行できます。
その他のツール
HashiCorp Terraform
は、コードを使用してクラウドインフラストラクチャとリソースを割り当てて管理するのに役立つ Infrastructure as Code (IaC) ツールです。 kubectl
は、Kubernetes クラスターに対してコマンドを実行するためのコマンドラインインターフェイスです。
コードリポジトリ
このパターンのコードは、GitHub Deploy a CockroachDB cluster in Amazon EKS using Terraform repository
modulesfolder – このフォルダには、CockroachDB の Terraform モジュールが含まれています。mainfolder – このフォルダには、CockroachDB 子モジュールを呼び出して CockroachDB データベースクラスターを作成するルートモジュールが含まれています。
ベストプラクティス
3 つ未満のノードにスケールダウンしないでください。これは CockroachDB のアンチパターンと見なされ、エラーを引き起こす可能性があります。詳細については、CockroachDB ドキュメントの「クラスタースケーリング
」を参照してください。 Karpernter または Cluster Autoscaler を使用して Amazon EKS Auto Scaling を実装します。これにより、CockroachDB クラスターは水平方向および新しいノードを自動的にスケーリングできます。詳細については、Amazon EKS ドキュメントの「Karpenter と Cluster Autoscaler を使用したクラスターコンピューティングのスケーリング」を参照してください。
注記
podAntiAffinityKubernetes スケジューリングルールにより、1 つの Amazon EKS ノードでスケジュールできる CockroachDB ポッドは 1 つだけです。Amazon EKS セキュリティのベストプラクティスについては、Amazon EKS ドキュメントの「セキュリティのベストプラクティス」を参照してください。
CockroachDB の SQL パフォーマンスのベストプラクティスについては、CockroachDB ドキュメントの「SQL パフォーマンスのベストプラクティス
」を参照してください。 Terraform 状態ファイルの Amazon Simple Storage Service (Amazon S3) リモートバックエンドの設定の詳細については、Terraform ドキュメントのAmazon S3
」を参照してください。
エピック
| タスク | 説明 | 必要なスキル |
|---|---|---|
コードリポジトリを複製します。 | リポジトリのクローンを作成するには、次のコマンドを入力します。
| DevOps エンジニア、Git |
Terraform 変数を更新します。 |
| DevOps エンジニア、Terraform |
| タスク | 説明 | 必要なスキル |
|---|---|---|
インフラストラクチャを準備します。 |
| DevOps エンジニア、Terraform |
| タスク | 説明 | 必要なスキル |
|---|---|---|
リソースの作成を確認します。 |
| DevOps エンジニア |
(オプション) スケールアップまたはスケールダウン。 |
| DevOps エンジニア、Terraform |
| タスク | 説明 | 必要なスキル |
|---|---|---|
インフラストラクチャを削除します。 | ノードを にスケーリングすると
| Terraform |
トラブルシューティング
| 問題 | ソリューション |
|---|---|
プロバイダー認証情報の検証中にエラーが発生しました。 | Terraform
このエラーは、ローカルマシンの設定で使用されている認証情報のセキュリティトークンの有効期限が切れていることが原因です。エラーを解決する方法については、 AWS CLI ドキュメントの「設定の設定と表示」を参照してください。 |
保留中状態の CockroachDB ポッド |
|
関連リソース
単一の Kubernetes クラスターに CockroachDB をデプロイする
(CockroachDB ドキュメント) 複数の Kubernetes クラスター間で CockroachDB をオーケストレーションする
(CockroachDB ドキュメント) AWS プロバイダー
(Terraform ドキュメント)
アタッチメント
このドキュメントに関連する追加コンテンツにアクセスするには、次のファイルを解凍してください。「attachment.zip」