Udostępnij za pośrednictwem


AzureFunctionOnKubernetes@1 — funkcja platformy Azure w zadaniu Kubernetes w wersji 1

Wdrażanie funkcji platformy Azure w klastrze Kubernetes.

Składnia

# 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.

Dane wejściowe

connectionType - Typ połączenia z usługą
string. Wymagane. Dozwolone wartości: Azure Resource Manager, Kubernetes Service Connection. Wartość domyślna: Kubernetes Service Connection.

Wybierz typ połączenia usługi Kubernetes.

  • Kubernetes Service Connection — Umożliwia podanie pliku KubeConfig, określenie konta usługi lub zaimportowanie wystąpienia usługi AKS z opcją Subskrypcja platformy Azure . Importowanie wystąpienia usługi AKS z opcją Subskrypcja platformy Azure wymaga dostępu do klastra Kubernetes w czasie konfiguracji połączenia z usługą.
  • Azure Resource Manager — Umożliwia wybranie wystąpienia usługi AKS. Nie uzyskuje dostępu do klastra Kubernetes w czasie konfiguracji połączenia z usługą.

Aby uzyskać więcej informacji, zobacz Uwagi.


dockerRegistryServiceConnection - Połączenie usługi rejestru platformy Docker
string. Wymagane.

Wybierz połączenie usługi rejestru platformy Docker.


kubernetesServiceConnection - Połączenie usługi Kubernetes
Alias wejściowy: kubernetesServiceEndpoint. string. Wymagane, gdy connectionType = Kubernetes Service Connection.

Wybierz połączenie usługi Kubernetes.


azureSubscriptionConnection - Subskrypcja platformy Azure
Alias wejściowy: azureSubscriptionEndpoint. string. Wymagane, gdy connectionType = Azure Resource Manager.

Wybierz subskrypcję usługi Azure Resource Manager zawierającą Azure Container Registry. Uwaga: Aby skonfigurować nowe połączenie z usługą, wybierz subskrypcję platformy Azure z listy i kliknij pozycję "Autoryzuj". Jeśli twoja subskrypcja nie znajduje się na liście lub jeśli chcesz użyć istniejącej jednostki usługi, możesz skonfigurować połączenie usługi platformy Azure przy użyciu przycisku "Dodaj" lub "Zarządzaj".


azureResourceGroup - Grupa zasobów
string. Wymagane, gdy connectionType = Azure Resource Manager.

Wybierz grupę zasobów platformy Azure.


kubernetesCluster - Klaster Kubernetes
string. Wymagane, gdy connectionType = Azure Resource Manager.

Wybierz klaster zarządzany platformy Azure.


namespace - Przestrzeń nazw kubernetes
string.

Przestrzeń nazw kubernetes.


secretName - Nazwa wpisu tajnego
string.

Wpis tajny kubernetes zawierający dane konfiguracji funkcji (np. AzureWebJobsStorage: Azure storage connection string).


dockerHubNamespace - Docker Hub przestrzeni nazw
string.

Docker Hub przestrzeni nazw. Wymagane dla prywatnego repozytorium Docker Hub.


appName - Nazwa aplikacji
string. Wymagane.

Nazwa aplikacji. Utworzone obiekty Kubernetes używają tej nazwy. Powinno to być zgodne z konwencjami nazewnictwa platformy Kubernetes dla nazw zasobów.


functionRootDirectory - Katalog główny funkcji
string.

Katalog główny funkcji. Powinien zawierać plik host.json. Kompilacja i wypychanie platformy Docker jest wykonywane z tego katalogu.


waitForStability - Czekaj na stabilność
boolean. Wartość domyślna: true.

Poczekaj, aż obiekty Kubernetes osiągną żądany stan.


arguments - Argumenty
string.

Przekaż argumenty do polecenia. Na przykład:
--no-docker --service-type NodePort.


Opcje sterowania zadania

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.

Zmienne wyjściowe

Brak.

Uwagi

Zagadnienia dotyczące połączenia z usługą Kubernetes podczas uzyskiwania dostępu do usługi AKS

Możesz utworzyć połączenie usługi Kubernetes z dowolną z poniższych opcji.

  • KubeConfig
  • Konto usługi
  • Subskrypcja platformy Azure

Zrzut ekranu przedstawiający wybieranie metody uwierzytelniania połączenia usługi Kubernetes.

Podczas wybierania opcji Subskrypcja platformy Azure platforma Kubernetes musi być dostępna dla usługi Azure DevOps w czasie konfiguracji połączenia z usługą. Może istnieć różne przyczyny, dla których nie można utworzyć połączenia z usługą, na przykład utworzono klaster prywatny lub klaster ma wyłączone konta lokalne. W takich przypadkach usługa Azure DevOps nie może nawiązać połączenia z klastrem w czasie konfiguracji połączenia z usługą i zostanie wyświetlony ekran Ładowanie przestrzeni nazw .

Zrzut ekranu przedstawiający wybieranie okna dialogowego uwierzytelniania połączenia usługi Kubernetes zablokowanego podczas ładowania przestrzeni nazw.

Począwszy od platformy Kubernetes 1.24, tokeny długotrwałe nie są już tworzone domyślnie. Platforma Kubernetes zaleca, aby nie używać tokenów długotrwałych. W związku z tym zadania korzystające z połączenia usługi Kubernetes utworzonego z opcją Subskrypcja platformy Azure nie mają dostępu do trwałego tokenu wymaganego do uwierzytelnienia i nie mogą uzyskać dostępu do klastra Kubernetes. Spowoduje to również zablokowanie okna dialogowego Ładowanie przestrzeni nazw .

Uzyskiwanie dostępu do usługi AKS za pomocą połączenia usługi Azure Resource Manager Service

W przypadku klientów usługi AKS typ połączenia usługi Azure Resource Manager zapewnia najlepszą metodę nawiązywania połączenia z klastrem prywatnym lub klastrem z wyłączonymi kontami lokalnymi. Ta metoda nie jest zależna od łączności klastra w czasie tworzenia połączenia z usługą. Dostęp do usługi AKS jest odroczony do środowiska uruchomieniowego potoku, co ma następujące zalety:

  • Dostęp do klastra usługi AKS (prywatnego) można wykonać z własnego agenta lub zestawu skalowania z linią wzroku do klastra.
  • Token jest tworzony dla każdego zadania korzystającego z połączenia usługi Azure Resource Manager. Gwarantuje to nawiązanie połączenia z platformą Kubernetes przy użyciu krótkotrwałego tokenu, który jest zaleceniem platformy Kubernetes.
  • Dostęp do usługi AKS można uzyskać nawet wtedy, gdy konta lokalne są wyłączone.

Często zadawane pytania dotyczące połączenia z usługą

Otrzymuję następujący komunikat o błędzie: Nie można odnaleźć żadnego wpisu tajnego skojarzonego z kontem usługi. Co się dzieje?

Używasz połączenia usługi Kubernetes z opcją Subskrypcja platformy Azure. Aktualizujemy tę metodę w celu utworzenia tokenów długotrwałych. Oczekuje się, że będzie to dostępne w połowie maja. Zaleca się jednak rozpoczęcie korzystania z typu połączenia usługi platformy Azure, a nie używanie tokenów długotrwałych zgodnie ze wskazówkami dotyczącymi platformy Kubernetes.

Używam usługi AKS i nie chcę nic zmieniać. Czy mogę nadal używać zadań z połączeniem usługi Kubernetes?

Aktualizujemy tę metodę w celu utworzenia tokenów długotrwałych. Oczekuje się, że będzie to dostępne w połowie maja. Należy jednak pamiętać, że takie podejście jest sprzeczne ze wskazówkami dotyczącymi platformy Kubernetes.

Używam zadań platformy Kubernetes i połączenia usługi Kubernetes, ale nie usługi AKS. Czy powinienem się martwić?

Zadania będą nadal działać tak jak wcześniej.

Czy typ połączenia usługi Kubernetes zostanie usunięty?

Nasze zadania kubernetes działają z dowolnym klastrem Kubernetes, niezależnie od tego, gdzie są uruchomione. Połączenie usługi Kubernetes będzie nadal istnieć.

Jestem klientem usługi AKS i wszystko działa prawidłowo, czy powinienem działać?

Nie trzeba nic zmieniać. Jeśli używasz połączenia usługi Kubernetes i wybranej subskrypcji platformy Azure podczas tworzenia, pamiętaj o wskazówkach dotyczących platformy Kubernetes dotyczących korzystania z tokenów długotrwałych.

Tworzysz środowisko Kubernetes i nie mam możliwości korzystania z połączeń z usługami

Jeśli nie możesz uzyskać dostępu do usługi AKS w czasie tworzenia środowiska, możesz użyć pustego środowiska i ustawić connectionType dane wejściowe na połączenie usługi Azure Resource Manager.

Mam skonfigurowaną usługę AKS z kontrolą dostępu opartą na rolach usługi Azure Active Directory, a mój potok nie działa. Czy te aktualizacje rozwiążą ten problem?

Uzyskiwanie dostępu do platformy Kubernetes w przypadku włączenia kontroli dostępu opartej na rolach usługi AAD nie jest związane z tworzeniem tokenów. Aby zapobiec monitowi interaktywnemu, będziemy obsługiwać rozwiązanie kubelogin w przyszłej aktualizacji.

Wymagania

Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja, wersja klasyczna
Działa w Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne ustawialne Dowolne
Wersja agenta Wszystkie obsługiwane wersje agenta.
Kategoria zadania Wdrażanie