AzureFunctionOnKubernetes@1 - Kubernetes v1 タスクの Azure 関数

Azure 関数を Kubernetes クラスターにデプロイします。

構文

# Azure Function on Kubernetes v1
# Deploy Azure function to Kubernetes cluster.
- task: AzureFunctionOnKubernetes@1
  inputs:
  # Service Connections
    connectionType: 'Kubernetes Service Connection' # 'Azure Resource Manager' | 'Kubernetes Service Connection'. Required. Service connection type. Default: Kubernetes Service Connection.
    dockerRegistryServiceConnection: # string. Required. Docker registry service connection. 
    #kubernetesServiceConnection: # string. Alias: kubernetesServiceEndpoint. Required when connectionType = Kubernetes Service Connection. Kubernetes service connection. 
    #azureSubscriptionConnection: # string. Alias: azureSubscriptionEndpoint. Required when connectionType = Azure Resource Manager. Azure subscription. 
    #azureResourceGroup: # string. Required when connectionType = Azure Resource Manager. Resource group. 
    #kubernetesCluster: # string. Required when connectionType = Azure Resource Manager. Kubernetes cluster. 
  # Commands
    #namespace: # string. Kubernetes namespace. 
    #secretName: # string. Secret Name. 
    #dockerHubNamespace: # string. Docker Hub namespace. 
    appName: # string. Required. Application Name. 
    #functionRootDirectory: # string. Function root directory. 
    #waitForStability: true # boolean. Wait for stability. Default: true.
    #arguments: # string. Arguments.

入力

connectionType - サービス接続の種類
string. 必須です。 使用できる値: Azure Resource ManagerKubernetes Service Connection。 既定値: Kubernetes Service Connection

Kubernetes サービス接続の種類を選択します。

  • Kubernetes Service Connection - KubeConfig ファイルを指定したり、サービス アカウントを指定したり、 Azure サブスクリプション オプションを使用して AKS インスタンスをインポートしたりできます。 Azure サブスクリプション オプションを使用して AKS インスタンスをインポートするには、サービス接続構成時に Kubernetes クラスターへのアクセスが必要です。
  • Azure Resource Manager - AKS インスタンスを選択できます。 サービス接続の構成時に Kubernetes クラスターにアクセスしません。

詳細については、「解説」をご覧ください。


dockerRegistryServiceConnection - Docker レジストリ サービス接続
string. 必須です。

Docker レジストリ サービス接続を選択します。


kubernetesServiceConnection - Kubernetes サービス接続
入力エイリアス: kubernetesServiceEndpointstring. connectionType = Kubernetes Service Connection の場合に必要です。

Kubernetes サービス接続を選択します。


azureSubscriptionConnection - Azure サブスクリプション
入力エイリアス: azureSubscriptionEndpointstring. connectionType = Azure Resource Manager の場合に必要です。

Azure Container Registryを含む Azure Resource Manager サブスクリプションを選択します。注: 新しいサービス接続を構成するには、一覧から Azure サブスクリプションを選択し、[承認] をクリックします。 自分のサブスクリプションが一覧にない場合、または既存のサービス プリンシパルを使用する場合、[追加] または [管理] ボタンを使用して Azure サービス接続を設定できます。


azureResourceGroup - リソース グループ
string. connectionType = Azure Resource Manager の場合に必要です。

Azure リソース グループを選択します。


kubernetesCluster - Kubernetes クラスター
string. connectionType = Azure Resource Manager の場合に必要です。

Azure マネージド クラスターを選択します。


namespace - Kubernetes 名前空間
string.

Kubernetes 名前空間。


secretName - シークレット名
string.

関数構成データを含む Kubernetes シークレット (例: AzureWebJobsStorage: Azure storage connection string)。


dockerHubNamespace - Docker Hub名前空間
string.

名前空間Docker Hubします。 プライベート Docker Hub リポジトリに必要です。


appName - アプリケーション名
string. 必須です。

アプリケーション名。 作成された Kubernetes オブジェクトはこの名前を使用します。 これは、リソース名の Kubernetes の名前付け規則に従う必要があります。


functionRootDirectory - 関数ルート ディレクトリ
string.

関数ルート ディレクトリ。 host.json を含める必要があります。 Docker のビルドとプッシュは、このディレクトリから実行されます。


waitForStability - 安定性を待つ
boolean. 既定値: true

Kubernetes オブジェクトが目的の状態になるまで待ちます。


arguments - 引数
string.

引数を command に渡します。 例:
--no-docker --service-type NodePort。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

AKS にアクセスするときの Kubernetes サービス接続に関する考慮事項

次のいずれかのオプションを使用して、Kubernetes サービス接続を作成できます。

  • KubeConfig
  • サービス アカウント
  • Azure サブスクリプション

Kubernetes サービス接続認証方法の選択のスクリーンショット。

[Azure サブスクリプション] オプションを選択するときは、サービス接続の構成時に Azure DevOps から Kubernetes にアクセスできる必要があります。 プライベート クラスターを作成した場合や、クラスターにローカル アカウントが無効になっているなど、サービス接続を作成できない理由はさまざまです。 このような場合、Azure DevOps はサービス接続の構成時にクラスターに接続できないため、[ 名前空間の読み込み中] 画面が表示されます。

名前空間の読み込み中に Kubernetes サービス接続認証ダイアログがスタックしている選択のスクリーンショット。

Kubernetes 1.24 以降では、有効期間の長いトークンは 既定では作成されなくなりました。 Kubernetes では、有効期間の長いトークンを使用しないことをお勧めします。 その結果、 Azure サブスクリプション オプションで作成された Kubernetes サービス接続を使用するタスクは、認証に必要な永続的なトークンにアクセスできないため、Kubernetes クラスターにアクセスできません。 これにより、固定された [読み込み名前空間 ] ダイアログも表示されます。

Azure Resource Manager サービス接続を使用して AKS にアクセスする

AKS のお客様の場合、Azure Resource Manager サービス接続の種類は、プライベート クラスター、またはローカル アカウントが無効になっているクラスターに接続するための最適な方法を提供します。 この方法は、サービス接続の作成時にクラスター接続に依存しません。 AKS へのアクセスはパイプライン ランタイムに遅延されます。次の利点があります。

  • (プライベート) AKS クラスターへのアクセスは、セルフホステッド エージェントまたはスケール セット エージェントからクラスターにアクセスできます。
  • トークンは、Azure Resource Manager サービス接続を使用するすべてのタスクに対して作成されます。 これにより、有効期間の短いトークン ( Kubernetes の推奨事項) を使用して Kubernetes に接続できます。
  • ローカル アカウントが無効になっている場合でも、AKS にアクセスできます。

サービス接続に関する FAQ

次のエラー メッセージが表示されます。サービス アカウントに関連付けられているシークレットが見つかりませんでした。 状況

Azure サブスクリプションを使用して Kubernetes サービス接続を使用しています。 このメソッドを更新して、有効期間の長いトークンを作成しています。 これは 5 月中旬に利用可能になる予定です。 ただし、 Kubernetes のガイダンスに従って有効期間の長いトークンは使用せず、Azure サービス接続の種類の使用を開始することをお勧めします。

AKS を使用していて、何も変更したくない場合、Kubernetes サービス接続でタスクを引き続き使用できますか?

このメソッドを更新して、有効期間の長いトークンを作成しています。 これは 5 月中旬に利用可能になる予定です。 ただし、このアプローチは Kubernetes ガイダンスに反していることに注意してください。

Kubernetes タスクと Kubernetes サービス接続を使用していますが、AKS は使用していません。 私は心配する必要がありますか?

タスクは引き続き以前と同様に機能します。

Kubernetes サービスの接続の種類は削除されますか?

Kubernetes タスクは、実行されている場所に関係なく、任意の Kubernetes クラスターで動作します。 Kubernetes サービス接続は引き続き存在します。

私は AKS の顧客であり、すべてが正常に実行されています。行動する必要がありますか?

何も変更する必要はありません。 Kubernetes サービス接続を使用していて、作成時に [Azure サブスクリプション] を選択している場合は、有効期間の 長いトークンの使用に関する Kubernetes ガイダンスに注意する必要があります。

Kubernetes 環境を作成しており、サービス接続を使用するオプションはありません

環境の作成時に AKS にアクセスできない場合は、空の環境を使用し、入力を connectionType Azure Resource Manager サービス接続に設定できます。

Azure Active Directory RBAC で AKS が構成されており、パイプラインが機能しません。 これらの更新プログラムによって解決されますか?

AAD RBAC が有効になっているときに Kubernetes にアクセスすることは、トークンの作成とは無関係です。 対話型プロンプトを防ぐために、今後の更新プログラムで kubelogin をサポートします。

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド、クラシック リリース
実行日 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン サポートされているすべてのエージェント バージョン。
タスクのカテゴリ 配置