- OpenTofu言語
- OpenTofuの設定
- バックエンド
- kubernetes
バックエンドタイプ: kubernetes
このバックエンドは、Kubernetes のシークレットの最大サイズ 1MB によって制限されます。詳細については、シークレットの制限事項を参照してください。
状態をKubernetes シークレットに保存します。
このバックエンドは状態ロックをサポートしており、ロックはリースリソースを使用して行われます。
設定例
terraform {
backend "kubernetes" {
secret_suffix = "state"
config_path = "~/.kube/config"
}
}
これは、OpenTofu を実行しているユーザー/サービスアカウントが、シークレットを保存するために使用される名前空間内でシークレットを読み書きするための権限を持っていることを前提としています。
config_path または config_paths 属性が設定されている場合、バックエンドはkubeconfig ファイルを使用してクラスターへのアクセスを試みます。
in_cluster_config フラグが設定されている場合、バックエンドはサービスアカウントを使用してクラスターへのアクセスを試みます。これは、Kubernetes クラスター内で実行されているポッド内から OpenTofu が実行されている場合に使用できます。
ほとんどのユースケースでは、in_cluster_config、config_path、または config_paths のいずれかを設定する必要があります。すべてのフラグが設定されている場合は、config_path の設定が使用されます。
アクセス認証情報については、部分的な構成を使用することをお勧めします。
参照例
data "terraform_remote_state" "foo" {
backend = "kubernetes"
config = {
secret_suffix = "state"
load_config_file = true
}
}
構成変数
認証情報やその他の機密データを提供するには、環境変数を使用することをお勧めします。-backend-configを使用するか、これらの値を構成に直接ハードコードすると、OpenTofuはこれらの値を.terraformサブディレクトリとプランファイルの両方に含めます。詳細については、認証情報と機密データを参照してください。
次の構成オプションがサポートされています。
secret_suffix- (必須) シークレットの作成時に使用される接尾辞。シークレットはtfstate-{workspace}-{secret_suffix}の形式で命名されます。labels- (オプション) シークレットとリースに適用される追加のラベルのマップ。namespace- (オプション) シークレットとリースを保存する名前空間。KUBE_NAMESPACEから取得できます。in_cluster_config- (オプション) ポッド内からクラスターへの認証に使用されます。KUBE_IN_CLUSTER_CONFIGから取得できます。host- (オプション) Kubernetes マスターのホスト名 (URI 形式)。KUBE_HOSTから取得できます。デフォルトはhttps://です。username- (オプション) Kubernetes マスターエンドポイントへのアクセス時に HTTP 基本認証に使用するユーザー名。KUBE_USERから取得できます。password- (オプション) Kubernetes マスターエンドポイントへのアクセス時に HTTP 基本認証に使用するパスワード。KUBE_PASSWORDから取得できます。insecure- (オプション) TLS 証明書を検証せずにサーバーにアクセスするかどうか。KUBE_INSECUREから取得できます。デフォルトはfalseです。client_certificate- (オプション) TLS 認証用の PEM エンコードされたクライアント証明書。KUBE_CLIENT_CERT_DATAから取得できます。client_key- (オプション) TLS 認証用の PEM エンコードされたクライアント証明書キー。KUBE_CLIENT_KEY_DATAから取得できます。cluster_ca_certificate- (オプション) TLS 認証用の PEM エンコードされたルート証明書バンドル。KUBE_CLUSTER_CA_CERT_DATAから取得できます。config_path- (オプション) kube config ファイルへのパス。KUBE_CONFIG_PATHから取得できます。config_paths- (オプション) kube config ファイルへのパスのリスト。KUBE_CONFIG_PATHSから取得できます。config_context- (オプション) 設定ファイルから選択するコンテキスト。KUBE_CTXから取得できます。config_context_auth_info- (オプション) kube config の認証情報コンテキスト (kubeconfig ユーザーの名前、kubectlの--userフラグ)。KUBE_CTX_AUTH_INFOから取得できます。config_context_cluster- (オプション) kube config のクラスターコンテキスト (kubeconfig クラスターの名前、kubectlの--clusterフラグ)。KUBE_CTX_CLUSTERから取得できます。token- (オプション) サービスアカウントのトークン。KUBE_TOKENから取得できます。exec- (オプション)exec ベースの認証情報プラグインを使用する構成ブロック。例: 外部コマンドを呼び出してユーザー認証情報を受け取ります。api_version- (必須) ExecCredentials リソースのデコード時に使用する API バージョン (例:client.authentication.k8s.io/v1beta1)。command- (必須) 実行するコマンド。args- (オプション) プラグインの実行時に渡す引数のリスト。env- (オプション) プラグインの実行時に設定する環境変数のマップ。