Kubernetes クラスターに Azure 関数をデプロイします。
構文
# 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 Manager
、Kubernetes Service Connection
。 既定値: Kubernetes Service Connection
。
Kubernetes サービスの接続タイプを選択します。
-
Kubernetes Service Connection
- KubeConfig ファイルを指定したり、サービス アカウントを指定したり、Azure サブスクリプション オプションを使用して AKS インスタンスをインポートしたりできます。 Azure サブスクリプション オプションを使用して AKS インスタンスをインポートするには、サービス接続の構成時に Kubernetes クラスターにアクセスする必要があります。 -
Azure Resource Manager
- AKS インスタンスを選択できます。 サービス接続の構成時に Kubernetes クラスターにアクセスしません。
詳細については、「解説」を参照してください。
Docker レジストリ サービス接続を dockerRegistryServiceConnection
- する
string
。 必須。
Docker レジストリ サービス接続を選択します。
Kubernetes サービス接続の kubernetesServiceConnection
-
入力エイリアス: kubernetesServiceEndpoint
。
string
。
connectionType = Kubernetes Service Connection
する場合に必要です。
Kubernetes サービス接続を選択します。
Azure サブスクリプション を
入力エイリアス: azureSubscriptionEndpoint
。
string
。
connectionType = Azure Resource Manager
する場合に必要です。
Azure Container Registry を含む Azure Resource Manager サブスクリプションを選択します。注: 新しいサービス接続を設定するには、リストから Azure サブスクリプションを選択し、[承認] をクリックします。 サブスクリプションがリストにない場合、または既存のサービス プリンシパルを使用する場合は、[追加] または [管理] ボタンを使用して Azure サービス接続をセットアップできます。
azureResourceGroup
-
リソース グループの
string
。
connectionType = Azure Resource Manager
する場合に必要です。
Azure リソース グループを選択します。
Kubernetes クラスターの kubernetesCluster
-
string
。
connectionType = Azure Resource Manager
する場合に必要です。
Azure マネージド クラスターを選択します。
Kubernetes 名前空間の namespace
-
string
。
Kubernetes 名前空間。
secretName
-
シークレット名の
string
。
関数構成データを含む Kubernetes シークレット (例: AzureWebJobsStorage: Azure storage connection string
)。
Docker Hub 名前空間を dockerHubNamespace
- する
string
。
Docker Hub 名前空間。 プライベート Docker Hub リポジトリに必要です。
appName
-
アプリケーション名の
string
。 必須。
アプリケーション名。 作成された Kubernetes オブジェクトは、この名前を使用します。 これは、リソース名の Kubernetes 名前付け規則に従う必要があります。
functionRootDirectory
-
関数のルート ディレクトリ
string
。
関数のルート ディレクトリ。 host.jsonを含める必要があります。 Docker のビルドとプッシュは、このディレクトリから実行されます。
waitForStability
-
安定性の を待つ
boolean
。 既定値: true
。
Kubernetes オブジェクトが目的の状態になるまで待ちます。
arguments
-
引数
string
。
引数をコマンドに渡します。 例:
--no-docker --service-type NodePort。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。
出力変数
なし。
注釈
AKS にアクセスするときの Kubernetes サービス接続に関する考慮事項
次のいずれかのオプションを使用して、Kubernetes サービス接続を作成できます。
- KubeConfigの
- サービスアカウント
- Azure サブスクリプション
Azure サブスクリプション オプションを選択する場合、サービス接続構成時に Azure DevOps から Kubernetes にアクセスできる必要があります。 サービス接続を作成できない理由はさまざまです。たとえば、プライベート クラスター を作成 場合や、クラスター ローカル アカウントが無効になっている場合などです。 このような場合、Azure DevOps はサービス接続の構成時にクラスターに接続できないため、名前空間の読み込み 画面が表示されます。
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 サポートします。