VAULT¶
クラウドのキーマネージメントサービスに登録されたシークレットを External Secrets Operator を利用して kubernetes secret と同期させるための機能を提供します。
マネージドサービス API を有効化します。
External Secrets Operator を利用する際に必要となる SecretStore 及び ClusterSecretStore を登録します。
Azure の場合は同時にキーコンテナを作成することができます。
設定値 |
|
---|---|
Chart |
vault |
対応サービス¶
Azure: Azure KeyVault
Google Cloud: Google Secret Manager
AWS: AWS Secrets Manager
パッケージの機能¶
(Cluster)SecretStore の作成¶
SecretStore 及び ClusterSecretStore は Kubernertes クラスタから Secrets Manager 等のクラウドキー管理サービス内に保存された 暗号化情報を取得して、Kubernetes Secret を作成するために必要なアクセスポイントをマネージドクラスタ内に作成します 。
SecretStore: SecretStore を作成した Namespace 内でのみ有効なアクセスポイント。
ClusterSecretStore: マネージドクラスタ全体で有効なアクセスポイント。
values の指定で secretStores[].clusterScope
を true に設定すると、ClusterSecretStore が作成され、false を設定すると SecretStore が作成されます。
SecretStore アクセス権の設定¶
クラウドのキーマネージメントサービスに SecretStore からアクセスするためのロール設定は自動で行われます。 デフォルトで新規に principal(AWS: Role, Azure: ManagedID, Google: ServiceAccount) が作成され権限が付与されますが、 任意の principal を指定することも可能です。
Values¶
Default values¶
# yaml-language-server: $schema=values.schema.json
keepOnDelete: true
secretStores: []
# - name: test # SecretStore 名(必須)
# namespace: staging # clusterScope=false の場合 SecretStore を作成する Namespace。未指定の場合は Application の配置先 Namespace が設定される
# serviceAccount:
# name: staging # SecretsStore が利用する kubernetes serviceaccount(KSA)(SecretStore と同一 namespace に作成される)
# useExists: true # 既存の serviceaccount を利用する場合は true を設定する
# - name: cluster-store
# clusterScope: true # ClusterScretStore を作成する場合は true
# serviceAccount:
# name: cluster-store
# namespace: staging # "clusterScope=true の場合のみ利用する KSA の存在する Namespace を指定。未指定の場合は Application の配置先 Namespace が設定される"
principal:
create: true
# name: # AWS: Role, Azure ManagedID, Google: ServiceAccount の名前を指定(デフォルトでは自動作成)
# resourceGroup: # Azure でリソースグループを指定したい場合に利用
secretManager:
# name: # Azure でキーコンテナ名を指定する場合に利用(デフォルトはリリース名。 Azrere の場合は必須で指定する)
# location: # AWS 及び Azure で region, location を指定する(デフォルトでクラスタと同じロケーションが設定される)
create: true # Azure keyvault のキーコンテナ作成要否
sku: standard
enableSoftDelete: true # Azure keyvault のパラメータ
networkPolicies:
bypass: AzureServices # Azure keyvault のパラメータ
defaultAction: Allow # Azure keyvault のパラメータ
secrets: []
# - db_password # 特定のシークレットにのみアクセス権を付与する場合にシークレット名を列挙する(AWS, Google のみ)
monitoring: {}
Schema reference¶
type |
object |
||||
properties |
|||||
|
作成したリソースをアンインストール時に残す場合は true |
||||
type |
boolean |
||||
default |
True |
||||
|
ESO SeretStore に関する設定 |
||||
type |
array |
||||
items |
type |
object |
|||
properties |
|||||
|
true の場合 ClusterSecretStore が作成され、false の場合は SecretStore が作成される |
||||
type |
boolean |
||||
default |
False |
||||
|
SecretStore 名 (未指定の場合はリリース名が設定される) |
||||
type |
string |
||||
maxLength |
63 |
||||
|
SecretStore を作成する Namespace。clusterScope=true の場合は指定不要。 |
||||
type |
string |
||||
|
SecretStore の使用する Kubernetes ServiceAccount (KSA) の設定 |
||||
type |
object |
||||
properties |
|||||
|
KSA 名。未指定の場合は リリース名+パッケージ名が設定される |
||||
type |
string |
||||
maxLength |
30 |
||||
minLength |
5 |
||||
|
clusterScope=true の場合のみ利用する KSA の存在する namespace を指定。 |
||||
type |
string |
||||
|
既存の KSA を使用する場合は true を設定 |
||||
type |
boolean |
||||
default |
False |
||||
|
クラウドのシークレット管理サービス設定, AWS: SecretsManager, Azure: KeyVault, Google: SecretManager |
||||
type |
object |
||||
properties |
|||||
|
Azure の場合のみ KeyVaultのキーコンテナ作成要否を指定 |
||||
type |
boolean |
||||
default |
True |
||||
|
Azure の場合のみ KeyVault に作成するコンテナ名を指定 |
||||
type |
string |
||||
default |
リリース名 |
||||
|
シークレット管理のサービスロケーションを指定, AWS: region を指定, Azure: location を指定, Google: 設定不要 |
||||
type |
string |
||||
default |
クラスタのロケーション |
||||
|
特定の secret にのみアクセス権限を与える場合、対象の secret を列挙する (google, aws で使用可) |
||||
type |
array |
||||
items |
type |
string |
|||
|
key コンテナを配置する tenantId |
||||
type |
string |
||||
|
Azure の場合のみ KeyVault sku を指定. |
||||
type |
string |
||||
enum |
standard, premium |
||||
default |
standard |
||||
|
Azure の場合のみキーコンテナを作成するリソースグループを指定 |
||||
type |
string |
||||
|
Azure の場合のみ論理的な削除をに有効する場合指定 |
||||
type |
boolean |
||||
default |
True |
||||
|
Azure の場合のみ NetworkPolicy を指定 |
||||
type |
object |
||||
properties |
|||||
|
type |
string |
|||
enum |
AzureServices, None |
||||
default |
AzureServices |
||||
|
type |
string |
|||
enum |
Allow, Deny |
||||
default |
Allow |
||||
|
(Cluster)SecretStore がのクラウドシークレット管理サービスにアクセスする際に利用するプリンシパルの設定 |
||||
type |
object |
||||
properties |
|||||
|
プリンシパル名 AWS: Role 名, Azure: Managed ID 名, Google: ServiceAccount 名を指定(Azure の場合のみ必須) |
||||
type |
string |
||||
|
既存のプリンシパルを利用する場合は false を設定 |
||||
type |
boolean |
||||
default |
True |
||||
|
Azure の場合のみ Managed ID のクライアントID を指定(Application リソースによって自動的に設定されるため、指定不要) |
||||
type |
string |
||||
|
Azure の場合のみ Managed ID のリソースグループを指定 |
||||
type |
string |
Example¶
Example1. Azure KeyVault キーコンテナー作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: keyccontainer
namespace: staging
spec:
chart:
name: vault
version: <latest>
settings:
secretManager:
name: example
secretStores:
name: example-store
namespace: staging
keepOnDelete: false
Example2. Google Cloud Secret Manager 権限設定¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: keyccontainer
namespace: staging
spec:
chart:
name: vault
version: <latest>
settings:
secretStores:
name: example-store
namespace: staging
keepOnDelete: false
Example3. AWS Secret Manager 権限設定¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: keyccontainer
namespace: staging
spec:
chart:
name: vault
version: <latest>
settings:
secretStores:
name: example-store
namespace: staging
keepOnDelete: false
Change Log¶
1.0.2¶
Released on 2025-08-07
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.0.1¶
Released on 2025-07-22
機能と改善
既存のAzure キーコンテナを利用した(Cluster)SecretStoreの作成が可能になりました
1.0.0¶
Released on 2025-06-11
What's Changed
<重大な変更>
- Values の構成を見直しました
<機能と改善>
- Azure RBAC による認証に移行しました(ロールアサインメントによるアクセス権の設定が可能になりました)
- 複数の SecretStore を同時に作成できるようになりました。