Я пытаюсь развернуть приложение Helm в кластере AKS с помощью конвейера Azure DevOps. Однако конвейер завершается сбоем из-за запроса на вход в систему устройства. Вот соответствующий раздел моего YAML-файла конвейера:
pool:
name: '*'
variables:
AKS_RESOURCE_GROUP: '*'
AKS_CLUSTER_NAME: '*'
KUBECONFIG: $(Build.SourcesDirectory)/kubeconfig
HELM_RELEASE_NAME: '*'
HELM_CHART_PATH: '*'
HELM_NAMESPACE: '*'
stages:
- stage: Deploy
jobs:
- job: DeployToAKS
steps:
- task: AzureCLI@2
inputs:
azureSubscription: '*'
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
# Get AKS credentials and configure kubectl context
az aks get-credentials --resource-group $(AKS_RESOURCE_GROUP) --name $(AKS_CLUSTER_NAME) --file $(KUBECONFIG)
# Set KUBECONFIG environment variable
export KUBECONFIG=$(KUBECONFIG)
# Upgrade the existing Helm release or install if it doesn't exist
helm upgrade --install $(HELM_RELEASE_NAME) $(HELM_CHART_PATH) --namespace $(HELM_NAMESPACE) --kubeconfig $(KUBECONFIG) --values $(HELM_CHART_PATH)/values.yaml
# (Optional) Verify the deployment by checking the Helm release status
helm status $(HELM_RELEASE_NAME) --namespace $(HELM_NAMESPACE) --kubeconfig $(KUBECONFIG)
displayName: 'Deploy Helm Application to AKS'
Однако когда я запускаю этот конвейер, он терпит неудачу со следующей ошибкой:
[Error] The operation was canceled.
WARNING: Merged "my cluster name" as current context in /home/myazureuser/myagent/_work/8/s/kubeconfig
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code C5D7UEJAFF to authenticate.
Я проверил, что субъект-служба подключения к службе имеет необходимые разрешения для доступа к кластеру AKS.
Как я могу изменить свой конвейер Azure DevOps или конфигурацию субъекта-службы, чтобы избежать запроса на вход в систему устройства и разрешить конвейеру работать в неинтерактивном режиме? Любая помощь или предложения будут очень признательны!
Вы можете использовать задачу Kubernetes@1
с командой login
для аутентификации в AKS.
Пример кода yaml:
pool:
name: wadepool
variables:
ServiceConnection: ARMConn1
AKSCluster: wadeAKS1
ResourceGroup: YourResourceGroup
HELM_RELEASE_NAME: 'clamav'
HELM_CHART_PATH: './charts/clamav/'
HELM_NAMESPACE: 'nmsw-dev'
steps:
- task: Kubernetes@1
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: '$(ServiceConnection)'
azureResourceGroup: '$(ResourceGroup)'
kubernetesCluster: '$(AKSCluster)'
useClusterAdmin: true
command: 'login'
- task: HelmInstaller@1
inputs:
helmVersionToInstall: 'latest'
- task: AzureCLI@2
inputs:
azureSubscription: $(ServiceConnection)
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "Setting up AKS credentials"
az aks get-credentials --resource-group $(ResourceGroup) --name $(AKSCluster) --overwrite-existing
kubectl config use-context $(AKSCluster)
# Upgrade the existing Helm release or install if it doesn't exist
helm upgrade --install $(HELM_RELEASE_NAME) $(HELM_CHART_PATH) --namespace $(HELM_NAMESPACE) --values $(HELM_CHART_PATH)/values.yaml
# (Optional) Verify the deployment by checking the Helm release status
helm status $(HELM_RELEASE_NAME) --namespace $(HELM_NAMESPACE)
displayName: 'Set up AKS Credentials and Test Connection'
Конвейер работает, я не указал $(KUBECONFIG)
со своей стороны: