STORAGE¶
マネージドオブジェクトストレージの作成及びアクセスコントロールの設定を行います。
設定値 |
|
---|---|
Chart |
storage |
対応サービス¶
Azure: Azure Blob Storage
Google Cloud: Cloud Storage (GCS)
AWS: Amazon Simple Storage Service (S3)
パッケージの機能¶
本パッケージでは、各クラウドのマネージドオブジェクトストレージに関する以下の機能を提供します。
オブジェクトストレージ作成
バージョニング・削除保護に関する設定
- ACLに関する設定
各クライアントに対する readOnly と readWrite の権限設定が可能
- ネットワークに関する設定 (Azureのみ対応、今後 AWS/Google Cloud でも対応予定)
アクセス元IPによるアクセス許可・拒否の設定
その他 Azure 固有のネットワーク関連の設定が可能 (詳細はvalues.yamlを参照のこと)
アクセスログ設定 (Azureのみ対応、今後 AWS/Google Cloud でも対応予定)
- Webホスティング設定 (AWSのみ対応、今後 Azure/Google Cloud でも対応予定)
単純なホスティング機能 (カスタムドメイン・独自証明書の利用・CORSは現状未サポート)
CloudFront ディストリビューションとバケットの連携
- Azure固有のストレージ設定
ストレージアカウントの種類指定、階層型名前空間の有効化、NFSアクセスの有効化 に対応
オブジェクトストレージ作成¶
ストレージ名、ロケーション、リソースグループ(Azureのみ。既存のものを利用、もしくは新規作成どちらも可能。)を指定することで、オブジェクトストレージを一つ作成できます。
Azure¶
Azureでblobコンテナーを作成するには、ストレージアカウントが必要です。
ストレージアカウントを作成するには、 azure.storageAccount.create
に true
を設定してください。
基本的には name
に指定した値がblobコンテナーおよびストレージアカウントの名前になりますが、
azure.storageAccount.name
に値を設定することでストレージアカウントの名前を別途設定することが可能です。
CNAPで事前に作成したストレージアカウントにblobコンテナーを追加することもできます。
この場合、 azure.storageAccount.create
に false
を指定し、
azure.storageAccount.name
に既存のストレージアカウントの名前を指定してください。
name
には追加するblobコンテナーの名前を指定してください。
CNAPで作成していない既存のストレージアカウントをCNAPで管理下に入れ、blobコンテナーを追加することもできます。
この場合、 azure.storageAccount.create
に true
を指定し、
azure.storageAccount.name
に既存のストレージアカウントの名前を指定してください。
指定した設定がストレージアカウントに反映されるようになり、blobコンテナーも追加できるようになります。
この場合も name
には追加するblobコンテナーの名前を指定してください。
また、blobコンテナーの名前は、英小文字、数字、ハイフンが使用でき、3-63文字にする必要があります。 ストレージアカウントの名前は、英小文字、数字が使用でき、3-24文字にする必要があります。
カスタムドメインを使用したい場合、始めにカスタムドメインの設定無しでストレージアカウントを作成してください。
続いて、Azureポータルなどでストレージアカウントのエンドポイントを確認し、DNSパッケージを使用してカスタムドメインのCNAMEレコードを登録します。
その後、website.customDomain
の設定を追加してアップデートしてください。
Azure クラウドサービスのリソースグループは values の azure.resourceGroup.name
で指定できます。
リソースグループを指定する場合は、事前にリソースグループが作成されていることを確認してください。 リソースグループは UserConfig で作成可能です。
リソースグループを指定しない場合には、namespaceと同名のリソースグループにリソースが作成されます。
AWS/Google¶
AWS S3 及び Google Cloud Storage ではストレージアカウントの概念はありません。
name
で指定したオブジェクトバケットが作成されます。
重要
誤操作によるデータ削除を防ぐため、バケットにデータが残っている場合は、 バケットの削除ができないようになっています。 バケットを削除する際は、事前にバケットの中身を空にしてください。
アカウント作成とロール設定¶
作成したオブジェクトストレージに対してコンテナからアクセスするためのロール設定を行います。
acl
の設定を行うことで、作成したバケットにアクセスするクライアントを制限することができます。
readOnly
には anonymous を含む読み込みのみの権限を付与したいクライアント、
readWrite
には読み込みおよび書き込みの権限を付与したいクライアントを列挙します。
acl:
readOnly:
- type: anonymous
readWrite:
- name: data-writer
type: mid
type
には指定するクライアントの種類を指定し name
対象の識別子を type ごとの書式で指定します。
type |
AWS |
Azure |
Description |
|
---|---|---|---|---|
anonymous |
○ |
○ |
○ |
バケットをリードオンリーでパブリック公開します。(acl.readOnly でのみ指定できます) anonymous を選択した場合、name を設定する必要はありません。 |
federatedId |
○ |
外部 IdP のアドレスを指定します。 |
||
service |
○ |
サービスに権限を付与します。[service-name].amazonaws.com という形式で指定します。 |
||
role |
○ |
ロールに権限を付与します。 |
||
sts |
○ |
AssumeRoleにて引き受けたセッションロールに対して権限を付与します。"[role-name]/[session-name]" という形式でダブルクォーテーションで囲んで指定します。 |
||
mid |
○ |
CNAP サービスで作成したユーザ割り当てマネージドIDの name を指定して権限を付与します。 |
||
objectId |
○ |
ユーザー、グループ、サブスクリプション などのIDを指定して権限を付与します。 |
||
domain |
○ |
Google Workspace もしくは Cloud Identity のドメインに所属するユーザーに権限を付与します。
[USER_NAME]@[DOMAIN].com の |
||
gsa |
○ |
google サービスアカウントに権限を付与します。 [SERVICEACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com の形式で指定します。 |
||
user |
○ |
○ |
ユーザーアカウントに権限を付与します。 |
|
group |
○ |
グループアカウントに権限を付与します。 |
Web ホスティング(AWS)¶
ストレージバケーットを利用して静的コンテンツをホストする Web サーバーとして設定することができます。
本設定機能は現在 AWS にのみ対応しています。
AWS¶
website.enabled
を true に設定することによって、以下の設定が行なわれ、
web ホスティング機能が有効になります。
CloudFront ディストリビューションとバケットの連携
TLS 証明書の設定(HTTPS へのリダイレクト)
デフォルトドメインの設定
アクセスログ用のバケット作成
CloudFront ディストリビューションとの連携が行なわれるとCloudFront のデフォルトURLから、
バケットに配置したコンテンツにアクセスできるようになります。
URL は xxxxxxxxxxxxxx.cloudfront.net
の形式で自動的に付与されます。
発行されたURL クラウドコンソール から確認できます。
web ホスティングを有効にした場合、バケットに設定したアクセスコントロール設定にかかわらず、 web サイト URL にはインターネットからのアクセスが可能になります。 (バケットへのURLへのアクセスにはアクセスコントロールが適用されます。)
log 用のバケットは <name>-website-log
の形式で作成され、logs フォルダに
アクセスログが保存されます。
Values¶
Default values¶
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# Default values for MASTER-CONTAINER-HELM-STORAGE.
# OBSOLETE: Google Cloud: storageClass 設定は廃止されました。オブジェクトを保存する際に明示的に指定して保存してください。
# OBSOLETE: Azure: 既存のストレージアカウントに新規のバケットを追加する機能は廃止されました。
# OBSOLETE: Azure: kind 設定は廃止されました。storageV2で固定的に作成されます。
# OBSOLETE: Azure: accessTier 設定は廃止されました。オブジェクトを保存する際に明示的に指定して保存してください。
# OBSOLETE: Azure: コンテナ単位の DeleteRetentionPolicy は廃止されました。ストレージアカウント DeleteRetentionPolicy は引き続き利用可能です。
# OBSOLETE: Azure: supportsHttpsTrafficOnly 設定は廃止されました。HTTPSアクセス必須の状態でストレージアカウントが構築されます。
# OBSOLETE: AWS: ACLに関する以下の設定は廃止されました。バケットポリシーにARN単位で設定が実施されます。
# OBSOLETE: Azure: DataLakeEnabled 設定は廃止されました。
# OBSOLETE: AWS: force_destroy 設定は廃止されました。同名のバケットが存在する場合アプリケーションのデプロイに失敗する動作が既定動作となります。
# OBSOLETE: AWS: attach_deny_insecure_transport_policy 設定は廃止されました。HTTPSアクセス必須の状態でバケットが構築されます。
# OBSOLETE: AWS: attach_require_latest_tls_policy 設定は廃止されました。最新のTLSバージョンを強制する状態でバケットが構築されます。
# OBSOLETE: AWS: control_object_ownership 設定は廃止されました。ACLに関する設定はバケットポリシーにて制御するため、この設定は true で固定されます。
# OBSOLETE: AWS: object_ownership 設定は廃止されました。ACLに関する設定はバケットポリシーにて制御するため、この設定は BucketOwnerEnforced で固定されます。
## 基本設定 ##
# バケット名。必須
# Azureの場合は、ストレージアカウントとBlobコンテナどちらも同じ名前で作成される
name:
# リソースを作成する地理的場所を指定する
# 冗長性のオプション等もこのセクションに設定する
location:
# ロケーション名
name:
# Azureを使用する場合に指定する Storage Account の SKU(Stock Keeping Unit)
# パフォーマンスレベル・冗長化を設定する
# AzureのSKUの種類(https://learn.microsoft.com/ja-jp/rest/api/storagerp/srp_sku_types)に記載された名前のみ有効
sku: Standard_GRS
# kubernetes上からこのHelmを削除した際にクラウド上のストレージリソースを残すかどうか設定
# true に設定すると、Helmを削除してもクラウド上にストレージリソースが残る
keepOnDelete: true
# Azure固有の設定を記載
# Google Cloud/AWSとシステム構成が異なり抽象化できない部分についてここで設定する
azure:
storageAccount:
# ストレージアカウントを作成するかどうか
create: true
# ストレージアカウントの種類
kind: "StorageV2"
# バケット作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される
# resourceGroup: ""
# Data Lake Storage Gen2の階層型名前空間を有効にする場合は true。バージョニング、変更フィードを無効にする必要あり。
isHnsEnabled: false
# NFSによるアクセスを有効にする場合は true。有効にするには階層型名前空間を有効にする必要がある。
isNfsV3Enabled: false
# バージョン管理機能の有効化・無効化
versioning:
enabled: false
# オブジェクトのロック機能に関する設定
# この設定を有効にすることで、バケット内のオブジェクトの上書きや削除が一定期間制限できる
immutableVersioning:
enabled: false
# ロック期間の設定
# ここで設定した期間オブジェクトの変更を制限
# AWSは、バケットにてデフォルトで適用されるロック期間が設定される
days: 7
# オブジェクトのロック機能に関する種別を設定
# AWSのみ対応: GOVERNANCE, COMPLIANCE
# GOVERNANCE: s3:BypassGovernanceRetention というアクションへの許可を持ったユーザー以外の変更が制限される
# CONPLIANCE: rootユーザーを含めたすべてのユーザーの変更が制限される
# mode: GOVERNANCE
# オブジェクトの削除後の復旧に関する設定
# なお、AWSでは削除保護の設定はないため、versioning および lifecycle で対応する
deleteRetentionPolicy:
# 復旧設定
enabled: false
# 削除されたリソースを保持する日数
days: 7
# ストレージにアクセス可能なネットワークに関する設定
# Google Cloud/AWSは未実装 今後機能追加予定
# network:
# # ストレージに対するネットワークアクセスのデフォルトのポリシーを設定
# # Allowを設定した場合:
# # ・不特定多数のネットワークからのアクセスをデフォルトで許可
# # ・主にパブリックネットワークからのアクセスを想定する際に利用
# # Denyを設定した場合:
# # ・不特定多数のネットワークからのアクセスをデフォルトで拒否
# # ・主にプライベートネットワークや、特定のIPレンジからのアクセスを想定する際に利用
# defaultAction: Allow
# # アクセス設定
# ipRules:
# - action:
# value:
# # Azure独自のネットワークに関する設定
# azure:
# # トラフィックバイパス設定。Logging/Metrics/AzureServicesの組合せを指定可能。 (例: \"Logging, Metrics\"), None を指定するとどれもバイパスしない。
# bypass:
# # リソースインスタンスのアクセスルール
# resourceAccessRules:
# - resourceReference:
# # サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
# armId:
# # テナントID
# tenantId:
# # 仮装ネットワークルール
# virtualNetworkRules:
# - action:
# reference:
# armId:
# ストレージアクセスに関するACLの設定
# - readOnlyとreadWriteの権限設定。
# - nameに制御対象の名前、typeに制御対象の種別を指定。
# - readOnlyの設定で name と type が anonymous の場合、public accessとなる。readWriteの設定では anonymous 設定は無視される。
# - type でクライアントの種類を指定する (README 参照)。
# - sharedKeyAccess は Azure でシェアードキー認証を利用する場合のみ使用。
# - ksaへのロール追加はサポートしないため、ksaに紐づけて使うかどうかはpodを実行する側で設定する必要がある。
acl:
readOnly: []
# - name: hoge
# type: mid
# - name: hoge@hoge.com
# type: user
readWrite: []
# - name: fuga@hoge.com
# type: user
# - name: arn:aws:iam::1234567890:role/Infrastructure_Admin
# type: role
sharedKeyAccess: false
# バケットへのアクセスログを、別のバケットに転送する。
# Azureではログ用のバケット自体を自動で作成する。
# Google Cloud/AWSは未実装のため追加実装予定。
logging:
enabled: false
retentionInDays: 7
# web ホスティング設定 (AWS のみ実装済み)
website:
enabled: false # web ホスティング機能を有効にする場合は true を設定
domain: "" # カスタムドメインを使用する場合に指定する。(未実装)
tls:
type: managed # 利用する TLS 証明証の種類(managed 固定)
# CORS 設定 (未実装)
cors: []
# - origins: [] # CORS を許可するドメインリスト
# methods: [] # CORS を許可する HTTP メソッドリスト
# headers: [] # CORS を許可する HTTP ヘッダーリスト
Schema reference¶
type |
object |
||||||
properties |
|||||||
|
バケット名 |
||||||
type |
string |
||||||
|
type |
object |
|||||
properties |
|||||||
|
ロケーション(リージョン)名 |
||||||
type |
string |
||||||
|
Azureのみ ストレージアカウントのSKU。 |
||||||
type |
string |
||||||
enum |
Premium_LRS, Premium_ZRS, Standard_GRS, Standard_GZRS, Standard_LRS, Standard_RAGRS, Standard_RAGZRS, Standard_ZRS |
||||||
default |
Standard_GRS |
||||||
|
true の場合パッケージアンインストール時にインスタンスを保持する。 |
||||||
type |
boolean |
||||||
|
type |
object |
|||||
properties |
|||||||
|
オブジェクトのバージョン管理 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
コンテナレベルでバージョンレベルの不変性サポート設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
バージョンレベルの不変性サポート設定を有効化する場合 true。設定変更不可。有効にする場合、ストレージアカウントのバージョニングを有効にする必要がある。 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
バージョンレベルの不変性サポート設定を有効化する場合 true。設定変更不可。有効にする場合、ストレージアカウントのバージョニングを有効にする必要がある。 |
||||||
type |
integer |
||||||
default |
7 |
||||||
|
AWSのみ オブジェクトのロック機能に関する種別を設定 |
||||||
type |
string |
||||||
|
削除後の復旧設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
復旧設定 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
削除されたアイテムを保持する日数(1-365) |
||||||
type |
integer |
||||||
default |
7 |
||||||
|
type |
object |
|||||
properties |
|||||||
|
ルールにマッチしなかった場合のデフォルトアクション |
||||||
type |
string |
||||||
enum |
Allow, Deny |
||||||
|
IP ACL ルール |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
IP ACLルールのアクション |
||||||
type |
string |
||||||
|
IP または CIDRフォーマットのIP範囲を指定する。IPV4アドレスのみ指定可能 |
||||||
type |
string |
||||||
|
type |
object |
|||||
properties |
|||||||
|
トラフィックバイパス設定。Logging/Metrics/AzureServicesの組合せを指定可能。 (例: "Logging, Metrics"), None を指定するとどれもバイパスしない。 |
||||||
type |
string |
||||||
|
リソースアクセスルール |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
type |
object |
|||||
properties |
|||||||
|
サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}. |
||||||
type |
string |
||||||
|
テナントID |
||||||
type |
string |
||||||
|
仮想ネットワークルール |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
仮想ネットワークのアクション |
||||||
type |
string |
||||||
enum |
Allow |
||||||
|
type |
object |
|||||
properties |
|||||||
|
サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}. |
||||||
type |
string |
||||||
|
type |
object |
|||||
properties |
|||||||
|
readonly権限の追加 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
acl制御対象の名前(ユーザ名やグループ名など) |
||||||
type |
string |
||||||
|
制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all |
||||||
type |
string |
||||||
enum |
anonymous, user, role, group, gsa, mid, domain, objectId, sts, federatedId, service |
||||||
|
readwrite権限の追加 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
acl制御対象の名前(ユーザ名やグループ名など). |
||||||
type |
string |
||||||
|
制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all |
||||||
type |
string |
||||||
enum |
user, role, group, gsa, mid, domain, objectId, sts, federatedId, service |
||||||
|
Azure の場合のみ使用。シェアードキーによるアクセスを許可する場合に true を指定する |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
type |
object |
|||||
properties |
|||||||
|
loggingの有効化設定 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
変更フィードの保持日数(1-146000(400年))。指定無しの場合は無期限 |
||||||
type |
integer |
||||||
|
type |
object |
|||||
properties |
|||||||
|
ストレージアカウントの設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
ストレージアカウントを作成するかどうか |
||||||
type |
boolean |
||||||
default |
True |
||||||
|
ストレージアカウントの名前。指定しない場合はバケット名で指定した名前が付与される |
||||||
type |
string |
||||||
|
storageAccount、blobを作成する場合は作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される |
||||||
type |
string |
||||||
|
Data Lake Storage Gen2の階層型名前空間を有効にする場合は true。バージョニング、変更フィードを無効にする必要あり。 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
ネットワーク ファイル システム v3 を有効にする場合は true。有効にするには階層型名前空間を有効にする必要がある。 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
ストレージアカウントの種類 |
||||||
type |
string |
||||||
enum |
BlobStorage, BlockBlobStorage, FileStorage, Storage, StorageV2 |
||||||
default |
StorageV2 |
||||||
|
web ホスティング機能設定 (AWS のみ実装) |
||||||
type |
object |
||||||
properties |
|||||||
|
ホスティング機能を有効化する場合は true |
||||||
type |
string |
||||||
default |
False |
||||||
|
ホストに割り当てるカスタムドメイン名(未実装) |
||||||
type |
string |
||||||
|
ホストに割り当てる TLS 証明書の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
証明書の種別 (managed 固定) |
||||||
type |
string |
||||||
enum |
managed |
||||||
default |
managed |
||||||
|
クロスオリジンリソース共有に関する設定(未実装) |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
CORS を許可するドメインリスト |
||||||
type |
array |
||||||
items |
type |
string |
|||||
|
CORS を許可する HTTP メッソッドリスト |
||||||
type |
array |
||||||
items |
type |
string |
|||||
|
CORS を許可する HTTP ヘッダーリスト |
||||||
type |
array |
||||||
items |
type |
string |
Example¶
Example1. Azure BLOBコンテナーとストレージアカウントを作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-storage
namespace: staging
spec:
chart:
name: storage
version: <latest>
settings:
name: sampleblob
location:
name: japaneast
acl:
readOnly:
- type: anonymous
readWrite:
- name: data-writer
type: mid
- name: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
type: objectId
Example2. Google Cloud Cloudストレージを作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-dns
namespace: staging
spec:
chart:
name: storage
version: <latest>
settings:
name: test-bucket
location:
name: asia-northeast1
acl:
readOnly:
- type: anonymous
readWrite:
- name: data-writer@test-project.iam.gserviceaccount.com
type: gsa
- name: storage-admin@google.com
type: user
Example3. Amazon Simple Storage Serviceストレージを作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: staging-storage
namespace: staging
spec:
chart:
name: storage
version: <latest>
settings:
name: test-bucket
location:
name: ap-northeast-1
acl:
readOnly:
- type: anonymous
readWrite:
- name: hogeuser
type: user
- name: hogerole
type: role
- name: "hogerole/hogesession"
type: sts
- name: cognito-identity.amazonaws.com
type: federatedId
- name: ec2.amazonaws.com
type: service
Change Log¶
1.1.17¶
Released on 2025-08-07
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.1.16¶
Released on 2025-05-15
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.1.15¶
Released on 2025-04-23
What's Changed
- 内部モジュールの更新を実施
1.1.14¶
Released on 2025-03-21
What's Changed
AWSの spec.settings.name
の必須チェックを追加しました。