KubernetesManifest@0 - Kubernetes v0 タスクにデプロイする
ビルドまたはリリース パイプラインで Kubernetes マニフェスト タスクを使用して、Helm チャートを使用してマニフェストをベイクして Kubernetes クラスターにデプロイします。
構文
# Deploy to Kubernetes v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
inputs:
#action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
#kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection.
#namespace: # string. Namespace.
#strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
#trafficSplitMethod: 'pod' # 'pod' | 'smi'. Optional. Use when strategy = canary. Traffic split method. Default: pod.
#percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
#baselineAndCanaryReplicas: '1' # string. Required when strategy = Canary && action = deploy && trafficSplitMethod = SMI. Baseline and canary replicas. Default: 1.
#manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests.
#containers: # string. Optional. Use when action = deploy || action = promote || action = bake. Containers.
#imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets.
#renderType: 'helm' # 'helm' | 'kompose' | 'kustomize'. Optional. Use when action = bake. Render Engine. Default: helm.
#dockerComposeFile: # string. Required when action = bake && renderType = kompose. Path to docker compose file.
#helmChart: # string. Required when action = bake && renderType = helm. Helm Chart.
#releaseName: # string. Optional. Use when action = bake && renderType = helm. Helm Release Name.
#overrideFiles: # string. Optional. Use when action = bake && renderType = helm. Override Files.
#overrides: # string. Optional. Use when action = bake && renderType = helm. Overrides.
#kustomizationPath: # string. Optional. Use when action = bake && renderType = kustomize. Kustomization Path.
#resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
#resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path.
#kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind.
#name: # string. Required when action = scale || resourceToPatch = name. Name.
#replicas: # string. Required when action = scale. Replica count.
#mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
#arguments: # string. Optional. Use when action = delete. Arguments.
#patch: # string. Required when action = patch. Patch.
#secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
#secretName: # string. Optional. Use when action = createSecret. Secret name.
#secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments.
#dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.
#rolloutStatusTimeout: '0' # string. Optional. Use when action = deploy || action = patch || action = scale || action = promote. Timeout for rollout status. Default: 0.
# Deploy Kubernetes manifests v0
# Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts.
- task: KubernetesManifest@0
inputs:
#action: 'deploy' # 'bake' | 'createSecret' | 'delete' | 'deploy' | 'patch' | 'promote' | 'scale' | 'reject'. Action. Default: deploy.
#kubernetesServiceConnection: # string. Required when action != bake. Kubernetes service connection.
#namespace: 'default' # string. Required when action != bake. Namespace. Default: default.
#strategy: 'none' # 'canary' | 'none'. Optional. Use when action = deploy || action = promote || action = reject. Strategy. Default: none.
#percentage: '0' # string. Required when strategy = Canary && action = deploy. Percentage. Default: 0.
#manifests: # string. Required when action = deploy || action = promote || action = reject. Manifests.
#containers: # string. Optional. Use when action = deploy || action = promote. Containers.
#imagePullSecrets: # string. Optional. Use when action = deploy || action = promote. ImagePullSecrets.
#renderType: 'helm2' # 'helm2'. Optional. Use when action = bake. Render Engine. Default: helm2.
#helmChart: # string. Required when action = bake && renderType = helm2. Helm Chart.
#releaseName: # string. Optional. Use when action = bake && renderType = helm2. Helm Release Name.
#overrideFiles: # string. Optional. Use when action = bake && renderType = helm2. Override Files.
#overrides: # string. Optional. Use when action = bake && renderType = helm2. Overrides.
#resourceToPatch: 'file' # 'file' | 'name'. Required when action = patch. Resource to patch. Default: file.
#resourceFileToPatch: # string. Required when action = patch && resourceToPatch = file. File path.
#kind: # 'deployment' | 'replicaset' | 'statefulset'. Required when action = scale || resourceToPatch = name. Kind.
#name: # string. Required when action = scale || resourceToPatch = name. Name.
#replicas: # string. Required when action = scale. Replica count.
#mergeStrategy: 'strategic' # 'json' | 'merge' | 'strategic'. Required when action = patch. Merge Strategy. Default: strategic.
#arguments: # string. Optional. Use when action = delete. Arguments.
#patch: # string. Required when action = patch. Patch.
#secretType: 'dockerRegistry' # 'dockerRegistry' | 'generic'. Required when action = createSecret. Type of secret. Default: dockerRegistry.
#secretName: # string. Optional. Use when action = createSecret. Secret name.
#secretArguments: # string. Optional. Use when action = createSecret && secretType = generic. Arguments.
#dockerRegistryEndpoint: # string. Optional. Use when action = createSecret && secretType = dockerRegistry. Docker registry service connection.
入力
action
- アクション
string
. 使用できる値: bake
、(シークレットの作成)delete
、、、deploy
、patch
、promote
、、 scale
reject
。 createSecret
既定値: deploy
。
実行する操作を指定します。
kubernetesServiceConnection
- Kubernetes サービス接続
string
. action != bake
の場合に必要です。
Kubernetes サービス接続を指定します。
namespace
- 名前 空間
string
.
フラグを使用してコマンドの名前空間を –namespace
指定します。 名前空間が指定されていない場合、コマンドは既定の名前空間で実行されます。
namespace
- 名前 空間
string
. action != bake
の場合に必要です。 既定値: default
。
フラグを使用してコマンドの名前空間を –namespace
指定します。 名前空間が指定されていない場合、コマンドは既定の名前空間で実行されます。
strategy
- 戦略
string
. 任意。 の場合は action = deploy || action = promote || action = reject
を使用します。 使用できる値: canary
、none
。 既定値: none
。
アクションまたはreject
アクションの前にアクションでdeploy
使用されるデプロイ戦略をpromote
指定します。 現時点では、 canary
のみが許容されるデプロイ戦略です。
trafficSplitMethod
- トラフィック分割方法
string
. 任意。 の場合は strategy = canary
を使用します。 使用できる値: pod
、smi
。 既定値: pod
。
値 smi
の場合、割合トラフィック分割は、サービス メッシュを使用して要求レベルで実行されます。 サービス メッシュは、クラスター管理者によって設定する必要があります。このタスクは、SMI TrafficSplit オブジェクトのオーケストレーションを処理します。
値 pod
の場合、サービス メッシュがない場合、要求レベルではパーセント分割を実行できません。 代わりに、パーセンテージ入力を使用して、ベースラインとカナリアのレプリカを計算します。 計算は、安定したバリアントの入力マニフェストで指定されたレプリカの割合です。
percentage
- 割合
string
. strategy = Canary && action = deploy
の場合に必要です。 既定値: 0
。
マニフェスト ファイルに含まれるワークロードのベースラインバリアントレプリカとカナリアバリアントレプリカの数を計算するために使用される割合。
指定したパーセンテージ入力の場合は、次の値を計算します。
(レプリカ数×割合) / 100
結果が整数でない場合は、ベースラインバリアントとカナリアバリアントが作成されるときに、結果の数学的フロアが使用されます。
たとえば、配置 hello-world
が入力マニフェスト ファイル内にあり、タスク入力に次の行があるとします。
replicas: 4
strategy: canary
percentage: 25
この場合、デプロイ hello-world-baseline
と hello-world-canary
はそれぞれ 1 つのレプリカで作成されます。 ベースライン バリアントは、デプロイ前の 4 レプリカバリアントである安定バージョンと同じイメージとタグを使用して作成されます。 カナリアバリアントは、新しくデプロイされた変更に対応するイメージとタグを使用して作成されます。
baselineAndCanaryReplicas
- ベースライン レプリカとカナリア レプリカ
string
. strategy = Canary && action = deploy && trafficSplitMethod = SMI
の場合に必要です。 既定値: 1
。
を にsmi
設定trafficSplitMethod
すると、トラフィック分割の割合がサービス メッシュ プレーンで制御されます。 カナリアバリアントとベースラインバリアントのレプリカの実際の数は、トラフィックの分割とは別に制御できます。
たとえば、入力配置マニフェストで、安定したバリアントに対して 30 個のレプリカが指定されているとします。 また、タスクに対して次の入力を指定するとします。
strategy: canary
trafficSplitMethod: smi
percentage: 20
baselineAndCanaryReplicas: 1
この場合、安定バリアントはトラフィックの 80% を受信し、ベースラインバリアントとカナリアバリアントはそれぞれ指定された 20% の半分を受信します。 ベースラインバリアントとカナリアバリアントはそれぞれ 3 つのレプリカを受け取りません。 代わりに、指定した数のレプリカを受け取ります。つまり、それぞれが 1 つのレプリカを受信します。
manifests
- マニフェスト
string
. action = deploy || action = promote || action = reject
の場合に必要です。
配置に使用するマニフェスト ファイルへのパスを指定します。 各行は 1 つのパスを表します。 ファイル一致パターンは、各行に許容される値です。
containers
- コンテナー
string
. 任意。 の場合は action = deploy || action = promote || action = bake
を使用します。
マニフェスト ファイルの置換に使用するイメージの完全修飾リソース URL を指定します。 URL contosodemo.azurecr.io/helloworld:test
は例です。
containers
- コンテナー
string
. 任意。 の場合は action = deploy || action = promote
を使用します。
マニフェスト ファイルの置換に使用するイメージの完全修飾 URL を指定します。 この入力は、改行で区切られた形式で複数の成果物の置換の指定を受け入れます。 次に例を示します。
containers: |
contosodemo.azurecr.io/foo:test1
contosodemo.azurecr.io/bar:test2
この例では、入力マニフェスト ファイルのイメージ フィールドで、 と contosodemo.azurecr.io/bar
へのcontosodemo.azurecr.io/foo
すべての参照が検索されます。 検出された一致ごとに、 タグ test1
または test2
一致した参照が置き換えられます。
imagePullSecrets
- ImagePullSecrets
string
. 省略可能。 の場合は action = deploy || action = promote
を使用します。
各行に、クラスター内で既に設定されている Docker レジストリ シークレットの名前が含まれる複数行の入力を指定します。 各シークレット名は、入力マニフェスト ファイル内にあるワークロードの 下 imagePullSecrets
に追加されます。
renderType
- レンダリング エンジン
string
. 任意。 の場合は action = bake
を使用します。 許可値: helm
、kompose
、kustomize
。 既定値: helm
。
マニフェスト ファイルの生成に使用するレンダリングの種類を指定します。
renderType
- レンダリング エンジン
string
. 任意。 の場合は action = bake
を使用します。 使用できる値: helm2
(Helm 2)。 既定値: helm2
。
マニフェスト ファイルの生成に使用するレンダリングの種類を指定します。
dockerComposeFile
- docker compose ファイルへのパス
string
. action = bake && renderType = kompose
の場合に必要です。
docker-compose ファイル パスを指定します。
helmChart
- Helm Chart
string
. action = bake && renderType = helm
の場合に必要です。
ベイクする Helm グラフのパスを指定します。
helmChart
- Helm Chart
string
. action = bake && renderType = helm2
の場合に必要です。
ベイクする Helm グラフ パスを指定します。
releaseName
- Helm リリース名
string
. 省略可能。 の場合は action = bake && renderType = helm
を使用します。
使用する Helm リリース名を指定します。
releaseName
- Helm リリース名
string
. 省略可能。 の場合は action = bake && renderType = helm2
を使用します。
使用する Helm リリース名を指定します。
overrideFiles
- ファイルをオーバーライドする
string
. 省略可能。 の場合は action = bake && renderType = helm
を使用します。
オーバーライド ファイルへのパスを受け入れる複数行入力を指定します。 ファイルは、Helm チャートのマニフェスト ファイルがベイクされるときに使用されます。
overrideFiles
- ファイルをオーバーライドする
string
. 省略可能。 の場合は action = bake && renderType = helm2
を使用します。
オーバーライド ファイルへのパスを受け入れる複数行入力を指定します。 ファイルは、Helm チャートのマニフェスト ファイルがベイクされるときに使用されます。
overrides
- オーバーライド
string
. 任意。 の場合は action = bake && renderType = helm
を使用します。
設定するオーバーライド値を指定します。
overrides
- オーバーライド
string
. 任意。 の場合は action = bake && renderType = helm2
を使用します。
Helm を使用するマニフェスト ファイルをベイク処理するときに、コマンド ライン スイッチ --set
を介して使用される追加のオーバーライド値を指定します。
の形式key:value
で、オーバーライド値をペアとしてkey-value
指定します。 複数のオーバーライド ペアを使用する場合は、各key-value
ペアをkey-value
個別の行で指定します。 異なる key-value
ペア間の区切り記号として改行文字を使用します。
kustomizationPath
- Kustomization パス
string
. 省略可能。 の場合は action = bake && renderType = kustomize
を使用します。
ファイルを含むディレクトリへのパス、またはリポジトリ ルートに対して を指定するパス サフィックスを持つ git リポジトリ URL である必要がある引数を指定 same
します。
resourceToPatch
- パッチを適用するリソース
string
. action = patch
の場合に必要です。 使用できる値: file
、name
。 既定値: file
。
次のいずれかのパッチ方法を示します。
- マニフェスト ファイルは、修正プログラムを適用するオブジェクトを識別します。
- 個々のオブジェクトは、種類と名前によってパッチ ターゲットとして識別されます。
許容される値は 、ファイル と 名前です。
resourceFileToPatch
- ファイル パス
string
. action = patch && resourceToPatch = file
の場合に必要です。
パッチに使用するファイルへのパスを指定します。
kind
- 種類
string
. action = scale || resourceToPatch = name
の場合に必要です。 許可値: deployment
、replicaset
、statefulset
。
などdeployment
replicaSet
、K8s オブジェクトの種類を指定します。
name
- 名前
string
. action = scale || resourceToPatch = name
の場合に必要です。
K8s オブジェクトの名前を指定します。
replicas
- レプリカ数
string
. action = scale
の場合に必要です。
スケーリングするレプリカの数を指定します。
mergeStrategy
- マージ戦略
string
. action = patch
の場合に必要です。 許可値: json
、merge
、strategic
。 既定値: strategic
。
指定するパッチの種類を指定します。
arguments
- 引数
string
. 省略可能。 の場合は action = delete
を使用します。
コマンドの引数を kubectl delete
指定します。 例を次に示します。 arguments: deployment hello-world foo-bar
patch
- パッチ
string
. action = patch
の場合に必要です。
パッチの内容を指定します。
secretType
- シークレットの種類
string
. action = createSecret
の場合に必要です。 使用できる値: dockerRegistry
、generic
。 既定値: dockerRegistry
。
ジェネリック または docker を作成または更新します imagepullsecret
。 を指定 dockerRegistry
して、選択したレジストリの を imagepullsecret
作成または更新します。 imagePullSecret
は、コンテナー レジストリ パスワードを含むシークレットを Kubelet に渡して、ポッドの代わりにプライベート イメージをプルできるようにする方法です。
secretName
- シークレット名
string
. 省略可能。 の場合は action = createSecret
を使用します。
シークレットの名前を指定します。 このシークレット名は、Kubernetes YAML 構成ファイルで使用できます。
secretArguments
- 引数
string
. 省略可能。 の場合は action = createSecret && secretType = generic
を使用します。
シークレットに挿入するキーとリテラル値を指定します。 たとえば、 などです --from-literal=key1=value1
--from-literal=key2="top secret"
。
dockerRegistryEndpoint
- Docker レジストリ サービス接続
string
. 任意。 の場合は action = createSecret && secretType = dockerRegistry
を使用します。
クラスター内に Docker レジストリ シークレットを作成するために使用される、指定されたサービス接続の資格情報を指定します。 フィールドの下にある imagePullSecrets
マニフェスト ファイルは、このシークレットの名前を参照できます。
rolloutStatusTimeout
- ロールアウトの状態のタイムアウト
string
. 省略可能。 の場合は action = deploy || action = patch || action = scale || action = promote
を使用します。 既定値: 0
。
終了 watch on rollout
状態になるまで待機する時間 (秒単位) を指定します。
タスク コントロール のオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。
出力変数
このタスクでは、ダウンストリームのステップ、ジョブ、およびステージで使用できる次の 出力変数を定義します。
manifestsBundle
ベイク アクションによって作成されるマニフェスト バンドルの場所を指定します。
解説
Note
このタスクには、 プロパティを使用して、さまざまな方法で Kubernetes クラスターをターゲットにするための追加のサポートを提供する新しいバージョンがあります connectionType
。 詳細については、「KubernetesManifest@1とKubernetesManifest@1サービス接続に関する解説」を参照してください。
ビルドまたはリリース パイプラインで Kubernetes マニフェスト タスクを使用して、マニフェストをベイクして Kubernetes クラスターにデプロイします。
このタスクでは、次の機能がサポートされています。
成果物の置換: デプロイ アクションは、タグとダイジェストと共に指定できるコンテナー イメージの一覧を入力として受け取ります。 クラスターにアプリケーションを適用する前に、同じ入力が非一時マニフェスト ファイルに置き換えられます。 この置換により、クラスター ノードがイメージの適切なバージョンを確実にプルできます。
マニフェストの安定性: デプロイされた Kubernetes オブジェクトのロールアウトの状態がチェックされます。 安定性チェックは、タスクの状態が成功か失敗かを判断するために組み込まれます。
追跡可能性の注釈: 注釈は、追跡可能性情報を重ね合わせるために、デプロイされた Kubernetes オブジェクトに追加されます。 次の注釈がサポートされています。
- azure-pipelines/org
- azure-pipelines/project
- azure-pipelines/pipeline
- azure-pipelines/pipelineId
- azure-pipelines/execution
- azure-pipelines/executionuri
- azure-pipelines/jobName
シークレットの処理: アクション
createSecret
を使用すると、Docker レジストリ サービス接続を使用して Docker レジストリ シークレットを作成できます。 また、プレーンテキスト変数またはシークレット変数を使用して汎用シークレットを作成することもできます。 クラスターにデプロイする前に、 アクションと共に入力をsecrets
deploy
使用して、入力マニフェスト ファイルを適切なimagePullSecrets
値で拡張できます。マニフェストのベイク:
bake
タスクのアクションを使用すると、テンプレートを Kubernetes マニフェスト ファイルにベイクできます。 アクションでは、Helm、Compose、Kustomize などのツールが使用されます。 ベイク処理では、これらの Kubernetes マニフェスト ファイルはクラスターへのデプロイに使用できます。デプロイ戦略: アクションを
canary
使用して戦略をdeploy
選択すると、 と-canary
のサフィックスが付いたワークロード名が作成されます-baseline
。 このタスクでは、次の 2 つのトラフィック分割方法がサポートされています。サービス メッシュ インターフェイス: Service Mesh Interface (SMI) の抽象化により、 や
Istio
などのLinkerd
サービス メッシュ プロバイダーを使用した構成が可能になります。 Kubernetes マニフェスト タスクは、デプロイ戦略のライフ サイクル中に、SMITrafficSplit
オブジェクトを安定した、ベースライン、およびカナリア サービスにマップします。サービス メッシュに基づいてこのタスクを使用するカナリア デプロイの方が正確です。 この精度は、サービス メッシュ プロバイダーがトラフィックの細かい割合ベースの分割を可能にする方法が原因です。 サービス メッシュは、ポッドに挿入されるサービス レジストリとサイドカー コンテナーを使用します。 このインジェクションは、細かいトラフィック分割を実現するために、アプリケーション コンテナーと共に発生します。
サービス メッシュのない Kubernetes: サービス メッシュがない場合は、要求レベルで必要な正確な割合の分割が得られない場合があります。 ただし、安定したバリアントの横にあるベースラインバリアントとカナリアバリアントを使用してカナリアデプロイを行うことができます。
セレクター ラベルの制約が満たされると、サービスは 3 つのワークロードバリアントのポッドに要求を送信します。 Kubernetes マニフェストは、ベースラインバリアントとカナリアバリアントを作成するときに、これらの要求を受け入れます。 このルーティング動作により、要求の合計の一部のみをカナリアにルーティングする意図した効果が実現されます。
リリース パイプラインの 手動介入タスク または YAML パイプラインの 遅延 タスクを使用して、ベースラインワークロードとカナリアワークロードを比較します。 タスクの昇格または拒否アクションを使用する前に、比較を行います。
デプロイ アクション
次の YAML コードは、マニフェスト ファイルを使用して Kubernetes 名前空間にデプロイする例です。
steps:
- task: KubernetesManifest@0
displayName: Deploy
inputs:
kubernetesServiceConnection: someK8sSC1
namespace: default
manifests: |
manifests/deployment.yml
manifests/service.yml
containers: |
foo/demo:$(tagVariable1)
bar/demo:$(tagVariable2)
imagePullSecrets: |
some-secret
some-other-secret
上記の例では、タスクはマニフェスト ファイルのイメージ フィールドとbar/demo
イメージ foo/demo
フィールドの一致を検索しようとします。 検出された一致ごとに、 または tagVariable2
のtagVariable1
値がイメージ名にタグとして追加されます。 成果物の置換のためにコンテナー入力でダイジェストを指定することもできます。
Note
デプロイ戦略に関連する YAML 入力を使用して 、promote
、および reject
アクションを作成deploy
できますが、現在、ビルド パイプラインでは手動介入タスクのサポートは使用できません。
リリース パイプラインの場合は、デプロイ戦略に関連するアクションと入力を次の順序で使用することをお勧めします。
- と
percentage: $(someValue)
でstrategy: canary
指定されたデプロイ アクション。 - パイプラインを一時停止し、ベースラインバリアントをカナリアバリアントと比較できるようにする手動介入タスク。
- 手動介入タスクが再開された場合に実行される昇格アクションと、手動介入タスクが拒否された場合に実行される拒否アクション。
シークレット アクションを作成する
次の YAML コードは、 Docker レジストリ サービス接続を使用した Docker レジストリ シークレットの作成例を示しています。
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: dockerRegistry
secretName: foobar
dockerRegistryEndpoint: demoACR
kubernetesServiceConnection: someK8sSC
namespace: default
この YAML コードは、ジェネリック シークレットの作成例を示しています。
steps:
- task: KubernetesManifest@0
displayName: Create secret
inputs:
action: createSecret
secretType: generic
secretName: some-secret
secretArguments: --from-literal=key1=value1
kubernetesServiceConnection: someK8sSC
namespace: default
ベイク アクション
次の YAML コードは、Helm チャートからマニフェスト ファイルをベイクする例です。 最初のタスクでの名前入力の使用法に注意してください。 この名前は、ベイク ステップによって生成されたマニフェストへのパスを指定するために、デプロイ ステップから後で参照されます。
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from Helm chart
inputs:
action: bake
helmChart: charts/sample
overrides: 'image.repository:nginx'
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: someK8sSC
namespace: default
manifests: $(bake.manifestsBundle)
containers: |
nginx: 1.7.9
Note
Helm を直接使用してリリースとロールバックを管理するには、「 Helm チャートのパッケージ化とデプロイ」タスクを参照してください。
Kustomize の例
次の YAML コードは、ファイルを含む Kustomize で生成されたマニフェスト ファイルをベイクする例です kustomization.yaml
。
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from kustomization path
inputs:
action: bake
renderType: kustomize
kustomizationPath: folderContainingKustomizationFile
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: k8sSC1
manifests: $(bake.manifestsBundle)
Kompose の例
次の YAML コードは、Docker Compose の変換ツールである Kompose で生成されたマニフェスト ファイルをベイクする例です。
steps:
- task: KubernetesManifest@0
name: bake
displayName: Bake K8s manifests from Docker Compose
inputs:
action: bake
renderType: kompose
dockerComposeFile: docker-compose.yaml
- task: KubernetesManifest@0
displayName: Deploy K8s manifests
inputs:
kubernetesServiceConnection: k8sSC1
manifests: $(bake.manifestsBundle)
スケール アクション
次の YAML コードは、オブジェクトのスケーリングの例を示しています。
steps:
- task: KubernetesManifest@0
displayName: Scale
inputs:
action: scale
kind: deployment
name: bootcamp-demo
replicas: 5
kubernetesServiceConnection: someK8sSC
namespace: default
パッチ アクション
次の YAML コードは、オブジェクトの修正プログラムの適用例を示しています。
steps:
- task: KubernetesManifest@0
displayName: Patch
inputs:
action: patch
kind: pod
name: demo-5fbc4d6cd9-pgxn4
mergeStrategy: strategic
patch: '{"spec":{"containers":[{"name":"demo","image":"foobar/demo:2239"}]}}'
kubernetesServiceConnection: someK8sSC
namespace: default
[アクションの削除]
この YAML コードは、サンプル オブジェクトの削除を示しています。
steps:
- task: KubernetesManifest@0
displayName: Delete
inputs:
action: delete
arguments: deployment expressapp
kubernetesServiceConnection: someK8sSC
namespace: default
トラブルシューティング
Kubernetes クラスターはファイアウォールの内側にあり、ホステッド エージェントを使用しています。 このクラスターにデプロイするにはどうすればよいですか?
ホステッド エージェントに対する IP アドレスを許可することにより、ファイアウォール経由のホステッド エージェントへのアクセスを許可できます。 詳細については、エージェントの IP 範囲に関する記事を参照してください。
カナリア デプロイを使用した安定したサービス ルートとバリアント型のサービス ルートに対する要求はどのように機能しますか?
Kubernetes のポッドとサービス間のラベル セレクター関係を使用すると、1 つのサービスが安定したバリアントとカナリア バリアントの両方に要求をルーティングするようにデプロイを設定できます。 Kubernetes マニフェスト タスクでは、カナリア デプロイのためにこれを使用します。
タスクに、入力マニフェスト ファイルで定義されているワークロード (Deployment、ReplicaSet、Pod、...) ごとに と の入力action: deploy
strategy: canary
が含まれている場合は、-baseline
デプロイの および -canary
バリアントが作成されます。 この例では、入力マニフェスト ファイルにデプロイ sampleapp
があり、パイプラインの実行番号 22 が完了すると、 という名前 sampleapp
のこのデプロイの安定したバリアントがクラスターにデプロイされます。 以降の実行 (この場合は実行番号 23) では、 と を使用action: deploy
strategy: canary
する Kubernetes マニフェスト タスクにより、sampleapp-baseline および sampleapp-canary デプロイが作成されます。このデプロイでは、レプリカの数は、タスク入力のpercentage
積によって決定され、入力マニフェスト ファイルに従って、最終的な安定したバリアントsampleapp
のレプリカの必要な数の値が指定されます。
レプリカの数を除くと、ベースライン バージョンの構成は安定したバリアントと同じですが、カナリア バージョンには、現在の実行によって導入されている新しい変更があります (この場合は、実行番号 23)。 上記の手順の後にパイプラインに手動介入を設定すると、パイプライン管理者がベースラインとカナリア バージョンの主要なメトリックを評価し、カナリアの変更が安全で完全なロールアウトに十分かどうかを判断できるように、パイプラインを一時停止できます。
action: promote
strategy: canary
Kubernetes マニフェスト タスクの および および action: reject
strategy: canary
の入力を使用して、カナリアの変更を昇格または拒否できます。 どちらの場合も、この手順の最後に、入力マニフェスト ファイルで宣言されたワークロードの安定したバリアントのみがクラスターにデプロイされたままになり、エフェメラル ベースラインとカナリア バージョンはクリーンアップされることに注意してください。
要件
要件 | 説明 |
---|---|
パイプラインの種類 | YAML、クラシック ビルド、クラシック リリース |
実行日 | エージェント、DeploymentGroup |
確認要求 | なし |
Capabilities | このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。 |
コマンドの制限 | Any |
設定可能な変数 | Any |
エージェントのバージョン | サポートされているすべてのエージェント バージョン。 |
タスクのカテゴリ | 配置 |