Kubectl タスク

Azure Pipelines

このタスクを使用して、kubectl コマンドを実行して Kubernetes クラスターをデプロイ、構成、または更新します。

サービス接続

このタスクは、次の 2 つのサービス接続の種類 (Azure Resource Manager と Kubernetes Service Connection ) で動作します。

Azure Resource Manager

パラメーター説明
connectionType
サービス接続の種類
(必須) Azure Resource Manager クラスターに対して Azure Kubernetes Service または Kubernetes Service Connection を使用する場合に使用します。
既定値: Azure Resource Manager
azureSubscriptionEndpoint
Azure サブスクリプション
(必須)Azure サービス接続の名前。
azureResourceGroup
Resource group
(必須)サブスクリプション内のリソース グループの名前。
kubernetesCluster
Kubernetes クラスター
(必須)AKS クラスターの名前。
useClusterAdmin
クラスター管理者の資格情報を使用する
(省略可能)既定のクラスター ユーザー資格情報ではなく、クラスター管理者の資格情報を使用します。 これにより、ロールベースのアクセス制御は無視されます。
namespace
名前空間
(省略可能)kubectl コマンドを実行する名前空間。 指定しない場合は、既定の名前空間が使用されます。

この YAML の例では、kubernetes Azure Resource Managerを参照する方法を示します。 これは、kubectl コマンドの 1つ、およびコマンドで必要な適切な値と一緒に使用します。

variables:
  azureSubscriptionEndpoint: Contoso
  azureContainerRegistry: contoso.azurecr.io
  azureResourceGroup: Contoso
  kubernetesCluster: Contoso
  useClusterAdmin: false

steps:
- task: Kubernetes@1
  displayName: kubectl apply
  inputs:
    connectionType: Azure Resource Manager
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    useClusterAdmin: $(useClusterAdmin)

Kubernetes サービス接続

パラメーター説明
kubernetesServiceEndpoint
Kubernetes サービス接続
(必須)Kubernetes サービス接続を選択します。
namespace
名前空間
(省略可能)kubectl コマンドを実行する名前空間。 指定しない場合は、既定の名前空間が使用されます。

この YAML の例は、Kubernetes クラスターを参照するために Kubernetes サービス接続を使用する方法を示しています。 これは、kubectl コマンドの 1つ、およびコマンドで必要な適切な値と一緒に使用します。

- task: Kubernetes@1
  displayName: kubectl apply
  inputs:
    connectionType: Kubernetes Service Connection
    kubernetesServiceEndpoint: Contoso

コマンド

コマンド入力は、次のいずれかの kubectl コマンドを受け入れる必要があります

適用作成、削除**、実行**、公開取得ログインログアウトログ実行設定または上位の

パラメーター説明
command
コマンド
(必須)ファイル名または stdin でリソースに構成を適用します。
既定値: 適用
useConfigurationFile
構成ファイルを使用する
(省略可能)kubectl コマンドで Kubernetes 構成ファイルを使用します。 Kubernetes 構成ファイルのファイル名、ディレクトリ、または URL を入力します。
既定値: false
arguments
引数
(省略可能)指定した kubectl コマンドの引数。

この YAML の例では、apply コマンドを します。

- task: Kubernetes@1
  displayName: kubectl apply using arguments
  inputs:
    connectionType: Azure Resource Manager
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: apply
    arguments: -f mhc-aks.yaml

この YAML の例では、apply コマンドで構成ファイルを使用する方法 を示 します。

- task: Kubernetes@1
  displayName: kubectl apply using configFile
  inputs:
    connectionType: Azure Resource Manager
    azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
    azureResourceGroup: $(azureResourceGroup)
    kubernetesCluster: $(kubernetesCluster)
    command: apply
    useConfigurationFile: true
    configuration: mhc-aks.yaml

シークレット

シークレット型の Kubernetes オブジェクトは 、パスワード、OAuth トークン、SSH キーなどの機密情報を保持することを目的とします。 この情報をシークレットに入れる方が、ポッド定義や Docker イメージに逐語的に入れるよりも安全で柔軟性が高い。 Azure Pipelinesで説明するように 、ImagePullSecrets をサービス アカウントに追加したり、汎用シークレットを設定したりする方法が簡単になります。

ImagePullSecret

パラメーター説明
secretType
シークレットの種類
(必須)ImagePullSecret または他の汎用シークレットを作成または更新します。 許容される値: ImagePullSecret の dockerRegistry、または他の種類のシークレットのジェネリック。
既定値: dockerRegistry
containerRegistryType
コンテナー レジストリの種類
(必須)使用できる値: Azure Container Registry、または他Container Registryレジストリの値です。
既定値: Azure Container Registry
azureSubscription
EndpointForSecrets

Azure サブスクリプション
(secretType == dockerRegistry と containerRegistryType == Azure Container Registry)Azure Resource Manager、ImagePullSecret を設定するAzure Container Registryを含むサブスクリプションを対象にしたサービス接続を指定します。
azureContainerRegistry
Azure コンテナー レジストリ
(secretType == dockerRegistry と containerRegistryType == Azure Container Registry)ImagePullSecret を設定するAzure Container Registryを指定します。
secretName
シークレット名
(省略可能)シークレットの名前。
forceUpdate
強制的にシークレットを更新する
(省略可能)シークレットが存在する場合は削除し、値が更新された新しいシークレットを作成します。
既定値: true

この YAML の例では、ImagePullSecrets の設定を示します。

    - task: Kubernetes@1
      displayName: kubectl apply for secretType dockerRegistry
      inputs:
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureResourceGroup: $(azureResourceGroup)
        kubernetesCluster: $(kubernetesCluster)
        command: apply
        arguments: -f mhc-aks.yaml
        secretType: dockerRegistry
        containerRegistryType: Azure Container Registry
        azureSubscriptionEndpointForSecrets: $(azureSubscriptionEndpoint)
        azureContainerRegistry: $(azureContainerRegistry)
        secretName: mysecretkey2
        forceUpdate: true

汎用シークレット

パラメーター説明
secretType
シークレットの種類
(必須)ImagePullSecret または他の汎用シークレットを作成または更新します。 許容される値: ImagePullSecret の dockerRegistry、または他の種類のシークレットのジェネリック。
既定値: dockerRegistry
secretArguments
引数
(省略可能)シークレットに挿入するキーとリテラル値を指定します。 たとえば、--from-literal=key1=value1 --from-literal=key2="top secret" のように指定します。
secretName
シークレット名
(省略可能)シークレットの名前。

この YAML の例では 、secretArguments 入力に指定されたリテラル値から汎用シークレットを作成します。

    - task: Kubernetes@1
      displayName: secretType generic with literal values
      inputs:
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureResourceGroup: $(azureResourceGroup)
        kubernetesCluster: $(kubernetesCluster)
        command: apply
        arguments: -f mhc-aks.yaml
        secretType: generic
        secretArguments: --from-literal=contoso=5678
        secretName: mysecretkey

次に示すように、パイプライン変数を使用して、リテラル値を指定する引数を渡します。

    - task: Kubernetes@1
      displayName: secretType generic with pipeline variables
      inputs:
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureResourceGroup: $(azureResourceGroup)
        kubernetesCluster: $(kubernetesCluster)
        command: apply
        arguments: -f mhc-aks.yaml
        secretType: generic
        secretArguments: --from-literal=contoso=$(contosovalue)
        secretName: mysecretkey

ConfigMap

ConfigMaps を使用すると、構成成果物をイメージ コンテンツから切り離して、コンテナー化されたアプリケーションの移植性を維持できます。

パラメーター説明
configMapName
ConfigMapName
(省略可能)ConfigMap の名前。
forceUpdateConfigMap
強制的に configmap を更新する
(省略可能)configmap が存在する場合は削除し、値が更新された新しい configmap を作成します。
既定値: false
useConfigMapFile
ファイルを使用する
(省略可能)ディレクトリを指定して、個々のファイルから、または複数のファイルから ConfigMap を作成します。
既定値: false
configMapFile
ConfigMap ファイル
(useConfigMapFile == true の場合は必須)configMaps を含むファイルまたはディレクトリを指定します。 これは 引数を使用します --from-file
configMapArguments
引数
(省略可能)configMap に挿入するキーとリテラル値を指定します。 たとえば、--from-literal=key1=value1 --from-literal=key2="top secret" のように指定します。

この YAML の例では、ConfigMap ファイルをポイントして ConfigMap を作成します。

    - task: Kubernetes@1
      displayName: kubectl apply
      inputs:
        configMapName: myconfig
        useConfigMapFile: true
        configMapFile: src/configmap

この YAML の例では、リテラル値を configMapArguments 入力として直接指定し、forceUpdate を true に設定して 、ConfigMap を 作成します。

    - task: Kubernetes@1
      displayName: configMap with literal values
      inputs:
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureResourceGroup: $(azureResourceGroup)
        kubernetesCluster: $(kubernetesCluster)
        command: apply
        arguments: -f mhc-aks.yaml
        secretType: generic
        secretArguments: --from-literal=contoso=$(contosovalue)
        secretName: mysecretkey4
        configMapName: myconfig
        forceUpdateConfigMap: true
        configMapArguments: --from-literal=myname=contoso

次に示すように、パイプライン変数を使用して、ConfigMap の作成時にリテラル値を渡します。

    - task: Kubernetes@1
      displayName: configMap with pipeline variables
      inputs:
        azureSubscriptionEndpoint: $(azureSubscriptionEndpoint)
        azureResourceGroup: $(azureResourceGroup)
        kubernetesCluster: $(kubernetesCluster)
        command: apply
        arguments: -f mhc-aks.yaml
        secretType: generic
        secretArguments: --from-literal=contoso=$(contosovalue)
        secretName: mysecretkey4
        configMapName: myconfig
        forceUpdateConfigMap: true
        configMapArguments: --from-literal=myname=$(contosovalue)

上級

パラメーター説明
versionOrLocation
バージョン
(省略可能)使用する kubectl のバージョンを明示的に選択するか、kubectl バイナリのパス (場所) を指定します。
既定値: バージョン
versionSpec
バージョン の仕様
(versionOrLocation == version の場合は必須)使用する kubectl のバージョン。 例: 1.7.0、1.x.0、4.x.0、6.10.0、=6.10.0 >
既定値: 1.7.0
checkLatest
最新バージョンを確認する
(省略可能)true の場合、kubectl の最新バージョンのチェックが実行されます。
既定値: false
specifyLocation
場所を指定する
(必須)ファイルへの完全kubectl.exeパス。
cwd
作業ディレクトリ
(省略可能)Kubectl コマンドの作業ディレクトリ。
既定値: $(System.DefaultWorkingDirectory)
outputFormat
出力形式
(省略可能)許容される値: json または YAML
既定値: json。
既定の outputFormat: '' kubectl の outputFormat のように、明示的に空白のままにすることができます

トラブルシューティング

Kubernetes クラスターはファイアウォールの内側にあり、ホステッド エージェントを使用しています。 このクラスターにデプロイするにはどうすればよいですか?

ホステッド エージェントに対する IP アドレスを許可することにより、ファイアウォール経由のホステッド エージェントへのアクセスを許可できます。 詳細については、エージェントの IP 範囲に関する記事を参照してください

オープン ソース

このタスクは、 のオープン ソースGitHub。 フィードバックと投稿をお待ちしております。