В идеальном мире вам не придется выполнять несколько шагов для рендеринга, но, к сожалению, мы не живем в идеальном мире …
В настоящее время большинство приложений, которые предназначены для развертывания в Kubernetes, предоставляют диаграмму Helm для облегчения развертывания. К сожалению, иногда диаграмма рулевой группы недостаточно гибкая, чтобы делать то, что вы хотите сделать, поэтому вам нужно раскошелиться, внести свой вклад и надеяться, что ваш вклад быстро объединен вверх, чтобы вам не приходилось поддерживать свою вилку.
Вместо того, чтобы указывать на свою вилку, вы можете использовать Kustomize Чтобы применить некоторые пост-Ренденды к своему выпуску хлеба. Это возможно изначально, так как Helm 3.1 с использованием -POST-Process
флаг .
В Camptocamp мы используем Argocd управлять развертыванием наших объектов в Kubernetes. Давайте посмотрим, как мы можем использовать Kustomize, чтобы сделать пост-серидинг Helm Hardts в ArgoCD:
Сначала объявьте новый плагин управления конфигурацией в свой argocd-cm
configmap (Способ сделать это зависит от того, как вы развернули argocd):
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd data: configManagementPlugins: | - name: kustomized-helm init: command: ["/bin/sh", "-c"] args: ["helm dependency build || true"] generate: command: ["/bin/sh", "-c"] args: ["helm template . --name-template $ARGOCD_APP_NAME --namespace $ARGOCD_APP_NAMESPACE --include-crds > all.yaml && kustomize build"]
Затем добавьте Kustomization.yaml
Файл рядом с вашим приложением Chart.yaml
файл:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - all.yaml patchesJson6902: - target: group: apps version: v1 kind: Deployment name: myapplication patch: |- - op: remove path: /spec/template/spec/securityContext
Теперь настройте свой Приложения
объект для использования этого плагина:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: myapplication namespace: argocd spec: project: myproject source: path: myapplication repoURL: {{ .Values.spec.source.repoURL }} targetRevision: {{ .Values.spec.source.targetRevision }} plugin: name: kustomized-helm destination: namespace: myproject server: {{ .Values.spec.destination.server }}
И … вуаля!
Одна вещь, которую я часто делаю, это использовать Spec.Source.Helm
в моем Приложение
Объект для передачи некоторых значений, которые исходят из моего Приложение приложений Анкет Это невозможно использовать плагин конфигурации в качестве клавиш Хелм
и плагин
взаимоисключающие.
Обходной путь, который я обнаружил, — это использовать Envs. Вы должны изменить конфигурацию плагина управления конфигурацией на (обратите внимание на $ helm_args
):
apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd data: configManagementPlugins: | - name: kustomized-helm init: command: ["/bin/sh", "-c"] args: ["helm dependency build || true"] generate: command: ["/bin/sh", "-c"] args: ["echo \"$HELM_VALUES\" | helm template . --name-template $ARGOCD_APP_NAME --namespace $ARGOCD_APP_NAMESPACE $HELM_ARGS -f - --include-crds > all.yaml && kustomize build"]
Тогда вы сможете использовать это в своем Заявление
:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: myapplication namespace: argocd spec: project: myproject source: path: myapplication repoURL: {{ .Values.spec.source.repoURL }} targetRevision: {{ .Values.spec.source.targetRevision }} plugin: name: kustomized-helm env: - name: HELM_ARGS value: "--set targetRevision={{ .Values.spec.source.targetRevision }}" destination: namespace: myproject server: {{ .Values.spec.destination.server }}
Или же
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: myapplication namespace: argocd spec: project: myproject source: path: myapplication repoURL: {{ .Values.spec.source.repoURL }} targetRevision: {{ .Values.spec.source.targetRevision }} plugin: name: kustomized-helm env: - name: HELM_VALUES value: | targetRevision: {{ .Values.spec.source.targetRevision }} destination: namespace: myproject server: {{ .Values.spec.destination.server }}
Оригинал: «https://dev.to/camptocamp-ops/use-kustomize-to-post-render-helm-charts-in-argocd-2ml6»