- 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
- (オプション) プラグインの実行時に設定する環境変数のマップ。