Цель: 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) не имеет возможности разрешить