Использовать переменную для заполнения kubernetesServiceConnection: настройка в задаче KubernetesManifest@0 - PullRequest
0 голосов
/ 26 мая 2020

Цель: Publi sh generi c Docker image; Разверните образ в нескольких операционных средах (пространства имен k8s) с разными конфигурациями.

Я использую задачу KubernetesManifest@0 для создания и заполнения секрета k8s в пространстве имен k8s. У меня есть сотни пространств имен для представления различных клиентских сред. Я использую сценарий bash в задаче перед запуском задачи KubernetesManifest@0 для заполнения kubernetesServiceConnection: . В частности, сценарий bash использует команду az DevOps cli для получения правильного полного имени подключения службы для пространства имен k8s, в котором я хочу развернуть секрет k8s.

Проблема: задача KubernetesManifest@0 требует значения для kubernetesServiceConnection: в конвейере YAML время компиляции . Похоже, что я не могу сгенерировать значение для kubernetesServiceConnection: во время времени выполнения .

Как я могу автоматически установить kubernetesServiceConnection: at время выполнения?

Ошибка: Возникла проблема с авторизацией ресурса: «Конвейер недействителен. Задание Deploy_Dev: ввод шага kubernetesServiceConnection ссылается на соединение службы $ (kubernetesServiceConnection), которое не может быть найдено. Соединение со службой не существует или не было авторизовано для использования.

Мой код:

  - deployment: Deploy_Dev
pool:
  vmImage: $(vmImageName)
dependsOn: Derive_Variable_Values
variables: 
  kubernetesServiceConnection: $[ dependencies.Derive_Variable_Values.outputs['deriveVariableValues.kubernetesServiceConnection'] ]
environment: $(devOpsEnvironment)
strategy:
  runOnce:
    deploy:
      steps:
      - checkout: self 
        displayName: Checkout $(Build.Repository.Name)
Этот bash скрипт показывает, что kubernetesServiceConnection расширяется до правильной строки для моего указанного c имя (а) подключения службы
      - task: Bash@3
        displayName: Echo kubernetesServiceConnection
        inputs:
          targetType: 'inline'
          script: |
            echo kubernetesServiceConnection is $(kubernetesServiceConnection)
Вышеупомянутое эхо предоставляет правильную строку для kubernetesServiceConnection
      - task: KubernetesManifest@0
        displayName: Create k8s secret with Key Vault values
        inputs: 
          action: createSecret
          secretType: generic
          secretName: $(keyVaultSecretName)
          secretArguments: --from-literal=kvclientid=$(kvClientId) --from-literal=kvclientsecret=$(kvClientSecret) --from-literal=kvurl=$(kvUrl)
          kubernetesServiceConnection: $(kubernetesServiceConnection)
          namespace: $(k8sFullNamespace)    
kubernetesServiceConnection: $ (kubernetesServiceConnection) не имеет возможности разрешить
...