Google Distributed Cloud(GDC)エアギャップ環境で Terraform を構成するには、ダウンロードして、Kubernetes リソースを処理するように構成する必要があります。
このドキュメントは、エアギャップ ハードウェアとソフトウェアのワークフローを管理するために Terraform を設定する必要があるすべてのユーザー グループを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
始める前に
HashiCorp が提供するドキュメント(https://developer.hashicorp.com/terraform/install)に沿って、ワークステーションに Terraform をダウンロードします。
既存の GDC ストレージ バケットがあることを確認します。ストレージ バケットがない場合は、作成します。詳細については、ストレージ バケットを作成するをご覧ください。
gdcloud CLI をインストールします。詳細については、gdcloud CLI を使用するをご覧ください。
Terraform で管理するリソースをホストしている API サーバーまたはクラスタの kubeconfig ファイルを生成します。詳細については、kubeconfig ファイルを取得するをご覧ください。
Terraform の設定
GDC 環境で Terraform を設定するには、次の操作を行います。
Terraform モジュール内、またはワークステーション上の Terraform ファイルのコレクション内に
main.tfファイルを作成し、次の構成を追加します。terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" endpoint = "BUCKET_ENDPOINT" skip_credentials_validation = true force_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" } }次のように置き換えます。
BUCKET_FQN:Bucketカスタム リソースの完全修飾名。TF_STATE_PATH: ストレージ バケットに保存する Terraform 状態ファイルのパス。BUCKET_ENDPOINT:Bucketカスタム リソースのエンドポイント。ACCESS_KEY: アクセス認証情報を含むシークレットから取得したアクセスキー。アクセスキーの取得の詳細については、バケット アクセス認証情報を取得するをご覧ください。SECRET_KEY: アクセス認証情報を含むシークレットから取得した秘密鍵。シークレット キーの取得方法については、バケット アクセス認証情報を取得するをご覧ください。
前の手順で指定したストレージ バケットで Terraform 状態ファイルを初期化します。
terraform initTerraform は必須入力として AWS リージョンを要求する場合がありますが、GDC オブジェクト ストレージを使用しているため、この値は使用されません。要件を満たすために、任意の AWS リージョンを入力します。
crd-viewerクラスタロール リソースをデプロイし、ユーザー アカウントにバインドします。kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: crd-viewer rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: crd-viewer-binding subjects: - kind: User name: USER_EMAIL roleRef: kind: ClusterRole name: crd-viewer apiGroup: rbac.authorization.k8s.io EOF次のように置き換えます。
KUBECONFIG: Terraform で管理するリソースをホストする API サーバーまたはクラスタの kubeconfig ファイル。USER_EMAIL: ロールをバインドするユーザーのメールアドレス。
Terraform で使用する各 API サーバーまたはクラスタに
crd-viewerロールをデプロイします。main.tfファイルに次のrequired_providersブロックを挿入します。terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }この構成では、GDC 環境で Kubernetes リソースをプロビジョニングして管理するために、Kubernetes プロバイダがインストールされます。
Terraform の作業ディレクトリを初期化して、プロバイダをインストールします。
terraform init