Ошибка YAML в Helm Chart при преобразовании YAML в JSON: YAML: строка 93: не найден ожидаемый ключ - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь включить cloudqlproxy в тот же модуль, в котором находится мой GHOST-контейнер. Однако у меня возникают проблемы при добавлении cloudsqlproxy к модулю, связанному с линтированием файла YAML.

Ошибка, которую он мне дает, вводит в заблуждение, поскольку проблема, скорее всего, не связана со строкой, которую он говорит.

{{- if include "ghost.host" . -}}
apiVersion: {{ template "ghost.deployment.apiVersion" . }}
kind: Deployment
metadata:
  name: {{ template "ghost.fullname" . }}
  labels:
    app: "{{ template "ghost.fullname" . }}"
    chart: "{{ template "ghost.chart" . }}"
    release: {{ .Release.Name | quote }}
    heritage: {{ .Release.Service | quote }}
spec:
  selector:
    matchLabels:
      app: "{{ template "ghost.fullname" . }}"
      release: {{ .Release.Name | quote }}
  replicas: 3
  template:
    metadata:
      labels:
        app: "{{ template "ghost.fullname" . }}"
        chart: "{{ template "ghost.chart" . }}"
        release: {{ .Release.Name | quote }}
    spec:
      {{- if .Values.securityContext.enabled }}
      securityContext:
        fsGroup: {{ .Values.securityContext.fsGroup }}
        runAsUser: {{ .Values.securityContext.runAsUser }}
      {{- else }}
      initContainers:
      - name: volume-permissions
        image: {{ template "ghost.volumePermissions.image" . }}
        imagePullPolicy: "{{ .Values.volumePermissions.image.pullPolicy }}"
        command: ['sh', '-c', 'chmod -R g+rwX {{ .Values.persistence.path }}']
      volumeMounts:
      - mountPath: {{ .Values.persistence.path }}
        name: ghost-data
      {{- end }}
{{- include "ghost.imagePullSecrets" . | indent 6 }}
      containers:
      - name : cloudsql-proxy
        image: gcr.io/cloudsql-docker/gce-proxy:1.16
        command:
          - -/cloudsql_sql_proxy
          - --dir=/cloudsql
          - -instances=infrastructure-0000:europe-west4:blablabla=tcp:3306
                {{- if or .Values.serviceAccountKey .Values.existingSecret -}}
          - -credential_file=/secrets/cloudsql/{{- if .Values.existingSecret -}} {{ .Values.existingSecretKey }} {{- else -}} credentials.json {{- end }}
            {{end}}
        securityContext:
          runAsUser: 2
          AllowPrivilegeEscalation: false
        volumeMounts:
          - name: cloudsql-instance-credentials
            mountPath: /secrets/cloudsql
      - name: {{ template "ghost.fullname" . }}
        image: {{ template "ghost.image" . }}
        imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
        env:
        - name: ALLOW_EMPTY_PASSWORD
        {{- if .Values.allowEmptyPassword }}
          value: "yes"
        {{- else }}
          value: "no"
        {{- end }}
        - name: MARIADB_HOST
        {{- if .Values.mariadb.enabled }}
          value: {{ template "ghost.mariadb.fullname" . }}
        {{- else }}
          value: {{ .Values.externalDatabase.host | quote }}
        {{- end }}
        - name: MARIADB_PORT_NUMBER
        {{- if .Values.mariadb.enabled }}
          value: "3306"
        {{- else }}
          value: {{ .Values.externalDatabase.port | quote }}
        {{- end }}
        - name: GHOST_DATABASE_NAME
        {{- if .Values.mariadb.enabled }}
          value: {{ .Values.mariadb.db.name | quote }}
        {{- else }}
          value: {{ .Values.externalDatabase.database | quote }}
        {{- end }}
        - name: GHOST_DATABASE_USER
        {{- if .Values.mariadb.enabled }}
          value: {{ .Values.mariadb.db.user | quote }}
        {{- else }}
          value: {{ .Values.externalDatabase.user | quote }}
        {{- end }}
        - name: GHOST_DATABASE_PASSWORD
        {{- if .Values.mariadb.enabled }}
          valueFrom:
            secretKeyRef:
              name: {{ template "ghost.mariadb.fullname" . }}
              key: mariadb-password
        {{- else }}
          value: {{ .Values.externalDatabase.password | quote }}
        {{- end }}
        - name: GHOST_HOST
          value: {{ include "ghost.host" . | quote }}
        - name: GHOST_PROTOCOL
          value: {{  .Values.ghostProtocol | quote }}
        - name: GHOST_PORT_NUMBER
        {{- if .Values.ghostPort }}
          value: {{ .Values.ghostPort | quote }}
        {{- else }}
          value: {{ .Values.service.port | quote }}
        {{- end }}
        - name: GHOST_USERNAME
          value: {{ .Values.ghostUsername | quote }}
        - name: GHOST_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ template "ghost.fullname" . }}
              key: ghost-password
        - name: GHOST_EMAIL
          value: {{ .Values.ghostEmail | quote }}
        - name: BLOG_TITLE
          value: {{ .Values.ghostBlogTitle | quote }}
        {{- if .Values.smtpHost }}
        - name: SMTP_HOST
          value: {{ .Values.smtpHost | quote }}
        {{- end }}
        {{- if .Values.smtpPort }}
        - name: SMTP_PORT
          value: {{ .Values.smtpPort | quote }}
        {{- end }}
        {{- if .Values.smtpUser }}
        - name: SMTP_USER
          value: {{ .Values.smtpUser | quote }}
        {{- end }}
        {{- if .Values.smtpPassword }}
        - name: SMTP_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ template "ghost.fullname" . }}
              key: smtp-password
        {{- end }}
        {{- if .Values.smtpFromAddress }}
        - name: SMTP_FROM_ADDRESS
          value: {{ .Values.smtpFromAddress | quote }}
        {{- end }}
        {{- if .Values.smtpService }}
        - name: SMTP_SERVICE
          value: {{ .Values.smtpService | quote }}
        {{- end }}
        ports:
        - name: http
          containerPort: 2368
        {{- if .Values.livenessProbe.enabled }}
        livenessProbe:
          httpGet:
            path: {{ .Values.ghostPath }}
            port: http
            httpHeaders:
            - name: Host
              value: {{ include "ghost.host" . | quote }}
            {{- if eq .Values.ghostProtocol "https" }}
            - name: X-Forwarded-Proto
              value: https
            {{- end }}
          initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
          periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
          timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
          successThreshold: {{ .Values.livenessProbe.successThreshold }}
          failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
        {{- end }}
        {{- if .Values.readinessProbe.enabled }}
        readinessProbe:
          httpGet:
            path: {{ .Values.ghostPath }}
            port: http
            httpHeaders:
            - name: Host
              value: {{ include "ghost.host" . | quote }}
            {{- if eq .Values.ghostProtocol "https" }}
            - name: X-Forwarded-Proto
              value: https
            {{- end }}zshzs
          initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
          periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
          timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
          successThreshold: {{ .Values.readinessProbe.successThreshold }}
          failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
        {{- end }}
        {{- if .Values.resources }}
        resources: {{- toYaml .Values.resources | nindent 10 }}
        {{- end }}
        volumeMounts:
        - name: ghost-data
          mountPath: /bitnami/ghost
      volumes:
      - name: cloudsql-instance-credentials
        secret:
          secretName: "calm-com-tls"
      - name: ghost-data
      {{- if .Values.persistence.enabled }}
        persistentVolumeClaim:
          claimName: {{ template "ghost.fullname" . }}
      {{- else }}
        emptyDir: {}
      {{- end }}
      {{- with .Values.nodeSelector }}
      nodeSelector:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      {{- with .Values.affinity }}
      affinity:
        {{- toYaml . | nindent 8 }}
      {{- end }}
{{- end -}}

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Просьба проверить раздел volumeMounts в контейнере init. Думаю, отступ не правильный.

0 голосов
/ 24 марта 2020

Я бы изменил секцию GHOST_DATABASE_PASSWORD, чтобы она выглядела так:

        - name: GHOST_DATABASE_PASSWORD
          valueFrom:
            secretKeyRef:
            {{- if .Values.mariadb.enabled }}
              name: {{ template "ghost.mariadb.fullname" . }}
              key: mariadb-password
            {{- else }}
              name: {{ printf "%s-%s" .Release.Name "externaldb" }}
              key: db-password
            {{- end }}

где:

data:
  db-password: {{ .Values.externalDatabase.password | b64enc | quote }}

Пример: helm-chart-secret .

...