Среда 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»