Я использую AKS. Я пытаюсь получить IP-адрес службы после моего развертывания через devops, чтобы я мог передать IP-адрес в управление API для дальнейшей настройки. сейчас моя задача выглядит так
- task: Kubernetes@1
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: 'string-Conn'
namespace: '<appservices>'
command: 'get'
arguments: 'get services --namespace appservices authsvc --output jsonpath=''{.status.loadBalancer.ingress[0].ip}'''
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
name: 'GetSvc'
когда я запускаю команду локально, я получаю IP-адрес балансировщика нагрузки. но как я могу передать результат этой задачи следующей задаче? ранее, когда я использую сценарии azure cli, я могу передать переменную vso set как часть самого сценария, как показано ниже, но не знаю, как добавить выходные данные этой задачи в переменную.
встроенный скрипт: |
$something = (az storage container generate-sas --account-name <container> --name armtemplate --permissions r --expiry $(date -u -d "30 minutes" +%Y-%m-%dT%H:%MZ))
Write-Host($something) Write-Output("##vso[task.setvariable variable=SasToken;]$something")
Мы могли бы использовать команду ведения журнала ##vso[task.setvariable variable=SasToken;]$something"
, чтобы устанавливать переменные в скриптах.
Но по вашему описанию мы рекомендуем вам использовать выходную переменную для передачи переменной IP. Например, предположим, что у нас есть задача с именем MyTask
, которая устанавливает выходную переменную с именем MyVar
. Мы могли бы использовать результаты в той же работе.
steps:
- task: MyTask@1 # this step generates the output variable
name: ProduceVar # because we're going to depend on it, we need to name the step
- script: echo $(ProduceVar.MyVar) # this step uses the output variable
Я следовал подходу, предложенному Амитом Баранесом, так как я не совсем понимаю назначение выполнения скрипта без имени переменной. Я использовал задачу Azure cli и запустил ее. Это было успешно
- task: AzureCLI@2
inputs:
azureSubscription: '<Service-Conn>'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az aks get-credentials -n $(clusterName) -g $(clusterRG)
$externalIp = (kubectl get -n $(ns) services $(svc) --output jsonpath='{.status.loadBalancer.ingress[0].ip}' )
Write-Host($externalIp) Write-Output("##vso[task.setvariable variable=AKSURL;]$externalIp")
Привет, привет, спасибо, что поделились, вы могли бы принять это как ответ, это могло бы помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту тему, спасибо.
вместо использования
Kubernetes@1
используйтеazure cli
задачу и запуститеaz aks get-cred ..
, а затем запустите нужную команду и захватите вывод, используя##vso[task.setvariable variable=SasToken;]$something"