Как развернуть кучу файлов yaml? - PullRequest
0 голосов
/ 15 апреля 2020

Я хотел бы развернуть несколько файлов yaml https://github.com/quay/quay/tree/master/deploy/k8s на моем кластере kubernetes и хотел бы знать, каков наилучший подход для их одновременного развертывания.

Ответы [ 4 ]

3 голосов
/ 15 апреля 2020

Вы можете использовать Helm (менеджер пакетов для Kubernetes). Так же, как мы используем yum или apt-get для Linux, мы используем helm для k8.

Используя Helm, вы можете развернуть несколько ресурсов (связку YAML) в одном go. Графики руля помогают вам определять, устанавливать и обновлять даже самые сложные приложения Kubernetes. Helm использует формат упаковки, называемый чартами. Диаграмма - это набор файлов, которые описывают связанный набор ресурсов Kubernetes. Одна диаграмма может использоваться для развертывания чего-то простого, например модуля memcached, или чего-то сложного, например полного стека веб-приложений с HTTP-серверами, базами данных, кэшами и т. Д. Кроме того, вам не нужно объединять все свои YAML; они могут оставаться отдельными как часть данного графика. Кроме того, если одна диаграмма зависит от другой, вы можете использовать функцию helm dependency .

Причина, по которой я использую Helm, заключается в том, что всякий раз, когда я развертываю диаграмму, helm отслеживает ее как релиз. Любые изменения в графике получают новую версию выпуска. Таким образом, обновление (или откат) становится очень простым, и вы можете с уверенностью сказать, что было частью данного выпуска.

Кроме того, если у вас есть разные микросервисы, которые имеют общие черты, то helm предоставляет функцию под названием Библиотечная диаграмма, с помощью которой вы можете создавать определения, которые можно повторно использовать в разных диаграммах, сохраняя при этом ваши диаграммы DRY.

Посмотрите это вступительное видео: https://www.youtube.com/watch?v=Zzwq9FmZdsU&t=2s

2 голосов
/ 15 апреля 2020

kubectl apply -f <folder-name>

Простой способ развертывания всех файлов в данной папке.

2 голосов
/ 15 апреля 2020

Я бы посоветовал связать yaml в один. Цель развертывания и обслуживания yaml состоит в том, чтобы развернуть ваше приложение в кластере одним нажатием oop. Вы можете определить множество развертываний и служб в одном файле. В вашем случае такой инструмент, как Kustomize, поможет вам объединить их. Kustomize поставляется с предустановленной kubectl.

Вы можете объединить ваши yaml, называемые многоресурсным yaml, в один файл, используя оператор ---. то есть

apiVersion: v1
kind: Service
metadata:
  name: foo
spec:
...
---
apiVersion: v1
kind: Service
metadata:
  name: bar
spec:
...

Затем создайте файл kustomization.yaml, который объединяет все ваши многоресурсные ресурсы. Здесь есть хорошее руководство: https://levelup.gitconnected.com/kubernetes-merge-multiple-yaml-into-one-e8844479a73a

Документация от k8 находится здесь: https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/

1 голос
/ 15 апреля 2020

Вы можете напрямую применить папку

kubectl create -f ./<foldername>

kubectl apply -f ./<foldername>

Вы также можете добавить файлы mutiliple в одну команду

kubectl apply -f test.yaml,test-1.yaml

Вы также можете объединить все файлы YAML в один файл и управлять им в дальнейшем. .

Файл YAML Marge с использованием ---

Например:

apiVersion: v1
kind: Service
metadata:
  name: test-data
  labels:
    app: test-data
spec:
  ports:
  - name: http
    port: 80
    targetPort: 9595
  - name: https
    port: 9595
    targetPort: 9595
  selector:
    app: test-data
    tier: frontend
---
apiVersion: v1
kind: Service
metadata:
  name: test-app
  labels:
    app: test-app
spec:
  ports:
  - name: http
    port: 80
    targetPort: 9595
  - name: https
    port: 9595
    targetPort: 9595
  selector:
    app: test-app
    tier: frontend
...