将 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 Manager
、Kubernetes 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 服务连接
输入别名: kubernetesServiceEndpoint
.
string
。
connectionType = Kubernetes Service Connection
时是必需的。
选择 Kubernetes 服务连接。
azureSubscriptionConnection
-
Azure 订阅
输入别名: azureSubscriptionEndpoint
.
string
。
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 中心命名空间
string
。
Docker 中心命名空间。 专用 Docker 中心存储库是必需的。
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 订阅 选项时,需要在服务连接配置时访问 Kubernetes。 创建服务连接的原因可能有多种,例如,创建专用群集 或者群集 本地帐户已禁用。 在这些情况下,Azure DevOps 无法在服务连接配置时连接到群集,你将看到 加载命名空间 屏幕停滞。
从 Kubernetes 1.24 开始,长期令牌在默认情况下 不再创建。 Kubernetes 建议不要使用生存期较长的令牌。 因此,使用通过 Azure 订阅创建的 Kubernetes 服务连接的任务 选项无权访问身份验证所需的永久令牌,并且无法访问 Kubernetes 群集。 这还会导致冻结 加载命名空间 对话框。
使用 Azure 资源管理器服务连接访问 AKS
对于 AKS 客户,Azure 资源管理器服务连接类型提供了连接到专用群集或禁用本地帐户的群集的最佳方法。 此方法不依赖于创建服务连接时的群集连接。 对 AKS 的访问将延迟到管道运行时,这具有以下优势:
- 可以从自承载或规模集代理执行对 AKS 群集的访问,并可以看到群集。
- 为每个使用 Azure 资源管理器服务连接的任务创建令牌。 这可确保使用生存期较短的令牌连接到 Kubernetes,这是 Kubernetes 建议。
- 即使禁用本地帐户,也可以访问 AKS。
服务连接常见问题解答
我收到以下错误消息:找不到与服务帐户关联的任何机密。 发生了什么?
将 Kubernetes 服务连接与 Azure 订阅选项配合使用。 我们正在更新此方法以创建长期令牌。 这预计将在5月中旬推出。 但是,建议根据 Kubernetes 指南开始使用 Azure 服务连接类型,而不是使用长期令牌。
我使用的是 AKS,不想更改任何内容,是否可以继续将任务用于 Kubernetes 服务连接?
我们正在更新此方法以创建长期令牌。 这预计将在5月中旬推出。 但是,请注意,此方法针对 Kubernetes 指南。
我使用的是 Kubernetes 任务和 Kubernetes 服务连接,但未使用 AKS。 我应该担心吗?
任务将继续像以前一样工作。
是否删除 Kubernetes 服务连接类型?
无论 Kubernetes 任务在何处运行,我们的 Kubernetes 任务都适用于任何 Kubernetes 群集。 Kubernetes 服务连接将继续存在。
我是 AKS 客户,一切都运行正常,我应该采取行动吗?
无需更改任何内容。 如果在创建期间使用 Kubernetes 服务连接并选择了 Azure 订阅,则应注意有关使用长期令牌 的Kubernetes 指南。
我正在创建 Kubernetes 环境,不能选择使用服务连接
如果在创建环境期间无法访问 AKS,则可以使用空环境并将 connectionType
输入设置为 Azure 资源管理器服务连接。
我配置了 Azure Active Directory RBAC 的 AKS,管道不起作用。 这些更新会解决此问题吗?
启用 AAD RBAC 时访问 Kubernetes 与创建令牌无关。 为了防止交互式提示,我们将在将来的更新中支持 kubelogin。