Ошибка при развертывании приложений в локальном кластере K8 с использованием конвейера Azure Devops CI/CD

У меня есть локальный кластер Kubernetes, я пытаюсь построить конвейер, который выполняет следующие шаги:

  1. Создайте образ докера из репозитория.
  2. Отправьте образ докера в хаб докера.
  3. У меня есть файл манифеста.yaml, который будет выполнять развертывание приложений в кластере k8, который присутствует в репозитории в Azure Devops.

1 и 2 работают нормально, но 3 шага применения файла манифеста.yaml завершаются неудачно со следующими ошибками:

Трубопровод.yaml

trigger:
- none

resources:
- repo: self

variables:
  # Docker Hub service connection established during pipeline creation
  dockerHubServiceConnection: 'docker-registry-connection' ## Update with your Docker Hub service connection ID
  imageRepository: '786786786raees/email1_monitoring' ## Update with your Docker Hub username and repository name
  dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
  tag: '$(Build.BuildId)'

  # Agent VM image name
  vmImageName: 'ubuntu-latest'

stages:
- stage: Build
  displayName: Build and push stage
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: Docker@2
      displayName: Build and push an image to Docker Hub
      inputs:
        command: buildAndPush
        repository: $(imageRepository)
        dockerfile: $(dockerfilePath)
        containerRegistry: $(dockerHubServiceConnection)
        tags: |
          $(tag)
    
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.SourcesDirectory)'
        artifact: 'drop'
        publishLocation: 'pipeline'

- stage: Deploy
  displayName: Deploy to kubernetes
  dependsOn: Build
  jobs:  
  - job: Deploy
    displayName: Deploy POds
    pool:
      vmImage: $(vmImageName)
    steps:
    - task: DownloadPipelineArtifact@2
      inputs:
        buildType: 'current'
        artifactName: 'drop'
        targetPath: '$(Pipeline.Workspace)/drop'
         
    - task: KubernetesManifest@1
      inputs:
        action: 'deploy'
        connectionType: 'kubernetesServiceConnection'
        kubernetesServiceConnection: 'k8s_connection'
        namespace: 'conn-devops'
        manifests: '$(Pipeline.Workspace)/drop/manifest.yaml'
        arguments: '--validate=false'

Я также создал пространство имен и учетную запись службы, упомянутые в файле yaml, и присвоил ему роли и привязки ролей, чего мне сейчас не хватает. У меня также есть подключение к службе с использованием учетной записи службы


59
1

Ответ:

Решено

Судя по предоставленной вами информации, вы используете агенты, размещенные в Microsoft, для запуска задания развертывания. Если на вашем локальном сервере применены некоторые правила брандмауэра, агенты, размещенные в Microsoft, могут не иметь доступа к серверу.

вы можете попытаться настроить Самостоятельный агент на своем сервере для запуска задания развертывания. Поскольку агент размещается на серверной машине, он может получить доступ к серверу Kubernetes.