Рубрики
Uncategorized

Среда Azure DevOps для Kubernetes объяснила

Лазурные трубопроводы — отличный инструмент для непрерывной интеграции и непрерывного развертывания и спасибо … Теги с DevOps, Azure, Pipelines, Kubernetes.

Среда Azure DevOps (4 серии деталей)

Azure Pipelines — отличный инструмент для непрерывной интеграции и непрерывного развертывания, и благодаря многоэтапным трубопроводам мы, наконец, сможем создать, тестировать и выпускать, непосредственно выраженные в исходном коде.

В последнее время они также представили концепцию «среды», которая принадлежит процессу выпуска.

В предыдущей статье этой серии мы рассмотрели окружающую среду в целом.

Сегодня вместо этого мы углубимся в это, и мы рассмотрим интеграцию между окружающей средой и Kubernetes кластеры.

Фактически, ресурс Kubernetes является первым, который был предоставлен в средах Azure DevOps, и это тот, который предоставляет большинство функций.

Давайте сначала посмотрим, что мы можем с этим сделать, а затем как это настроить.

видео

Если вы Визуальный ученик Или просто предпочитаю посмотреть и слушать вместо того, чтобы читать, здесь у вас есть видео со всем объяснением, которое будет честно, гораздо более полное, чем этот пост.

Если вы предпочитаете читать, хорошо … давайте просто продолжим:)

Развертывание

Когда вы нажимаете на среду, у вас есть 2 отдельных вкладка: ресурсы и развертывание.

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

Просто очень быстро, здесь вы можете увидеть Что было развернуто и когда Отказ

Например, я вижу, что это развертывание произошло из развернуть Работа K8S_CICD Трубопроводы, пробежав 25 мая.

Кроме того, если я зайду внутрь, я увижу, какие изменения включены (и у меня есть видимость до одного файла различия):

И что все это было изначально запланировано в связанных работах, здесь, например, ошибка и задача:

Спасибо Полная интеграция Из всех частей Lazure DEVOPS у нас полностью прослеживаемость от управления работой до развертывания, и все, между ними.

Но, как мы видели в предыдущей статье, это связано с любой средой, не только с Kubernetes. Итак, давайте посмотрим, что уникально в этом.

Ресурсы

Вкладка на страницу окружающей среды, вкладка «Ресурсы» — это место, где происходит волшебство.

На самом деле здесь я могу в основном исследовать Контент Из моих кластер Кубератусов!

Опять же, у нас есть две вкладки здесь: рабочие нагрузки и услуги.

Рабочие нагрузки перечисляют Развертывания С их Реплика наборы :

Вы можете сверлить в реплику, установленную, чтобы увидеть его детали и Стручки Он работает на:

Обратите внимание, что здесь вы можете увидеть не только изображение, связанное с этим развертыванием, но и его меткой и селекторами (если таковые имеются).

Наконец, бурение в капсулу, вы можете увидеть его полную информацию:

Но это еще не все, вы можете пойти еще глубже. На самом деле, мы можем увидеть Журналы POD производит:

и даже полный Yaml стручка, приходящего прямо из K8S!

Если вам интересно с контентом YAML, это то, что вы получаете:

apiVersion: v1
kind: Pod
metadata:
  name: webserver-7f6cf4c486-4mtcj
  generateName: webserver-7f6cf4c486-
  namespace: default
  selfLink: /api/v1/namespaces/default/pods/webserver-7f6cf4c486-4mtcj
  uid: 536bafd1-9d45-44d3-b674-3e0d91345d1c
  resourceVersion: '899183'
  creationTimestamp: '2020-05-19T06:17:44Z'
  labels:
    app: nginx
    pod-template-hash: 7f6cf4c486
  annotations:
    azure-pipelines/jobName: '"Deploy"'
    azure-pipelines/org: 'https://dev.azure.com/dbtek/'
    azure-pipelines/pipeline: '"K8S_CICD"'
    azure-pipelines/pipelineId: '"65"'
    azure-pipelines/project: AKSEnvironmentDemo
    azure-pipelines/run: '20200525.1'
    azure-pipelines/runuri: 'https://dev.azure.com/dbtek/AKSEnvironmentDemo/_build/results?buildId=1058'
    cni.projectcalico.org/podIP: 10.244.1.9/32
  ownerReferences:
    - apiVersion: apps/v1
      kind: ReplicaSet
      name: webserver-7f6cf4c486
      uid: 1daf0d4e-5daf-4926-a4ee-42c735fb0071
      controller: true
      blockOwnerDeletion: true
spec:
  volumes:
    - name: default-token-mcfjv
      secret:
        secretName: default-token-mcfjv
        defaultMode: 420
  containers:
    - name: nginx
      image: 'nginx:1.17.10'
      ports:
        - containerPort: 80
          protocol: TCP
      resources: {}
      volumeMounts:
        - name: default-token-mcfjv
          readOnly: true
          mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      imagePullPolicy: IfNotPresent
  restartPolicy: Always
  terminationGracePeriodSeconds: 30
  dnsPolicy: ClusterFirst
  serviceAccountName: default
  serviceAccount: default
  nodeName: aks-agentpool-17828392-vmss000002
  securityContext: {}
  schedulerName: default-scheduler
  tolerations:
    - key: node.kubernetes.io/not-ready
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300
    - key: node.kubernetes.io/unreachable
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 300
  priority: 0
  enableServiceLinks: true
status:
  phase: Running
  conditions:
    - type: Initialized
      status: 'True'
      lastProbeTime: null
      lastTransitionTime: '2020-05-19T06:17:44Z'
    - type: Ready
      status: 'True'
      lastProbeTime: null
      lastTransitionTime: '2020-05-19T06:17:56Z'
    - type: ContainersReady
      status: 'True'
      lastProbeTime: null
      lastTransitionTime: '2020-05-19T06:17:56Z'
    - type: PodScheduled
      status: 'True'
      lastProbeTime: null
      lastTransitionTime: '2020-05-19T06:17:44Z'
  hostIP: 10.240.0.6
  podIP: 10.244.1.9
  podIPs:
    - ip: 10.244.1.9
  startTime: '2020-05-19T06:17:44Z'
  containerStatuses:
    - name: nginx
      state:
        running:
          startedAt: '2020-05-19T06:17:56Z'
      lastState: {}
      ready: true
      restartCount: 0
      image: 'nginx:1.17.10'
      imageID: >-
        docker-pullable://nginx@sha256:30dfa439718a17baafefadf16c5e7c9d0a1cde97b4fd84f63b69e13513be7097
      containerID: >-
        docker://6c8ebc8692033d4a0e92fe247fa4970ed77d664876cf42a7b8f5bad012eb2c68
      started: true
  qosClass: BestEffort

Мне это нравится, это так полезно, и все в одном инструменте позволяет вам сосредоточиться на гораздо больше!

Теперь, когда мы исследовали, что мы можем сделать с этим, давайте посмотрим, как создать новую среду для Kubernetes в Azure Tipвей.

Создайте среду Kubernetes

Прежде всего, само собой разумеется, вам нужно иметь кластер Kubernetes. Я всегда использую AKS в Azure, потому что это управляемый сервис И мне не нужно платить за главные узлы 😉

А использование AKS также намного проще связывать кластер с Azure DevOps.

Прежде всего, давайте перейдем к разделу окружающей среды под трубопроводами и нажмите « новая среда ».

Давайте дадим среде имя и выберите » Kubernetes «Как тип ресурса.

Здесь вы можете установить, хотите ли вы использовать AKS или любые другие кластер Kubernetes. Если вы пойдете на общие Kubernetes, вам нужно введите все параметры вручную и настроить свой кластер, чтобы он был достигнут из Azure DevOps.

Но если вы выберете AK, вам будет предложено выбором напрямую.

Просто выберите подписку Azure и кластер и выберите пространство имен, которое вы хотите связать. На самом деле Каждый ресурсный карта к конкретному пространству имен в вашем кластере Отказ

Если у вас уже есть среда, связанная с вашим по умолчанию Пространство имен, вы можете создать новый.

Для этого поста я решил назвать новую среду Вторичный и создать новые пространства имен, называемые app2ns Отказ

Это, конечно, работает, если учетная запись, с которой вы обращаетесь к Azure DEVOPS, имеет правильные разрешения в вашей подписке Azure.

И это все! Конечно, так как мы только что создали его, это совершенно пусто.

Теперь Все, что нам нужно сделать, это использовать эту среду в Работа по развертыванию из трубопровода, чтобы иметь все то, что мы видели раньше.

Давайте использовать его в трубопроводе

Как уже упоминалось, вам нужно иметь трубопровод, который использует Работа по развертыванию , не «нормальный».

Затем добавьте обстановку к ней. Формат для использования — « Environmentmanme Dot Namespace ». В моем случае это Secondary.app2namespace

Это фрагмент:

- stage: CD
  displayName: CD Stage
  dependsOn: CI
  jobs:

  - deployment: deploy
    displayName: Deploy
    environment: Secondary.app2namespace
    strategy: 
      runOnce:
        deploy:
          steps: 

          - task: KubernetesManifest@0
            inputs:
              action: 'deploy'
              manifests: '$(Pipeline.Workspace)/YAML Files/k8s/App2.yaml'

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

Если вы тогда внесете изменения в свой код, это запустит весь процесс CI CD и соберет все компоненты: код, рабочие элементы, сборка и развертывание.

Вывод

Круто верно? Я имею в виду, есть кулерные вещи, чем это Но все они во внешнем мире … как, реальный мир … Вы знаете, что я имею в виду: D

Хорошо, это то, как использовать среды Azure DevOps для Kubernetes и насколько удивительно и полезным так.

Примеры

Взгляните на мой Видео на YouTube здесь Чтобы увидеть, как создавать, управлять и использовать среды для Kubernetes в Azure DevOps.

Мол, поделиться и следуй за мной 🚀 Для большего содержания:

📽 YouTube ☕. Купить мне кофе 💖 Patreon 🌐 Веб-сайт CODERDAVE.IO 👕 Merch 👦🏻 Страница Facebook 🐱‍💻 GitHub 👲🏻 Twitter 👴🏻 LinkedIn 🔉 Подкаст

Среда Azure DevOps (4 серии деталей)

Оригинал: «https://dev.to/n3wt0n/azure-devops-environments-for-kubernetes-explained-5ha»