다음을 통해 공유


AzureFunctionOnKubernetes@1 - Kubernetes v1 작업의 Azure Function

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 클러스터
string; connectionType = Azure Resource Manager때 필요합니다.

Azure 관리형 클러스터를 선택합니다.


Kubernetes 네임스페이스namespace -
string;

Kubernetes 네임스페이스입니다.


secretName - 비밀 이름
string;

함수 구성 데이터를 포함하는 Kubernetes 비밀(예: AzureWebJobsStorage: Azure storage connection string).


docker Hub 네임스페이스dockerHubNamespace -
string;

Docker 허브 네임스페이스입니다. 프라이빗 Docker Hub 리포지토리에 필요합니다.


애플리케이션 이름appName -
string; 필수 사항입니다.

애플리케이션 이름입니다. 만든 Kubernetes 개체는 이 이름을 사용합니다. 리소스 이름에 대한 Kubernetes 명명 규칙을 따라야 합니다.


functionRootDirectory - 함수 루트 디렉터리
string;

함수 루트 디렉터리입니다. host.json포함해야 합니다. Docker 빌드 및 푸시는 이 디렉터리에서 수행됩니다.


waitForStability - 안정성 기다립니다.
boolean; 기본값은 true입니다.

Kubernetes 개체가 원하는 상태에 도달할 때까지 기다립니다.


arguments - 인수
string;

명령에 인수를 전달합니다. 예:
--no-docker --service-type NodePort입니다.


작업 제어 옵션

모든 작업에는 작업 입력 외에 제어 옵션이 있습니다. 자세한 내용은 컨트롤 옵션 및 일반적인 작업 속성참조하세요.

출력 변수

없음.

비고

AKS에 액세스할 때 Kubernetes Service 연결 고려 사항

다음 옵션 중 원하는 옵션을 사용하여 Kubernetes 서비스 연결을 만들 수 있습니다.

  • 쿠버구성
  • 서비스 계정
  • 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
요구 없음
기능 이 작업은 작업의 후속 작업에 대한 요구 사항을 충족하지 않습니다.
명령 제한 어느 것이든
settable 변수 어느 것이든
에이전트 버전 지원되는 모든 에이전트 버전입니다.
작업 범주 배치하다