Как передать вывод из задачи kubectl в следующую задачу в Azure Devops

Я использую 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")

вместо использования Kubernetes@1 используйте azure cli задачу и запустите az aks get-cred .., а затем запустите нужную команду и захватите вывод, используя ##vso[task.setvariable variable=SasToken;]$something"

Amit Baranes 15.12.2020 20:02
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
1
1 005
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Мы могли бы использовать команду ведения журнала ##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")

Привет, привет, спасибо, что поделились, вы могли бы принять это как ответ, это могло бы помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту тему, спасибо.

Vito Liu 21.12.2020 03:14

Другие вопросы по теме