BASIC-DEPLOYMENT¶
Kubernetes Deployment を利用した コンテナイメージのオーケストレーション機能を提供します。
通常 kubernetes ネイティブリソースである Deployment だけではアプリケーションを外部に公開出来ませんが、 本パッケージではネイティブリソースである Deploymentを拡張しており、外部公開に必要となる基本的なオプション (ネットワーク設定、データベースへの接続設定、暗号化キーストレージからシークレットの取得、ボリュームのマウントなど) を一括で設定可能としています。
設定値 |
|
---|---|
Chart |
basic-deployment |
対応サービス¶
パッケージの機能¶
本パッケージでは、 Deployment の全ての機能に加えて以下の簡易設定機能及び、依存関係にある追加リソースの自動作成を行います。
- デプロイ戦略による自動デリバリ機能の提供
- 以下の2種類のデプロイ戦略による自動デリバリの機能を提供します。
Blue Green Deployment
Canary Deployment
- サービスの公開範囲の設定機能
アプリケーションの外部公開・内部公開・非公開 の設定を自動化します。
外部公開する際のルーティング設定、マネージドDNSサービスへのレコード登録、TLSキーの発行処理を自動化します。
- ルーティング設定
パスルーティング・外部サービスへのルーティングに対応します。
- ConfigMap/Secretリソースに関する設定
各クラウドの Key Management System (KMS) からの Secretリソース を作成します。
ConfigMap/Secretリソースの環境変数への設定、もしくは任意のパスへマウントを簡易化した形で設定できます。
- 共有マウント設定
事前設定コンテナとメインコンテナで共有フォルダを自動的に作成して連携します。
- プライベートなコンテナレジストリへのアクセス設定機能
プライベートなコンテナレジストリへのアクセス設定機能 Image Pull Secret の設定を行います。
- アプリケーションで利用するコンテナイメージの自動更新
設定した更新ポリシーに従って、アプリケーションで利用するコンテナイメージの自動更新を行います。
- アカウント作成とロール設定
Kubernetes内のアカウントとクラウドサービスのIAMのロール・ポリシー設定との紐づけを自動的に行います。
- データベースアクセスの事前準備設定
疎通確認および必要な権限付与を自動的に行います。
- オートスケール
コンテナに割り合てる、CPU とメモリの設定および起動するPod数の自動スケール設定を行います。
- Prometheusメトリクスの開示
クラスタ内のPrometheusに対して、CPU、メモリなどの基礎的なメトリクス およびアプリケーションが独自に開示したメトリクスを自動収集する設定を行います。
上記に記載した設定以外の Deployment リソースの設定も可能です。詳細は values.yaml に記載例をご参照ください。
以下の章では、本パッケージでサポートしている機能のそれぞれの設定方法について説明します。
デプロイ戦略による自動デリバリ機能の提供¶
旧環境と新環境が同時に存在する環境を構築し、ルーティングの制御によってトラフィックを切り替え、ダウンタイム無しで環境を切り替えることが可能です。
Blue Green Deployment¶
progressiveDelivery.enabled
を true
にして progressiveDelivery.strategy
に blueGreen
を指定することで、更新予定ワークロードに対して、
疎通確認とリクエストの正常確認を10分間行い、成功した場合にトラフィックの切り替えを行います。
失敗した場合、トラフィックの切り替えは行われません。
実行するためには最低限疎通確認用のパス( progressiveDelivery.endpoints.accessTests
) もしくは負荷テスト用のパス ( progressiveDelivery.endpoints.loadTests
)の
いずれかを設定する必要があります。
Canary Deployment¶
progressiveDelivery.enabled
を true
にして progressiveDelivery.strategy
に canary
を指定することで、更新予定ワークロードに対して、徐々にトラフィックを切り変えていくことができます。
設定条件は blueGreen と同じですが、デフォルト設定では最大 50% のトラフィックが新たなワークロードに振り向けられます。
ネットワーク設定¶
設定された値に基づいて、アプリケーションのネットワークアクセスについて、 スタンドアロン(非公開)・クラスタネットワーク(内部公開)・インターネットアクセス(外部公開) の設定を自動化します。
ネットワークアクセスのコントロールに対応して、 Service や その他必要なリソースを自動的に作成します。
Service 名は <APPLICATION_NAME>-basic-deployment
になります。
警告
Port 設定を変更した場合、 livenessProbe
readinessProbe
の設定をそれに合わせて変更します。
非公開(スタンドアロン)¶
作成された Pod に対してクラスタ内外問わず、一切の外部からの接続を受けつけない設定パターン。
network:
gatewayName: ""
network.gatewayName
に空文字を設定することで、 Gateway を利用した外部からのルーティングが行なわれなくなります。
さらに、 service の設定も行わないことで Pod にアクセスするための Service が作成されなくなり、クラスタ内でのアクセスも受け付けなくなります。
クラスタネットワーク(内部公開)¶
クラスタ内ネットワークからの http アクセスのみ受けつけるパターン。
network:
gatewayName: ""
service:
ports:
- name: http
containerPort: 8080
servicePort: 80
network.gatewayName
に空文字を設定することで、 Gateway を利用した外部からのルーティングが行なわれなくなります。
network.service.ports
の設定で service <name>-basic-deployment.svc.cluster.local
の 80 番ポートで受け付けたリクエストを
Pod の 8080 番ポートに転送します。
インターネットアクセス(外部公開)¶
クラスタ内及びインターネットからの http アクセスを受け付けるパターン。
network:
domain: example.com
service:
ports:
- name: http
containerPort: 8080
servicePort: 80
network.domain
に値を設定することで、指定したドメインへのリクエストを Service に転送します。
Service に転送されたリクエストは前述のクラスタネットワークと同じように処理されます。
上記の設定を行うことで、内部的に以下の機能を利用して、外部公開の設定がなされます。 * Virtual Serviceに設定されたFQDNを自動取得しDNSレコードをマネージドDNSサービスへの登録します。 * Cert Managerを経由してTLSのキーを発行します。
上記の設定では、 network.domain
宛のリクエストとデフォルト Service ( <name>-basic-deployment.svc.cluster.local
)
宛のリクエストが デフォルト Service に転送されます。
IPアドレスを直接指定したアクセスを受け付ける場合¶
IPアドレスを直接指定したリクエストをルーティングしたい特殊なケースでは、 network.domain
に "'*'
または '"*"'
を指定した上で、
network.gatewayName
に 独自に作成した gateway を指定し、 gateway にてルーティングを制御する。
警告
network.domain
に "'*'
または '"*"'
を指定した場合、
他の Deployment アプリケーションでの network.domain
設定によるルーティングが無効になります。
ルーティング設定¶
http によるアクセスに関しては、routes
を定義することによってルーティング設定を行なうことができます。
network.routes
はリスト形式のため、複数のルーティングパターンを登録することができます。
network.routes
を設定していない場合は、Service に宛てた全てのリクエストがデフォルトの Service に転送されます。
パスによるルーティング¶
特定のパスに対するリクエストのみを受けつけたい場合は、以下のように match
を指定します。
network:
routes:
- match:
- uri:
prefix: /apiv1
- uri:
prefix: /apiv1beta1
rewrite:
uri: /
この場合、 path の prefix に /apiv1
と /apiv1beta1
が設定されたリクエストのみデフォルトの Service に転送します。
rewrite
を設定することで転送する際に、 prefix で指定した path を /
に書き変えています。
そのまま転送したい場合には、rewrite の設定は不要です。
Header 等の他の条件によるルーティングを行いたい場合は、 HTTPMatchRequest を参照して match 条件を設定します。
外部サービスへの転送¶
デフォルトの Service ではなく他の Service にリクエストを転送したい場合は、 network.routes[].services
で転送先の Service を指定します。
network:
routes:
- services:
- name: other-service
match:
- uri:
prefix: /apiv1
- uri:
prefix: /apiv1beta1
rewrite:
uri: /
この場合、 /apiv1
と /apiv1beta1
prefix を持つリクエストは、 Service other-service.svc.cluster.local
に転送されます。
転送先の Service は クラスタネットワーク(内部公開) の設定をしておきます。
ConfigMap/Secretの自動マウント¶
Key Management System (KMS) からの Secretリソース を作成します
ConfigMap/Secretリソースの環境変数への設定、もしくは任意のパスへマウントします
なお、External Secret Operator(ESO) がデフォルトで有効となっているため、Secretリソースの作成は自動で行うことが可能です。 (ExternalSecretOperator: Key Management System (KMS)を参照し、Secretリソースを自動で作成する機能)
以下はConfigMapをマウントする例です。 既存の ConfigMap である env-config 内の samplekey という key に対応する値が コンテナ の /var/www2/samplekey というパスにマウントされ、環境変数 ENV_CONFIGMAP にも設定されます。 また、マウント時のアクセス権限の設定も実施できます。デフォルトのアクセス権限は 0644 になります。
mountConfigmaps:
- name: env-config
key: samplekey
mountPath: /var/www2
mode: "0755"
env: ENV_CONFIGMAP
以下は、Kubernetes Secret リソースをマウントする例です。 既存の Kubernetes Secrets である secret-env 内の test という key に対応する値が、 コンテナ の /var/www2/test というパスにマウントされ、環境変数 ENV_SECRET にも設定されます。 また、マウント時のアクセス権限の設定も実施できます。デフォルトのアクセス権限は 0644 になります。
mountSecrets:
- secretRef:
name: secret-env
key: test
mountPath: /var/www2
mode: "0755"
env: ENV_SECRET
以下は、KMS に設定された値をマウントする例です。 KMS にて test2 という key で登録された値が、 コンテナ の /var/www2/test2 というパスにマウントされ、環境変数 ENV_KMS_SECRET にも設定されます。 また、マウント時のアクセス権限の設定も実施できます。デフォルトのアクセス権限は 0644 になります。
mountSecrets:
- remoteRef:
key: test2
# property: testkey # AWSではキー名の他にプロパティの指定が必要
mountPath: /var/www2
mode: "0600"
env: ENV_KMS_SECRET
SecretStore¶
本パッケージは ESO の SecretStore 及び ClusterSecretStore を経由して KMS からシークレット情報を取得します。
CNAP クラスタでは default
ClusterSecretStore がクラスタ作成時に登録されます。
values の secretStore
にはデフォルトでこれが設定されているため、すぐにシークレットを使用することができます。
アプリケーション専用の SecretStore や ClusterSecretStore を作成したい場合は、VAULT パッケージを使用することで、 簡単に一連の設定を行なうことができます。
共有マウント¶
sharedMounts
を設定することで、 ConfigMap/Secretの自動マウント で実行する全てのコンテナとメインのコンテナに共有のフォルダを
設定することができます。
これによって、事前処理で作成したデータをメインコンテナに引き継ぐことができます。
プライベートなコンテナレジストリへのアクセス設定機能¶
認証のかかったプライベート Docker リポジトリから Docker イメージを取得する場合は、imagePullSecret を利用します。
利用にあたっては、Docker レジストリの認証情報を事前に KMS に登録しておき、
values の image.pullSecrets.[]
に利用する imagePullSecret の設定を列挙します。
これによって、自動的にクラスタ上に secret が作成され、Pod が参照するように設定されます。
なお、 image.pullSecrets.[].passwordSecret
の値は作成される Kubernetes リソースの名前に付与されるため、
英小文字で始まり、英小文字・ハイフン・ピリオドのみを含むように設定してください。
重要
EKS では同一アカウント GKE では同一プロジェクト内に作成されたプライベートコンテナレジストリに対するアクセス権は 自動的に付与されるため imagePullSecret の設定を行う必要はありません。
アプリケーションで利用するコンテナイメージの自動更新¶
アプリケーションで利用するコンテナイメージのタグを自動的に更新することが可能です。
前提条件¶
本機能を使用するためには、Deploykeyをリポジトリに追加するときに書き込みアクセス権を付与しておく必要があります。
GitHubでDeploykeyに書き込みアクセス権が設定されているかどうかを確認するためには、該当のリポジトリより、 Settings -> Deploy keys を押下し、以下の図の赤枠のように「Read/write」となっていれば問題ありません。

「Read-only」となっていた場合、deploykeyを一度削除し、再登録する必要があります。 deploykeyが削除されると一時的にGitRepositoryとの連携が切断されますが、アプリケーションへの影響はありません。 deploykeyの登録方法は、チュートリアルのDeploykeyの登録の章 を参照してください。
利用方法¶
利用にあたっては、 image.autoUpdate
に ユーザー設定用リポジトリ、イメージのリポジトリ、タグの更新ポリシーを設定した上で、
image.tag
に {"$imagepolicy": "[metadata.namespaceの値]:[image.repositoryのイメージ名]-[metadata.nameの値]-application:tag"}
という形式で自動更新のポリシーを指定するコメントを記載します。
この設定を行うことで、ユーザー設定用リポジトリ内の Application マニフェストが自動的に編集され、アプリケーションで利用されるイメージのタグを更新することが可能です。
ここで、[image.repositoryのイメージ名]に入力する値はイメージ名のみとすることに注意してください。
以下は、 metadata.name: customer-app
, metadata.namespace: staging
, image.repository: path/to/sample-img
とした場合のコメントの記述例です。
image:
tag: "1.0.0" # {"$imagepolicy": "staging:sample-img-customer-app-application:tag"}
環境ごとに違う自動更新のポリシーを適用する方法¶
各環境(開発・検証・本番)ごとに異なる自動更新のポリシーを、以下の設定を利用して適用することができます。 以下でいくつかの自動更新のポリシーの例を示します。
以下の例は開発環境向けのポリシーの一例になります。 メジャー・マイナー・パッチ・プレリリース全てのバージョンの最新のバージョンになるよう自動更新します。
image:
autoUpdate:
imagePolicy:
policy:
semver:
range: x-alpha
以下の例は検証環境向けのポリシーの一例になります。 メジャー・マイナー・パッチの全てのバージョン、およびプレリリースバージョンのうちrcバージョンのみを対象として、最新のバージョンになるよう自動更新します。
image:
autoUpdate:
imagePolicy:
policy:
semver:
range: x-alpha
filter:
inclusionPattern: '.*-rc.*'
以下の例は本番環境向けのポリシーの一例になります。 パッチバージョンに限定してバージョンを自動更新します。 メジャー・マイナーバージョンのアップデート時には、 image.autoUpdate.imagePolicy.policy.semver を 1.0.x から 1.1.x や 2.0.x に手動で更新します。
image:
autoUpdate:
imagePolicy:
policy:
semver:
range: 1.0.x
また、各環境ごとにパッチファイル等利用してマニフェストを分割して作成している場合、 更新対象となるマニフェストが配置されているパスを image.autoUpdate.userRepository.path にて指定します。
プライベートなコンテナレジストリを利用した自動更新¶
コンテナイメージの自動更新を行うためには、コンテナイメージをホストするコンテナレジストリへのアクセス権限の 設定を行う必要があります。 プライベートなコンテナレジストリへのアクセス設定機能 を行っている場合、コンテナレジストリへのアクセスは、この imagePullSecret を利用して行なわれます。 imagePullSecret が設定されていない場合は、CNAP のデフォルト設定によるイメージバージョン更新情報の取得を試みます。
CNAP はデフォルトで以下のコンテナレジストリに対して、自動更新機能にリードオンリーのアクセス権を付与します。
AWS: 同一アカウント内に作成されたコンテナレジストリ
Azure: 同一サブスクリプション内に作成されたコンテナレジストリ
Google: 同一プロジェクト内に作成されたコンテナレジストリ
アカウント作成とロール設定¶
本パッケージをインストールすると、デフォルトでワークロードに割り当てられる専用のアカウントが発行されます。 このアカウントにクラウドサービスのロールを付与することで、コンテナ内のプロセスで個別の認証の手続を行うことなく、 任意のクラウドサービスにアクセスすることができるようになります。
マネージドサービスアカウントの作成
マネージドサービスアカウントに対するロールの付与
コンテナからマネージドサービスアカウントに付与された権限を使用する設定
これらのリソースは Pod から利用することを想定して、作成したリソースを適切に適用できるように構成されます。 各ステップで使用するリソースは既存のものを利用、もしくは新規作成どちらも可能です。
重要
auth.serviceAccount.create
が false の場合、アカウントは新規発行されず、指定された既存のアカウントを使用します。
既存のアカウントを指定した場合、設定の重複を避けるため本パッケージではロールの付与を行いません。
このため、既存のアカウントを利用する場合は個別にロール設定をする必要があります。
GCP ロール設定¶
auth.gcp.roles[].name
に指定するロール名は GCPロールのページ から適切なロール(roles/XXXX)を探して適用します。
ストレージバケット等の特定のリソースにのみ権限を付与したい場合は auth.gcp.roles[].resourceRef
に ターゲットリソース を指定します。
auth:
gcp:
roles:
- name: roles/redis.editor
- name: roles/storage.objectAdmin
resourceRef:
kind: StorageBucket
external: example-storage-bucket
Azure ロール設定¶
auth.azure.roles[].id
に指定するロールidは Azureロールのページ から適切なロール id を探して適用します。
auth:
azure:
roles:
- id: "17d1049b-9a84-46fb-8f53-869881c3d3ab"
- id: "f25e0fa2-a7c8-4377-a976-54943a77a395"
Tip
コンテナでaz cli を使用する場合、以下のコマンドでAzureログインをしてください。
az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID
AWS ロール設定¶
AWS 管理のポリシーを適用する場合
AWS 管理の IAM ポリシーを設定したい場合は auth.aws.awsManagedPolicies[]
に対し、
ポリシー arn の arn:aws:iam::aws:policy/[NAME]
NAME 部分を設定します。
auth:
aws:
awsManagedPolicies:
- name: AmazonRDSReadOnlyAccess
既存のカスタマー管理のポリシーを適用する場合
既存のカスタマー管理の IAM ポリシーを設定したい場合は、 auth.aws.customerManagedPolicy.name
と auth.aws.awsManagedPolicies[].name
に、
ポリシー arn の arn:aws:iam::111122223333:policy/[NAME]
NAME 部分を設定します。
また、 auth.aws.awsManagedPolicies[].customerManaged
に true
を、 auth.aws.customerManagedPolicy.create
に false
を設定します。
auth:
aws:
awsManagedPolicies:
- name: test-cs-policy-name
customerManaged: true
customerManagedPolicy:
name: test-cs-policy-name
create: false
新規にカスタマー管理のポリシーを作成して適用する場合
新規にカスタマー管理のポリシーを作成して適用する場合も auth.aws.customerManagedPolicy.name
と auth.aws.awsManagedPolicies[].name
に、
ポリシー arn の arn:aws:iam::111122223333:policy/[NAME]
NAME 部分を設定します。
また、 auth.aws.awsManagedPolicies[].customerManaged
に true
を、 auth.aws.customerManagedPolicy.create
に true
を設定してください。
これにより、 auth.aws.customerManagedPolicy.actions
, auth.aws.customerManagedPolicy.resources
に設定した値に基づいて新規に作成したポリシーが適用されます。
auth:
aws:
awsManagedPolicies:
- name: test-cs-policy-name
customerManaged: true
customerManagedPolicy:
name: test-cs-policy-name
actions:
- action: ec2:DescribeAddresses
- action: ec2:DescribeAvailabilityZones
resources:
- resource:
serviceName: eks
resourceType: "*"
Id: "*"
create: true
AWS IRSA と IAM ポリシーの詳細については、 ロールとサービスアカウントの設定 を参照してください。
データベースアクセス¶
クラウドのマネージド RDBMS (PostgreSQL, MySQL) を利用する場合は preConnectRdb
フィールドを設定することによって、
データベースとの接続に関する以下の設定を行うことができます。
データベースへの疎通確認の実施
(Google Cloudのみ) Cloud SQLで作成されたデータベースに対する、アクセス権限の設定
Google Cloudでは データベース利用時にロールの設定が必要ですが、 これによって適切なロールがワークロードに付与されるため、 rdb に関する アカウント作成とロール設定 を行なう必要はありません。
設定されるのはマネージド RDBMS インスタンスへのアクセス設定のみのため、データベースアカウントによる、個々のデータベースへの接続はコンテナ内のアプリケーションで実装します。 アクセスに必要なパスワードなどの取得には ネットワーク設定 の機能が利用できます。
Cloud SQL Auth Proxy¶
GCP の Cloud SQL を利用する場合は、自動的に Cloud SQL Auth Proxy がサイドカーコンテナに設定されます。
Cloud SQL Auth Proxy を利用する場合はインスタンスのロケーションに関係なく、コンテナからは常に localhost
を host に指定してアクセスします。
preConnectRdb:
- gcp:
instance: my-mysql-instance-1
port: 3306
- gcp:
instance: my-postgres-instance-2
port: 5432
ポートは localhost にバインドされるため、重複しないように設定します。
事前処理用コンテナの登録¶
サービスを提供するコンテナとは異なるコンテナで事前処理を行いたい場合や、
同じコンテナであっても事前処理ではより強い権限のユーザーで処理を行い、
メインコンテナは必要最低限の権限で実行するといった要件がある場合 initContainers
を使用できます。
initContainers にリストで登録したコンテナは昇順で実行され、全てのコンテナの実行が終わってから、メインのコンテナが実行されます。
initContainers:
- name: waiting
image:
repository: waiting-dependency
tag: latest
- name: init
image:
repository: sdkimage
tag: v1.0.0
workingDir: /app
command:
- sh
- initapp
sharedMounts:
- /app/data
- /app/cache
上記の例では sharedMounts
の設定によって、 /app/data
と /app/cache
が各コンテナにマウントされます。
Tip
データベースマイグレーションのような、フレームワークに組み込まれている処理は、サービス起動前に実行する必要がありますが、 同一コンテナ上で実行できるため、基本的には initContainers は利用せず、起動スクリプトに処理を組み込むように設計してください。
重要
GKE の場合 DB 接続はサイドカーコンテナの sql auth proxy を経由して行われます。 サイドカーコンテナは initContainers の終了後に起動するため、 GKE では initContainer 内で DB を必要とする処理を行うことはできません。
警告
Pod の起動は initContainers の終了を待ちます。フォアグラウンドで終了しないコンテナを initContainers に登録すると Pod が起動しなくなります。
オートスケール¶
scaling.scalingType
を auto
に設定し、 scaling.autoscaling
の設定を行なうことで、コンテナに割り合てる、CPU とメモリの設定及び、
Pod の自動スケール設定を行います。
CPU 利用率によるスケール¶
scaling.requests.cpu
で指定した起動時に要求する CPU 値に対して scaling.autoscaling.targetAverageUtilization.cpu
で指定した利用率を越えた場合スケールを行います。
CPU 要求はクラスタを構成する vcpu から1つを要求する場合、1000m を指定します。
メモリ利用率によるスケール¶
scaling.requests.request
で指定した起動時に要求するメモリ値に対して scaling.autoscaling.targetAverageUtilization.memory
で指定した利用率を越えた場合スケールを行います。
メモリ要求はクラスタを構成するメモリから、 Gi, Mi, Ki のような単位で指定します。
重要
request 利用率のいずれかが指定されていない場合、オートスケールは実行されません。
利用率以外でのスケールを行いたい場合は、 Kubernetes の ドキュメント を参照し、
直接 HorizontalPodAutoscaler
を作成してください。
Prometheusメトリクス¶
本パッケージでは CNAP の作成したマネージド Prometheus ワークスペースにメトリクスの 収集を行うための設定を行うことができます。
本パッケージを利用すると、デフォルトでコンテナの基本的なメトリクス(CPU、メモリ、ディスクIO、ネットワークIO)がPrometheusへ収集されます。 収集されるメトリクスの詳細については、 cAdvisor Prometheus container metrics を参照ください。
CNAP が cAdvisor から収集するメトリクスはコストを抑えるため厳選されたメトリクスのみ収集します。
メトリクス |
概要 |
---|---|
container_cpu_usage_seconds_total |
コンテナの cpu 使用時間 |
container_memory_rss |
コンテナの rss 使用量 |
container_memory_usage_bytes |
コンテナの現在のメモリ使用量 |
container_cpu_load_average_10s |
コンテナの過去10秒間のロードアベレージ |
container_network_receive_bytes_total |
コンテナの受信バイト合計 |
kube_pod_status_ready |
Pod の Ready 状態 |
kube_pod_container_resource_requests |
コンテナのリソース要求値 |
kube_pod_container_resource_limits |
コンテナのリソース制限値 |
kube_pod_container_status_restarts_total |
コンテナの再起動回数 |
kube_pod_status_reason |
Pod の理由 |
kube_pod_status_phase |
Pod の実行フェイズ |
kube_pod_container_status_terminated |
コンテナの終了ステータス |
kube_pod_container_status_terminated_reason |
コンテナの終了理由 |
kube_pod_owner |
Pod のコントローラー情報 |
kube_pod_info |
Pod の情報 |
kube_deployment_status_condition |
Deployment の状態 |
kube_job_status_failed |
Job の失敗 |
kube_statefulset_replicas_status_ready |
Statefulset の Ready 状態 |
kube_daemonset_status_number_unavailable |
実行できていない Daemonset の数 |
kube_[xxx]_labels |
リソースのラベル |
また、アプリケーションが開示した独自のメトリクスをPrometheusへ収集させることも可能です。
Pod から直接メトリクスを収集する場合は、
PodMonitor
。Service を経由してメトリクスを収集する場合には ServiceMonitor
を利用します。
コンテナがメトリクスを開示するエクスポーターの利用するポートと、指定がある場合はエンドポイントパスを
PodMonitor を利用する場合は monitoring.prometheus.podMonitor.podMetricsEndpoint
ServiceMonitor を利用する場合は monitoring.prometheus.serviceMonitor.endpoints
に設定します。
PodMonitor podMetricsEndpoint のドキュメント
ServiceMonitor endpoints のドキュメント
なお、アプリケーションでのPrometheusメトリクスの開示方法については、 Prometheus Client Libraries を参照ください。
Prometheusへのメトリクス収集を無効化したい場合は、 monitoring.prometheus.enabled
を false
に設定します。
マイグレーション¶
1.3.0¶
1.3.0 以前のバージョンから 1.3.0 以降のバージョンにアップデートすると、 デフォルトで podMonitor の設定は行われなくなります。 これによって Pod のコンピュートリソースのメトリクスが取得されなくなることはありませんが、 コンテナに独自のエクスポーターを組み込んでデフォルト設定を行っている場合は、 Application マニフェストに以下の設定を追加する必要があります。
monitoring:
prometheus:
podMonitor:
podMetricsEndpoints:
- path: /metrics
port: http # network.service.ports.name で指定した値と同じ値を設定
Values¶
Default values¶
# Default values for basic-deployment.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
########## Kubernetes Deployment リソースに設定される変数 ##########
### 階層を簡易化した変数 ###
# 階層はショートカットしているが、変数の構成自体は Kubernetes Deployment リソースと変更がない変数。
## containerに関する設定 ##
# コンテナ内で実行するコマンドを設定する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].command にそのまま反映される。
command: []
# - ./podinfo
# - --port=9898
# - --port-metrics=9797
# - --grpc-port=9999
# - --grpc-service-name=podinfo
# - --level=info
# - --random-delay=false
# - --random-error=false
# コンテナのエントリポイントで実行されるコマンドに引数を与える。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].args にそのまま反映される。
args: []
## ボリュームに関する設定
# コンテナ内でどのボリュームをどのパスでマウントするかを設定する。
# ボリューム自体の設定は volumes にて設定する。
# Kubernetes ConfigMap リソース および Secret リソースのマウント設定については、configmaps および secrets にて設定が可能。
# 設定した内容は Kubernetes Deployment リソースの以下の設定値にそのまま反映される。
# - spec.template.spec.initContainers.[0].volumeMounts
# - spec.template.spec.containers.[0].volumeMounts
volumeMounts: []
# - mountPath: /cache
# name: cache-volume
# コンテナ内でどのボリュームを利用するか設定する。
# 利用できるボリュームは一時的な保存領域として利用する emptyDir や、各クラウドの提供するブロックストレージサービスなどが含まれる。
# 詳細は https://kubernetes.io/ja/docs/concepts/storage/volumes/ を参照のこと。
# ボリュームをコンテナ内のどのパスでマウントするかの設定は volumeMounts にて設定する。
# Kubernetes ConfigMap リソース および Secret リソースのボリューム設定については、configmaps および secrets にて設定が可能。
# 設定した内容は Kubernetes Deployment リソースの以下の設定値にそのまま反映される。
# - spec.template.spec.volumes
volumes: []
# - name: cache-volume
# emptyDir: {}
# コンテナ内で適用する環境変数を設定する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].env にそのまま反映される。
env: []
# - name: HTTPS_PROXY
# value: http://example.com:18080
## Podに関する設定 ##
## ヘルスチェックに関する設定
# Podが正常に動作しているかの確認。このヘルスチェックが満たされなければコンテナが再起動する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].livenessProbe にそのまま反映される。
livenessProbe:
{}
# # コマンド実行(exec)、HTTPリクエスト(httpGet)、TCP接続(tcpSocket)の3種類のヘルスチェックが設定可能。
# exec: # コマンドを実行し、リターンコードが0以外のときにヘルスチェック失敗とする。
# command:
# - cat
# - /tmp/healthy
# httpGet: # HTTP GETリクエストを実行し、リターンコードが異常(4xx/5xx)のときにヘルスチェック失敗とする。
# path: /healthz
# port: 8080
# tcpSocket: # TCP接続を実行し、接続失敗したときにヘルスチェック失敗とする。
# port: 8080
# initialDelaySeconds: 60 # コンテナが開始してからヘルスチェックを行うまでの初期遅延を秒単位で指定する。
# timeoutSeconds: 1 # ヘルスチェックのタイムアウトを秒単位で指定する。
# periodSeconds: 10 # ヘルスチェックの間隔を秒単位で指定する。
# successThreshold: 1 # ヘルスチェックが成功したと判断する最小回数を指定。
# failureThreshold: 3 # ヘルスチェックが失敗したと判断する最小回数を指定。
# Podがサービスインの準備ができているかの確認。このヘルスチェックが満たされなければコンテナへリクエストを送信しない。
# 設定内容は livenessProbe と同じ。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].readinessProbe にそのまま反映される。
readinessProbe:
{}
### 抽象化設定 ###
# Kubernetes Deployment リソースとその他のリソースを連動して設定・構築が実施される設定項目
# 利用するイメージに関する設定。
image:
# イメージ名・レジストリ名の設定。Kubernetes Deploymentのspec.template.spec.containers.[0].imageに反映。
repository: "" # 例: "asia-northeast1-docker.pkg.dev/customer-project/customer-docker-registry/customer-app-img"
# イメージのタグ設定。設定無しの場合、本パッケージの.Chart.AppVersionからv{{ .Chart.AppVersion }} というタグ名を自動生成。
# autoUpdate無効時の例: "1.0.0"
# autoUpdate有効時、以下のようにタグの後ろのコメントを記述することで自動アップデートされる
# # tag: "1.0.0" # {"$imagepolicy": "staging:sample-img-customer-app-application:tag"}
# # コメントのフォーマット: {"$imagepolicy": "[metadata.namespaceの値]:[image.repositoryのイメージ名]-[metadata.nameの値]-application:tag"}
# # 注: [image.repositoryのイメージ名]に入力する値は、イメージ名のみとすること(例: repository: path/to/sample-img の場合、入力する値は sample-img となる)
tag: ""
# イメージのタグの自動更新設定。image.tag の値をポリシーに従って自動的に更新する。 詳細: https://fluxcd.io/flux/guides/image-update/
autoUpdate:
# タグ自動更新の有効化
enabled: false
# ユーザー設定用リポジトリに関する設定。
userRepository:
# Application マニフェストが配置されているユーザー設定用 GitRepository CR 名を指定する。
# CR 名の一覧は ` kubectl get gitrepo -A -o custom-columns='NAME:.metadata.name' ` コマンドにより確認できる。
# 初期開通時に設定したユーザー設定用リポジトリを利用する場合: user-repo
# UserConfigで設定したユーザー設定用リポジトリを利用する場合: [UserConfig名]-userconfig-[UserConfigで指定したリポジトリ名]-user-repo
gitRepositoryName: user-repo
# Application マニフェストが配置されているユーザー設定用リポジトリのブランチに関する設定。
branch:
# 参照ブランチ
source: main
# 更新対象ブランチ
target: main
# マニフェストが配置されているディレクトリパス
path: ./
# タグの自動更新間隔
interval: 5m
# イメージのリポジトリに関する設定。
imageRepository:
# イメージの更新確認の間隔
interval: 5m
# イメージのタグの更新ポリシーに関する設定。ここに設定されたポリシーに従って、image.tag が更新される
imagePolicy:
policy: {}
# # semver/alphabetical/numerical のいずれかを指定
# semver:
# range: 5.x.x
# alphabetical:
# # asc(昇順) / desc(降順)
# order: asc
# numerical:
# # asc(昇順) / desc(降順)
# order: asc
# タグのフィルタリング設定
# exclusionPatternList の後 inclusionPattern が評価される
filter: {}
# # 対象から除外するタグを正規表現の文字列のリストで指定
# exclusionPatternList: []
# # 対象に含めるタグを正規表現で指定
# # (例) inclusionPattern: '.*-rc.*' # (rcバージョンのみ対象にしたい場合)
# inclusionPattern: '.*-rc.*'
# イメージをダウンロードして更新するポリシーを設定する。
# - IfNotPresent
# - イメージがローカルに存在しない場合のみダウンロードします。
# - Always
# - コンテナ起動時に常にリポジトリを参照し、同一のイメージ名・タグ名でもイメージが更新されている場合はダウンロードを実施する。
# 更新が実施されていない場合のみローカルのイメージを利用します。
# - タグに latest を指定する場合、Always を設定する必要があります。
# 設定した値は Kubernetes Deployment リソースの spec.template.spec.containers.[0].imagePullPolicy に反映される。
pullPolicy: IfNotPresent
# イメージをダンロードする際に利用する認証情報を設定する。プライベートなコンテナレジストリを使用する場合は必須の設定項目。
# ここで設定された値を元に、クラウドベンダの KMS からコンテナレジストリの認証情報を取得し、本パッケージで利用する。
# 具体的には以下の設定作業を実施します。
# - KMS に設定された値から自動的にクラスタ上に Secret が生成される。
# - 生成された Secret を参照する ServiceAccount が生成される。
# - 生成された ServiceAccount を Deployment の spec.template.spec.imagePullSecrets にて設定する。
pullSecrets: []
# -
# # コンテナレジストリで利用するユーザー名。
# username: testuser
# # KMS に登録されているコンテナレジストリの認証情報のシークレット名。
# # パッケージ利用前に、ここに設定したキー名で KMS に コンテナレジストリの認証情報を保存しておく必要がある。
# # ここで設定したキー名はKubernetes リソースの名前に付与されるため、英小文字で始まり、英小文字・ハイフン・ピリオドのみを含むように設定する。
# passwordSecret: imagepullsecret
# # コンテナレジストリのユーザーの email アドレス
# email: testuser@example.com
# # コンテナレジストリサーバーのURL
# # 各コンテナレジストリごとの設定例:
# # - Docker Hub: dockerhub.io
# # - Google Cloud(Artifact Registry): [REGION名]-docker.pkg.dev
# # - Azure(Azure Container Registry): [コンテナレジストリ名].azurecr.io
# # - AWS(Elastic Container Registry): [AWSアカウントID].dkr.ecr.[リージョン名].amazonaws.com
# dockerRegistryServer: asia-northeast1-docker.pkg.dev
# # 以下は、AWSでのみ利用する設定。
# # KMS に登録されているコンテナレジストリの認証情報のキー名。
# # KMS に構造体として保存している場合は、シークレット名の他に構造体のキー名の指定を行う。
# property: authkey
# Pod 内のコンテナで共有して利用する一時保存領域の設定。
# initContainer にて実行した事前処理結果を containers で動作させるメイン処理に引き継ぐために利用する。
# コンテナ内でマウントしたパスを指定する。
# Kubernetes Deployment リソースのspec.template.spec.volumes にて一時保存用のボリューム定義を設定した上で、以下にマウントの設定を行う。
# - spec.template.spec.initContainers.[0].volumeMounts
# - spec.template.spec.containers.[0].volumeMounts
sharedMounts: []
# - /app/data
# - /app/cache
# Kubernetes Deployment リソースと組み合わせて利用する ConfigMap リソースに関する設定を記載する。
# 既に作成済みの ConfigMap を Deployment で参照するための設定を記載する。
# ConfigMap の作成、及び Kubernetes Deployment リソースの 以下のパラメーターを自動的に設定する。
# spec.template.spec.initContainers.[0].volumeMounts
# spec.template.spec.containers.[0].volumeMounts
mountConfigmaps:
[]
# 以下の例では、既存の ConfigMap である env-config 内の samplekey という key に対応する値が
# コンテナ の /var/www2/samplekey というパスにマウントされ、環境変数 ENV_CONFIGMAP にも設定される。
# また、マウント時のアクセス権限も設定でき、デフォルトのアクセス権限は 0644 になる。
# - name: env-config
# key: samplekey
# mountPath: /var/www2
# mode: "0755"
# env: ENV_CONFIGMAP
# Kubernetes Deployment リソースと組み合わせて利用する Secret リソースに関する設定を記載する。
# 以下について設定可能です。
# - 既に作成済みの Kubernetes Secret リソースを Deployment にて参照する。
# - KMS に設定された値を Kubernetes Secret リソースとして設定した上で Deployment にて参照する。
# Kubernetes Deployment リソースの 以下のパラメーターを自動的に設定します。
# spec.template.spec.initContainers.[0].volumeMounts
# spec.template.spec.containers.[0].volumeMounts
mountSecrets:
[]
# Kubernetes Secret リソースを参照する場合には、secetRef を設定します。
# 以下の例では、 既存の Secrets である secret-env 内の test という key に対応する値が、
# コンテナ の /var/www2/test というパスにマウントされ、環境変数 ENV_SECRET にも設定されます。
# また、マウント時のアクセス権限の設定も実施できます。デフォルトのアクセス権限は 0644 になります。
# - secretRef:
# name: secret-env
# key: test
# mountPath: /var/www2
# mode: "0755"
# env: ENV_SECRET
# KMS に設定された値を参照する場合には、remoteRef を設定します。
# 以下の例では、KMS にて test2 という key で登録された値が、
# コンテナ の /var/www2/test2 というパスにマウントされ、環境変数 ENV_KMS_SECRET にも設定されます。
# また、マウント時のアクセス権限の設定も実施できます。デフォルトのアクセス権限は 0644 になります。
# - remoteRef:
# key: test2
# # property: testkey # KMS に構造体として保存している場合は、構造体のキーを property に指定する。
# mountPath: /var/www2
# mode: "0600"
# env: ENV_KMS_SECRET
### 上級者向け変数 ###
# 以下は設定しなくても本パッケージの機能を利用することは可能。
# 高度なカスタマイズを実施したい場合に利用する。
# メインで設定したコンテナが起動する前に起動したいコンテナがある場合に設定する。
# 設定した内容は kubernetes Deployment リソースの spec.template.spec.initContainers に反映される
# また、以下のイメージに関する機能については、initContainers[].image に image と同じ形式で設定することで利用可能。
# - プライベートなコンテナレジストリへのアクセス設定機能
# - image.pullSecrets と同じ形式の設定を initContainers[].image.pullSecrets に設定。
# アプリケーションで利用するコンテナイメージの自動更新機能
# - image.autoUpdate と同じ形式の設定を initContainers[].image.autoUpdate に設定。
initContainers: []
# Kubernetes Deployment リソースの annotaions を設定する。
# 設定した内容は kubernetes Deployment リソースの metadata.annotations にそのまま反映される。
annotations: {}
# Kubernetes Deployment リソースの labels を設定する。
# 設定した内容は kubernetes Deployment リソースの metadata.labels にそのまま反映される。
labels: {}
# Kubernetes Deployment リソースによって起動された Pod の annotaions を設定する。
# 設定した内容は kubernetes Deployment リソースの spec.template.metadata.annotations にそのまま反映される。
podAnnotations: {}
# Kubernetes Deployment リソースによって起動された Pod の labels を設定する。
# 設定した内容は kubernetes Deployment リソースの spec.template.metadata.labels にそのまま反映される。
podLabels: {}
# Pod内のコンテナにて利用するユーザー権限を設定する。
# コンテナイメージに予め設定された実行ユーザーを利用したい場合などに利用する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].securityContext にそのまま反映される。
securityContext: {}
# - runAsUser: 0
# runAsGroup: 0
# Pod内のコンテナに共通で利用するユーザー権限を設定する。
# コンテナイメージに予め設定された実行ユーザーを利用したい場合などに利用する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.securityContext にそのまま反映される。
podSecurityContext: {}
# runAsUser: 0
# runAsGroup: 0
# Pod内のコンテナのワーキングディレクトリを指定する
# コンテナランタイム および コンテナイメージで指定されたディレクトリ以外を指定したいときに利用するl.
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.containers.[0].workingDir にそのまま反映される。
# workingDir: ""
## Podをノードへ配置する際の選択ポリシーに関する設定
# 指定されたラベルが設定されている ノード に Pod を配置する設定。
# 特定のマシンタイプのノードにPodを配置したいときなどに利用する。
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.nodeSelector にそのまま反映される。
nodeSelector: {}
# cloud.google.com/private-node: "true"
# node.kubernetes.io/instance-type: a2-highgpu-2g
# 指定された内容にしたがって Pod を配置するための設定。
# nodeSelectorと比較して、Nodeに対する配置の設定について細かい設定ができたり、Pod同士をNodeに共存させる設定などが指定可能。
# ルール内の細かい設定値については Kubernetes の公式ドキュメントを参照ください。
# - https://kubernetes.io/ja/docs/concepts/scheduling-eviction/assign-pod-node/
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.affinity にそのまま反映される。
affinity: {}
# # Pod の Node への配置に関する設定、nodeSelector と設定値の目的は同じだが、より細かい設定が可能。
# nodeAffinity:
# # 設定されたルールを満たす Node がなければ、Pod を配置することができない設定。
# requiredDuringSchedulingIgnoredDuringExecution:
# {}
# # 設定されたルールに合致する Node にできる限り Pod を配置しようとする設定。見つからない場合はそれ以外の Node に Pod が配置されます。
# preferredDuringSchedulingIgnoredDuringExecution:
# {}
# # Pod同士を同じNodeに配置するための設定。
# # nodeAffinity と同様に requiredDuringSchedulingIgnoredDuringExecution と preferredDuringSchedulingIgnoredDuringExecution が設定可能。
# podAffinity:
# {}
# # Pod同士を異なるNodeに配置するための設定。
# # nodeAffinity と同様に requiredDuringSchedulingIgnoredDuringExecution と preferredDuringSchedulingIgnoredDuringExecution が設定可能。
# podAntiAffinity:
# {}
# 指定された内容にしたがって、Pod を特定の Node に配置しないための設定。
# nodeSelector、affinity.nodeAffinity との違いは Node に配置しないことに主眼を置いた設定であること。
# 予め以下のコマンドで Node に Taint という値を設定した上で、この設定項目を設定する。
# kubectl taint nodes node1 app=nonGpu:NoSchedule
# 設定した内容は Kubernetes Deployment リソースの spec.template.spec.tolerations にそのまま反映される。
tolerations: []
# - key: "app"
# operator: "Equal"
# value: "nonGpu"
# effect: "NoSchedule"
########## 監視・モニタリング ##########
monitoring:
# Prometheus メトリクス収集に関する設定
# コンテナがメトリクスを開示している場合に利用可能。
prometheus:
enabled: true # cadvisor からコンテナリソースのメトリクスを収集する(Depricated )
# Pod から直接メトリクスを収集する場合に設定する。
podMonitor: {}
# - podMetricsEndpoints:
# - port: http
# path: /metrics
# Service を経由していメトリクスを収集する場合に設定する。
serviceMonitor: {}
# - endpoints:
# - port: http
# path: /metrics
########## データベース接続 ##########
### データベースに関する設定 ###
# Pod から別途 RDBパッケージ等で構築した既存のデータベースとの接続に関する以下の設定を行う。
# - データベースへの疎通確認の実施
# - (Google Cloudのみ) Cloud SQLで作成されたデータベースに対する、アクセス権限の設定
# 上記の設定のみ実施するので、個々のデータベースへの接続はコンテナ内のアプリケーションで実装する。
# 個々のデータベースアクセスに必要なパスワードは secrets の設定を利用し、KMS から取得・設定を行う。
# AWSとAzureにて、既に存在するデータベースと接続する場合は設定しなくてもよい。
# Google Cloudを利用するケース、またはRDBパッケージを利用してデータベースを新規作成する場合、設定が必須
preConnectRdb: []
# - startupProbe:
# # 各クラウドベンダごとの host に設定する値の例
# # - Google Cloud(Cloud SQL): 127.0.0.1(固定値)
# # - どのRDBに接続するかは別途 preConnectRdb.[].gcp.cloudSql 内に設定する
# # - Azure(Azure Container Registry): [サーバー名].[DB種別].database.azure.com または [サーバー名].database.windows.net
# # - AWS(Amazon RDS): [インスタンスID(ランダム文字列)].[リージョン名].amazonaws.com
# host: 127.0.0.1
# port: 3306
# type: mysql # or postgres
# timeout: 10
# gcp:
# # Cloud SQLでのデータベースリソース名を設定する
# instance: mysql-server
# # Cloud SQLでのデータベースへの接続ポートを指定する
# # 通常、MySQLの場合は3306、PostgreSQLの場合は5432を指定する
# port: 3306
# # データベースのロケーションを設定する。設定されない場合 Kubernetes クラスタと同じロケーション (global.cluster.locationの値) に設定される。
# location: asia-northeast1
########## ネットワーク(今後、ファイアーウォールとかもここに入る。istio → virtualService) ##########
### Network settings ###
network:
# 外部公開用ドメイン
# ここに設定された ドメイン名、もしくは FQDN (ホスト名 + ドメイン名)へのリクエストをルーティングする。
domain: ""
# istio Gateway の名前。
# 外部公開時には基本的に変更不要、別途独自で作成した gateway を指定したい場合に利用
# 外部公開しない場合は "" を指定する
gatewayName: "istio-system/istio-ingress"
# Kubernetes Service リソースに関する設定。以下を設定します。
# - name: (15字以内)containerPortのalias。VirtualService や ServiceMonitor など他のリソースから Service リソースを参照する際に使用
# - servicePort: Serviceが受信するポートを指定します。
# - containerPort: コンテナが受信するポート指定します。
service:
ports: []
# - name: https
# containerPort: 8000
# servicePort: 443
# protocol: TCP
# - name: http
# containerPort: 8080
# servicePort: 80
# protocol: TCP
# Routing settings to Service. Empty will route to the default created Service.
# パスを指定したフィルタリング、URIの書き換え設定
routes: []
# - type: http
# match:
# - uri:
# prefix: /apiv1
# - uri:
# prefix: /apiv1beta1
# rewrite:
# uri: /
# - type: tcp
# services:
# - podLabel:
# labela: test
# port: 80
# weight: 50
# match:
# - uri:
# prefix: /apiv1
# - uri:
# prefix: /apiv1beta1
# rewrite:
# uri: /
########## 可用性 ##########
# Pod の可用性・性能・スケールに関する設定を行う。
# 内部的に Kubernetes Deployment リソースの性能に関する設定、および Kubernetes の以下の機能を利用して可用性・性能・スケールの設定を提供する。
# - PodDisruptionBudget: ノードのスケールインやメンテナンスなど計画的なNodeの停止が実施される際に、最低どれだけPod数を維持してほしいかを設定する機能。
# - Horizontal Pod Autoscaler: PodのCPU/メモリ使用率に基づき、Podを自動的にスケールアウト・スケールインする機能。
scaling:
# Podのスケールを自動で実施するか手動で実施するか設定する。
# manual または auto を設定する。
scalingType: manual # or auto
# 起動するPodの数を設定する。
# scalingType を manual に設定した場合のみ指定する。
replicaCount: 1
# Podが利用できる最大リソース量
limits: {}
# # Podが使用できる最大のCPU使用量。1000m で 1vcpu を示す。
# # 使用量が超過するとPodではCPUの使用が制限されます。
# cpu: 512m
# # Podが使用できる最大のメモリ使用量。Gi, Mi, Kiのような単位で指定する。
# # 使用量が超過するとPodはメモリ不足で再起動されます。
# memory: 512Mi
# Pod起動時に要求するリソース量
# ここに設定した値を元に使用率を計算するので、オートスケールを利用する際はcpuもしくはmemoryの設定が必須。
requests: {}
# # Pod起動時に要求するCPU使用量。1000m で 1vcpu を示す。
# cpu: 128m
# # Pod起動時に要求するメモリ使用量。
# memory: 128Mi
# Podのオートスケール・可用性に関する設定。
# scalingType を auto に設定した場合のみ指定する。
autoscaling: {}
# # Podの最小起動数を指定する。
# minReplicas: 1
# # Podの最大起動数を指定する。
# maxReplicas: 100
# # オートスケールを実行する閾値。
# # request に対する利用率で指定する未指定の場合オートスケールは実施されない。
# targetAverageUtilization:
# cpu: 80
# memory: 80
########## デプロイ戦略 ##########
### Progressive Delivery settings ###
# デプロイ戦略の設定を実施します。
progressiveDelivery:
enabled: false
# デプロイ戦略の設定。blueGreenもしくはcanaryを選択する
# strategy: blueGreen or canary
# Progressive デプロイメントを継続する時間(秒), タイムアウト後に切り替え
timeout: 600
# デプロイメント job を実行する間隔(秒)
interval: 120
# デプロイ戦略が canary の場合のみ有効。canary リリースを行なう場合に、canary ワークロードに割り振る最大トラフィック量の比率(%)
maxWeight: 50
# デプロイ戦略が canary の場合のみ有効。canary ワークロードに割り振る最大トラフィック量の増加比率(%)
stepWeight: 10
# 切り替え判定に利用する port 名
port:
name: http
# 疎通確認を行なうためのエンドポイント情報
# endpoints:
# accessTests: []
# loadTests: []
# カスタムメトリクスを利用したテストを行なう場合の設定 (https://docs.flagger.app/usage/metrics)
# extraMetrics: []
# エンドポイントアクセスへのカスタム設定 (https://docs.flagger.app/usage/webhooks)
# extraWebhooks: []
########## アクセス権限 ##########
# 作成するアプリケーションに付与する権限の設定
# 具体的には作成するDeploymentリソースが使用するServiceAccountにクラウドリソースへの権限を付与する。
# memo: 本当はベンダー共通にしたいが共通にしたときにユーザが誤解する可能性が高いためベンダーごとの個別設定にしている
auth:
### Account and Role settings ###
# access for managed service APIs from pods by setting the roles field
# Azureのみ有効
azure:
roles: []
# Azureの場合、以下を参考にしてアプリーケーションに付与したい組み込みロールのIDを指定。スコープはsubscription。
# https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles
# - id: "17d1049b-9a84-46fb-8f53-869881c3d3ab"
# - id: "f25e0fa2-a7c8-4377-a976-54943a77a395"
# set when using a application that does not support Azure Workload Identity
IMDSProxy: false
# authType: wlid configure inject proxy settings for Azure Workload Identity
authType: wlid
# managedId を配置する resource groups that Azure resources belong. This is not needed.
midResourceGroup:
name: ""
# Googlc Cloudのみ有効
gcp:
roles: []
# Googlc Cloudの場合、アプリーケーションに付与したいロール名を指定。resourceRefで対象リソースを絞ることが可能。
# - name: "roles/admin"
# - name: "roles/pubsub.reader"
# resourceRef:
# kind: PubSubTopic
# external: project/a
# AWSのみ有効
aws:
awsManagedPolicies: []
# AWSの場合、アプリーケーションに付与したいポリシー名を指定。詳細はREADMEを参照。
# - name: "AmazonRDSFullAccess"
# - name: "test-cs-policy-name"
# customerManaged: true
# カスタムポリシーを指定する場合
customerManagedPolicy: {}
# customerManagedPolicy:
# name: test-cs-policy-name
# actions:
# - action: ec2:DescribeAddresses
# - action: ec2:DescribeAvailabilityZones
# resources: # 必須。resources要素なしだとterraformでiam-policyを作成できない
# - resource:
# serviceName: eks
# resourceType: "*"
# Id: "*"
# create: true
## 以下は上級者向け設定
# 既存のサービスアカウントを使用する、もしくは作成するサービスアカウントを追加設定したい場合に使用。
#
serviceAccount:
# Specifies whether a service account should be created.
# If true, a service account will be created. Otherwise, the default is used.
create: false
# Annotations to add to the service account.
# 基本的に設定不要
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template.
# name: ""
########## コスト按分 ##########
# 作成するアプリケーションに付与するコスト按分用のラベル設定
# costCenter: ""
########## その他 HelmRelease用, external secret 用 ##########
# KMSとSecret情報を連携するための設定。
# 変更が必要な場合はVAULTパッケージにて作成したsecretStoreを設定。
secretStore:
kind: ClusterSecretStore
name: default
# 管理用
global:
gcp: {}
Schema reference¶
properties |
|||||||
|
グローバル設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
ベンダー |
||||||
type |
string |
||||||
enum |
gcp, azure, aws |
||||||
|
クラスター情報 |
||||||
type |
object |
||||||
properties |
|||||||
|
クラスター名(AWS, Azureのみ必須) |
||||||
type |
string |
||||||
|
顧客ID (AWSのみ必須) |
||||||
type |
string |
||||||
|
|||||||
type |
object |
||||||
properties |
|||||||
|
GCP プロジェクトID |
||||||
type |
string |
||||||
|
|||||||
type |
object |
||||||
properties |
|||||||
|
|||||||
type |
object |
||||||
properties |
|||||||
|
|||||||
type |
object |
||||||
properties |
|||||||
|
クラスターが所属するリソースグループ名 |
||||||
type |
string |
||||||
|
|||||||
type |
object |
||||||
properties |
|||||||
|
AWS アカウントID |
||||||
type |
string |
||||||
|
AWS アカウントの ARN プレフィックス |
||||||
type |
string |
||||||
|
コンテナ内の作業フォルダを指定 |
||||||
type |
string |
||||||
|
Deployment に付与する Annnotation を設定 |
||||||
type |
object |
||||||
|
Deployment が作成する Pod に付与する Annnotation を設定 |
||||||
type |
object |
||||||
|
Deployment に付与する Label を設定 |
||||||
type |
object |
||||||
|
Deployment が作成する Pod に付与する Label を設定 |
||||||
type |
object |
||||||
|
コンテナ起動時のコマンド設定 |
||||||
type |
null / array |
||||||
items |
コンテナ起動時に指定する Command |
||||||
type |
string |
||||||
|
コンテナ起動時エントリポイントに指定されたコマンドに渡す引数リスト |
||||||
type |
null / array |
||||||
items |
コンテナ起動時エントリポイントに指定されたコマンドに渡す引数 |
||||||
type |
string |
||||||
|
コンテナに作成するvolume |
||||||
type |
array |
||||||
|
コンテナにマウントするvolume |
||||||
type |
array |
||||||
|
環境変数 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
type |
string |
|||||
|
type |
string |
|||||
|
livenessProbe 設定 |
||||||
type |
object |
||||||
|
readinessProbe 設定 |
||||||
type |
object |
||||||
|
nodeSelectorを利用したPodを特定のノードに割り当てる設定 |
||||||
type |
object |
||||||
|
Nodeアフィニティを利用したPodを特定のノードに割り当てる設定 |
||||||
type |
object |
||||||
|
tolerationsを利用したPodを特定のノードに割り当てない設定 |
||||||
type |
array |
||||||
|
Pod 内の全てのコンテナに適用される SecurityContext 設定 |
||||||
type |
object |
||||||
|
Docker Image 名 |
||||||
type |
object |
||||||
properties |
|||||||
|
Docker Repository |
||||||
type |
string |
||||||
|
image tag |
||||||
type |
string |
||||||
|
Image Pull Policy |
||||||
type |
string |
||||||
enum |
IfNotPresent, Always, Never |
||||||
default |
IfNotPresent |
||||||
|
Pod に適用する imagePullSecret のリスト |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
Docker レジストリサーバーのURL |
||||||
type |
string |
||||||
|
Docker レジストリのユーザー名 |
||||||
type |
string |
||||||
|
KMS に保存されたレジストリ認証情報のキー名 |
||||||
type |
string |
||||||
|
KMS 内のレジストリ認証情報に対応するキー名を指定 (構造体として保存している場合) |
||||||
type |
string |
||||||
|
Docker レジストリユーザーの email アドレス |
||||||
type |
string |
||||||
|
image tag の自動更新に関する設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
自動更新の有効無効フラグ |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
ユーザー設定用リポジトリに関する設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
ユーザー設定用リポジトリの GitRepository リソース名 |
||||||
type |
string |
||||||
default |
user-repo |
||||||
|
ユーザー設定用リポジトリのブランチに関する設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
更新時に参照する(checkoutしてくる)ブランチ |
||||||
type |
string |
||||||
default |
main |
||||||
|
更新対象にする(pushする)ブランチ |
||||||
type |
string |
||||||
default |
main |
||||||
|
更新対象のマニフェストが配置されているディレクトリのパス |
||||||
type |
string |
||||||
default |
./ |
||||||
|
自動更新の確認間隔 |
||||||
type |
string |
||||||
default |
5m |
||||||
|
イメージのリポジトリに関する設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
イメージの更新確認の間隔 |
||||||
type |
string |
||||||
default |
5m |
||||||
|
イメージのタグの更新ポリシー |
||||||
type |
object |
||||||
properties |
|||||||
|
タグの更新ポリシー、semver/alphabetical/numerical のいずれかを指定 |
||||||
type |
object |
||||||
properties |
|||||||
|
semver形式での指定 |
||||||
type |
object |
||||||
properties |
|||||||
|
semver形式でのタグの範囲指定 |
||||||
type |
string |
||||||
|
アルファベット順での指定 |
||||||
type |
object |
||||||
properties |
|||||||
|
昇順か降順か指定 |
||||||
type |
string |
||||||
|
数値順での指定 |
||||||
type |
object |
||||||
properties |
|||||||
|
昇順か降順か指定 |
||||||
type |
string |
||||||
|
タグのフィルタパターン |
||||||
type |
object |
||||||
properties |
|||||||
|
対象から除外するタグのリスト |
||||||
type |
array |
||||||
items |
対象から除外するタグの正規表現 |
||||||
type |
string |
||||||
|
対象に含めるタグの正規表現 |
||||||
type |
string |
||||||
|
type |
object |
|||||
properties |
|||||||
|
外部公開用ドメイン |
||||||
type |
string |
||||||
|
外部アクセス用の istio Gateway の指定。デフォルトは CNAP の作成するインターネット Gateway が設定される |
||||||
type |
string |
||||||
default |
istio-system/istio-ingress |
||||||
|
Service設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
Service とコンテナポートのマッピング設定 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
containerPort の alias |
||||||
type |
string |
||||||
|
type |
string |
|||||
enum |
TCP, UDP |
||||||
|
コンテナ側のポート |
||||||
type |
integer |
||||||
|
Service 側のポート |
||||||
type |
integer |
||||||
|
Service へのルーティング設定。空の場合はデフォルトで作成された Service にルーティングされる |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
通信プロトコル |
||||||
type |
string |
||||||
enum |
http, tcp |
||||||
|
リクエストの転送先 Service のリスト |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
Service 名。設定しない場合はデフォルトで作成された Service にルーティングされる |
||||||
type |
string |
||||||
|
特定の Label の付いた Pod に転送したい場合に対象のラベルを指定 |
||||||
type |
object |
||||||
|
複数の Service に通信を分散させたい場合にその比率を指定 |
||||||
type |
number |
||||||
|
Service の Port を指定。ServicePortが一つのみであれば省略可能 |
||||||
type |
number |
||||||
|
特定のリクエスト対してルーティングする場合の条件を設定 |
||||||
type |
array |
||||||
items |
設定パターン https://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPMatchRequest |
||||||
type |
object |
||||||
|
match で設定したパターンを上書きしてから転送する場合に設定(type: http で使用) |
||||||
type |
object |
||||||
|
Pod 内のコンテナで共有マウントするフォルダを指定 |
||||||
type |
array |
||||||
items |
共有する path を指定 (全てのコンテナに同じ path が共有される) |
||||||
type |
string |
||||||
|
ConfigMap のマッピング設定 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
データを読み込む既存のConfigmap名 |
||||||
type |
string |
||||||
|
ConfigMap 内のフィールドに指定するキー名 |
||||||
type |
string |
||||||
|
ConfigMap 内のフィールドにキー名に対応付けて格納する値(create: true の場合に必須。falseの場合には不要) |
||||||
type |
string |
||||||
|
ConfigMap を環境変数としてバインドする場合に環境変数名を指定 |
||||||
type |
string |
||||||
|
ConfigMap をファイルとしてマウントする場合にマウントするフォルダを指定。マウント先のフォルダにファイルが存在する場合全て削除される。 |
||||||
type |
string |
||||||
|
Key Management Service(KMS) と kubernetes secret のマウント設定 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
参照する kubernetes secret の情報 |
||||||
type |
object |
||||||
|
参照する KMS の情報 |
||||||
type |
object |
||||||
|
secret を環境変数としてバインドする場合に環境変数名を指定 |
||||||
type |
string |
||||||
|
secret をファイルとしてマウントする場合にマウントするフォルダを指定。マウント先のフォルダにファイルが存在する場合全て削除される。 |
||||||
type |
string |
||||||
|
Horizontal Pod Auto Scaler(HPA) 及び PodDisruptionBudget,Deployment の resources 設定 (PodDisruptionBudget は minAvailable の設定にのみ対応する。) |
||||||
type |
object |
||||||
properties |
|||||||
|
スケール方式。auto: オートスケール、manual: 手動設定 |
||||||
type |
string |
||||||
default |
manual |
||||||
|
起動時の pod 数。type: manual の場合に有効 |
||||||
type |
integer |
||||||
default |
1 |
||||||
|
Horizontal Pod Auto Scaler(HPA) 及び PodDisruptionBudget,Deployment の resources 設定 (PodDisruptionBudget は minAvailable の設定にのみ対応する。)。type: auto の場合に設定する |
||||||
type |
object |
||||||
properties |
|||||||
|
メインコンテナが使用できる CPU 利用量の上限。1000m で 1vcpu を示す。(これを越えた場合は Pod が終了する) |
||||||
type |
string |
||||||
examples |
500m |
||||||
|
メインコンテナが使用できるメモリ利用量の上限。(これを越えた場合は Pod が終了する) |
||||||
type |
string |
||||||
examples |
2Gi |
||||||
|
Horizontal Pod Auto Scaler(HPA) 及び PodDisruptionBudget,Deployment の resources 設定 (PodDisruptionBudget は minAvailable の設定にのみ対応する。)。type: auto の場合に設定する |
||||||
type |
object |
||||||
properties |
|||||||
|
メインコンテナの起動時に要求する CPU 利用量。1000m で 1vcpu を示す。(オートスケールを使用する場合は必須) |
||||||
type |
string |
||||||
examples |
100m |
||||||
|
メインコンテナの起動時に要求するメモリ利用量。(オートスケールを使用する場合は必須) |
||||||
type |
string |
||||||
examples |
250Mi |
||||||
|
Horizontal Pod Auto Scaler(HPA) 及び PodDisruptionBudget,Deployment の resources 設定 (PodDisruptionBudget は minAvailable の設定にのみ対応する。)。type: auto の場合に設定する |
||||||
type |
object |
||||||
properties |
|||||||
|
HPA の最低 Pod 数及び PodDisruptionBudget の minAvailable の設定。(0 の場合 PodDisruptionBudget は無効になる。) |
||||||
type |
integer |
||||||
|
HPA の最大 Pod 数 |
||||||
type |
integer |
||||||
|
オートスケールを実行する閾値 (request に対する利用率で指定。「%」は付けない。未指定の場合はオートスケールが無効になる。) |
||||||
type |
object |
||||||
properties |
|||||||
|
オートスケールを実行する CPU 利用量の閾値。 |
||||||
type |
integer |
||||||
|
オートスケールを実行するメモリ利用量の閾値。 |
||||||
type |
integer |
||||||
|
Progressive Delivery 設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
Progressive Delivery を有効にする場合 true |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
Bluge Green リリースを行なう場合は blueGreen, Canry リリースを行なう場合は canary を設定 |
||||||
type |
string |
||||||
enum |
blueGreen, canary |
||||||
|
Progressive デプロイメントを継続する時間(秒), タイムアウト後に切り替え |
||||||
type |
integer |
||||||
default |
600 |
||||||
|
デプロイメント job を実行する間隔(秒) |
||||||
type |
integer |
||||||
default |
120 |
||||||
|
canary リリースを行なう場合に、canary ワークロードに割り振る最大トラフィック量の比率(%) |
||||||
type |
integer |
||||||
default |
50 |
||||||
|
canary リリースを行なう場合に、canary ワークロードに割り振る最大トラフィック量の増加比率(%) |
||||||
type |
integer |
||||||
default |
10 |
||||||
|
service port に関する設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
切り替え判定に利用する port 名 |
||||||
type |
string |
||||||
default |
http |
||||||
|
エンドポイント path 情報 |
||||||
type |
object |
||||||
properties |
|||||||
|
疎通確認を行なうためのエンドポイント情報 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
エンドポイントに設定する任意の名称 |
||||||
type |
string |
||||||
|
エンドポイントの path |
||||||
type |
string |
||||||
|
負荷テストを行なうためのエンドポイント情報。(2分間隔で実行し、99% の応答成功でテストを通過します。) |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
エンドポイントに設定する任意の名称 |
||||||
type |
string |
||||||
|
エンドポイントの path |
||||||
type |
string |
||||||
|
type |
array |
|||||
items |
カスタムメトリクスを利用したテストを行なう場合の設定 (https://docs.flagger.app/usage/metrics) |
||||||
type |
object |
||||||
|
type |
array |
|||||
items |
エンドポイントアクセスへのカスタム設定 (https://docs.flagger.app/usage/webhooks) |
||||||
type |
object |
||||||
|
type |
object |
|||||
properties |
|||||||
|
type |
object |
|||||
properties |
|||||||
|
ServiceAccount 名。無指定の場合はリリース名と同名が設定される。 |
||||||
type |
string |
||||||
maxLength |
30 |
||||||
minLength |
6 |
||||||
|
ServiceAccount を新規作成する場合は True |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
ServiceAccount に適用する Annotation |
||||||
type |
null / object |
||||||
|
Google Cloud 固有の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
ワークロードからマネージドサービス API に対するアクセス権限の設定 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
付与するロール名 |
||||||
type |
string |
||||||
|
|
||||||
type |
object |
||||||
properties |
|||||||
|
権限を付与する対象のリソース種別 |
||||||
type |
string |
||||||
|
権限を付与する対象のリソース(対象を CNAP もしくは ConfigConnector で作成していない場合 External Reference Formants を基に設定する。) |
||||||
type |
string |
||||||
|
権限を付与する対象に対応するマニフェスト名(external と排他) |
||||||
type |
string |
||||||
|
権限を付与する対象に対応するマニフェストの Namespace(external と排他) |
||||||
type |
string |
||||||
|
Azure 固有の設定。 |
||||||
type |
object |
||||||
properties |
|||||||
|
type |
array |
|||||
items |
ワークロードからマネージドサービス API に対するアクセス権限の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
付与するロール |
||||||
type |
string |
||||||
|
assignName |
||||||
type |
string |
||||||
|
|
||||||
type |
boolean |
||||||
default |
False |
||||||
|
Azure 認証タイプの設定。wlid: Workload Identity, aad: AAD Pod Binding |
||||||
type |
string |
||||||
default |
wlid |
||||||
|
Azure Managed IDを所属させるリソースグループの設定。通常はデフォルト設定(Namespace名)が適用されるため、指定する必要は無い。 |
||||||
type |
object |
||||||
properties |
|||||||
|
リソースグループ名 |
||||||
type |
string |
||||||
default |
|||||||
|
AWS 固有の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
付与するポリシー名リスト |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
付与するポリシー名 |
||||||
type |
string |
||||||
|
付与するポリシーがカスタマ管理の IAM ポリシーの場合true、AWS 管理の IAM ポリシーの場合falseを設定 |
||||||
type |
boolean |
||||||
default |
False |
||||||
|
作成または連携するカスタマーポリシーの指定 serviceAccount.create: trueの場合に必須 |
||||||
type |
object |
||||||
properties |
|||||||
|
カスタマー管理ポリシーの名前 |
||||||
type |
string |
||||||
|
カスタマー管理ポリシーを作成する場合は true、既存のカスタマー管理ポリシーをロールに付与するのみの場合は false を指定。 |
||||||
type |
boolean |
||||||
|
マニフェスト削除時にリソースを保持 (create:trueの場合のみ必須) |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
許可するアクションを定義 |
||||||
type |
string |
||||||
|
arn:aws:{serviceName}:ap-northeast-1:accountId:{resourceType}:{Id} (create:trueの場合のみ必須) |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
サービス名 |
||||||
type |
string |
||||||
|
アクセスを制限するリソースのタイプ |
||||||
type |
string |
||||||
|
リクエスト条件を指定 |
||||||
type |
string |
||||||
|
ワークロードからマネージド RDBMS に対するアクセス設定 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
メインコンテナの起動を DB インスタンスが起動するまで待つ場合に指定する。 |
||||||
type |
object |
||||||
properties |
|||||||
|
DB インスタンスホストの IP アドレス(Google の場合は常に 172.0.0.1)。 |
||||||
type |
string |
||||||
|
データベースアクセス先ポート |
||||||
type |
integer |
||||||
|
RDBMS の種類 |
||||||
type |
string |
||||||
enum |
mysql, postgres |
||||||
|
DB の起動待ちタイムアウト |
||||||
type |
number |
||||||
|
メインコンテナの起動を DB インスタンスが起動するまで待つ場合に指定する。 |
||||||
type |
object |
||||||
properties |
|||||||
|
接続先データベースインスタンス |
||||||
type |
string |
||||||
|
接続先データベースのポート番号 |
||||||
type |
integer |
||||||
|
インスタンス配置先ロケーション |
||||||
type |
string |
||||||
|
監視設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
Prometheusへのメトリクス収集の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
Cadvisor からのメトリクス収集を有効にする場合 true を設定(Deprecated) |
||||||
type |
boolean |
||||||
default |
True |
||||||
|
ServiceMonitor の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
type |
array |
|||||
items |
type |
object |
|||||
#/$defs/endpointsItem/properties |
|||||||
|
PodMonitor の設定 |
||||||
type |
object |
||||||
properties |
|||||||
|
type |
array |
|||||
items |
type |
object |
|||||
#/$defs/endpointsItem/properties |
|||||||
|
参照する SecretStore の指定 |
||||||
type |
object |
||||||
properties |
|||||||
|
SecretStore の名前 |
||||||
type |
string |
||||||
default |
default |
||||||
|
SecretStore の種類 |
||||||
type |
string |
||||||
enum |
SecretStore, ClusterSecretStore |
||||||
default |
ClusterSecretStore |
||||||
|
メインコンテナの起動前に処理を実行するコンテナを登録する。 |
||||||
type |
array |
||||||
items |
type |
object |
|||||
properties |
|||||||
|
識別用の任意のコンテナ名 |
||||||
type |
string / null |
||||||
|
Docker Image 名 |
||||||
type |
object |
||||||
properties |
|||||||
|
Docker Repository |
||||||
type |
string |
||||||
|
image tag |
||||||
type |
string |
||||||
|
Image Pull Policy |
||||||
type |
string |
||||||
enum |
IfNotPresent, Always, Never |
||||||
|
コンテナ内の作業フォルダを指定 |
||||||
type |
string / null |
||||||
|
コンテナ起動時にエントリポイントに指定されたコマンンドに渡す引数リスト |
||||||
type |
null / array |
||||||
items |
コンテナ起動時にエントリポイントに指定されたコマンンドに渡す引数 |
||||||
type |
string |
||||||
|
コンテナ起動時のコマンド設定 |
||||||
type |
null / array |
||||||
items |
スペースをリストに変換して設定 |
||||||
type |
string |
||||||
|
コンテナに適用される SecurityContext 設定 |
||||||
type |
object / null |
||||||
|
コンテナにマウントする volume の設定 |
||||||
type |
array / null |
||||||
items |
type |
object |
|||||
|
コスト按分用の文字列を指定 |
||||||
type |
string |
||||||
|
明示的にDeploymentリソース名を指定 |
||||||
type |
string |
||||||
|
明示的にfull nameを指定 |
||||||
type |
string |
||||||
$defs |
|||||||
|
type |
object |
|||||
properties |
|||||||
|
参照するエンドポイントのパス |
||||||
type |
string |
||||||
|
参照するポート名 |
||||||
type |
string |
||||||
|
メトリクスの変換及びフィルタ設定 |
||||||
type |
object |
Example¶
Example1. Kanboard作成¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: kanboard
namespace: staging
spec:
chart:
name: basic-deployment
version: <latest>
settings:
image:
repository: kanboard/kanboard
pullPolicy: IfNotPresent
tag: "latest"
network:
domain: kanboard.<customer domain>
service:
ports:
- name: kanboard
containerPort: 80
servicePort: 80
Example2. Blue-Green Deployment¶
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: podinfo
namespace: staging
spec:
chart:
name: basic-deployment
version: <latest>
settings:
image:
repository: ghcr.io/stefanprodan/podinfo
pullPolicy: IfNotPresent
tag: "5.2.0"
command:
- ./podinfo
- --port=9898
- --port-metrics=9797
- --grpc-port=9999
- --grpc-service-name=podinfo
- --level=info
- --random-delay=false
- --random-error=false
network:
domain: podinfo.<customer domain>
service:
ports:
- name: http
containerPort: 9898
servicePort: 80
protocol: TCP
progressiveDelivery:
enabled: true
strategy: blueGreen
endpoints:
accessTests:
- name: smoke
path: /
loadTests:
- name: load
path: /
scaling:
scalingType: auto
replicaCount: 1
limits:
cpu: 512m
memory: 512Mi
requests:
cpu: 128m
memory: 128Mi
autoscaling:
minReplicas: 1
maxReplicas: 100
targetAverageUtilization:
cpu: 80
memory: 80
Change Log¶
1.3.6¶
Released on 2025-08-07
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.3.5¶
Released on 2025-06-04
What's Changed
- パスルーティング(network.routes)設定時に、portを指定した場合のエラーを解消しました
- ドキュメントの values.yaml 設定例を修正しました
1.3.4¶
Released on 2025-05-15
What's Changed
パッケージ内で利用しているライブラリの更新を行いました。
1.3.3¶
Released on 2025-04-23
What's Changed
- workload identity が有効にならない場合がある問題を修正