Я также могу принять, если есть способ опубликовать мой файл yaml в kubernetes api и создать все ресурсы в нем
Затем вы можете просто объединить все отдельные файлы yaml в один большой файл yaml, но каждый из них будет разделен на ---
между ними.
Например, чтобы установить kubernetes-dashboard, вы просто используете: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
, проверка этого файла yaml выявляет необходимую вам структуру (отрывок ниже):
...
# ------------------- Dashboard Secret ------------------- #
apiVersion: v1
kind: Secret
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard-certs
namespace: kube-system
type: Opaque
---
# ------------------- Dashboard Service Account ------------------- #
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
---
# ------------------- Dashboard Role & Role Binding ------------------- #
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubernetes-dashboard-minimal
...
где каждый блок между комментариями может быть отдельным файлом yaml. Обратите внимание, что комментарии являются необязательными, а разделитель между содержимым отдельных файлов yaml - ---
.
Только некоторые sidenotes:
- хотя это несколько практично для конечных развертываний, если вы склеиваете все свои отдельные файлы yaml в такой файл mega-all-in-one.yaml, то все, что вы делаете с ним - (создайте / обновите / примените / удалите. ..) Вы делаете для всех ресурсов, перечисленных внутри.
- Если это не «общий» файл для запуска с какого-либо сетевого ресурса, тогда может быть проще использовать
--recursive
переключиться на kubectl, как описано в официальной документации , и запускать для папки, содержащей все отдельные файлы yaml. Таким образом, вы сохраняете возможность индивидуально выбрать любой файл yaml и можете развернуть / удалить / применить ... все сразу, если вы выберете это ...