2

I'm getting the following error, when I try to deploy nexus using Kubernetes.

Command: kubectl appy -f templates/deployment.yaml

error parsing templates/deployment.yaml: json: line 1: invalid character '{' looking for beginning of object key string

Please find the below code which I'm trying:

  {{- if .Values.localSetup.enabled }}
  apiVersion: apps/v1
  kind: Deployment
    {{- else }}
  apiVersion: apps/v1
  kind: StatefulSet
    {{- end }}
  metadata:
    labels:
      app: nexus
    name: nexus
  spec:
    replicas: 1
    selector:
      matchLabels:
        app: nexus
    template:
      metadata:
        labels:
          app: nexus
      spec:
    {{- if .Values.localSetup.enabled }}
  volumes:
    - name: nexus-data
      persistentVolumeClaim:
        claimName: nexus-pv-claim
    - name: nexus-data-backup
      persistentVolumeClaim:
        claimName: nexus-backup-pv-claim
    {{- end }}
  containers:
    - name: nexus
      image: "quay.io/travelaudience/docker-nexus:3.15.2"
      imagePullPolicy: Always
      env:
        - name: INSTALL4J_ADD_VM_PARAMS
          value: "-Xms1200M -Xmx1200M -XX:MaxDirectMemorySize=2G -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap"
      resources:
        requests:
          cpu: 250m
          memory: 4800Mi
      ports:
        - containerPort: {{ .Values.nexus.dockerPort }}
          name: nexus-docker-g
        - containerPort: {{ .Values.nexus.nexusPort }}
          name: nexus-http
      volumeMounts:
        - mountPath: "/nexus-data"
          name: nexus-data
        - mountPath: "/nexus-data/backup"
          name: nexus-data-backup
    {{- if .Values.useProbes.enabled }}
  livenessProbe:
    httpGet:
      path: {{ .Values.nexus.livenessProbe.path }}
      port: {{ .Values.nexus.nexusPort }}
    initialDelaySeconds: {{ .Values.nexus.livenessProbe.initialDelaySeconds }}
    periodSeconds: {{ .Values.nexus.livenessProbe.periodSeconds }}
    failureThreshold: {{ .Values.nexus.livenessProbe.failureThreshold }}
    {{- if .Values.nexus.livenessProbe.timeoutSeconds }}
  timeoutSeconds: {{ .Values.nexus.livenessProbe.timeoutSeconds }}
    {{- end }}
  readinessProbe:
    httpGet:
      path: {{ .Values.nexus.readinessProbe.path }}
      port: {{ .Values.nexus.nexusPort }}
    initialDelaySeconds: {{ .Values.nexus.readinessProbe.initialDelaySeconds }}
    periodSeconds: {{ .Values.nexus.readinessProbe.periodSeconds }}
    failureThreshold: {{ .Values.nexus.readinessProbe.failureThreshold }}
    {{- if .Values.nexus.readinessProbe.timeoutSeconds }}
  timeoutSeconds: {{ .Values.nexus.readinessProbe.timeoutSeconds }}
    {{- end }}
    {{- end }}

    {{- if .Values.nexusProxy.enabled }}
                    - name: nexus-proxy
                      image: "quay.io/travelaudience/docker-nexus-proxy:2.4.0_8u191"
                      imagePullPolicy: Always
                      env:
                        - name: ALLOWED_USER_AGENTS_ON_ROOT_REGEX
                          value: "GoogleHC"
                        - name: CLOUD_IAM_AUTH_ENABLED
                          value: "false"
                        - name: BIND_PORT
                          value: {{ .Values.nexusProxy.targetPort | quote }}
                        - name: ENFORCE_HTTPS
                          value: "false"
                      {{- if .Values.localSetup.enabled }}
                    - name: NEXUS_DOCKER_HOST
                      value: {{ .Values.nexusProxy.nexusLocalDockerhost }}
                    - name: NEXUS_HTTP_HOST
                      value: {{ .Values.nexusProxy.nexusLocalHttphost }}
                      {{- else }}
                    - name: NEXUS_DOCKER_HOST
                      value: {{ .Values.nexusProxy.nexusDockerHost}}
                    - name: NEXUS_HTTP_HOST
                      value: {{ .Values.nexusProxy.nexusHttpHost }}
                      {{- end }}
                    - name: UPSTREAM_DOCKER_PORT
                      value: {{ .Values.nexus.dockerPort | quote }}
                    - name: UPSTREAM_HTTP_PORT
                      value: {{ .Values.nexus.nexusPort | quote }}
                    - name: UPSTREAM_HOST
                      value: "localhost"
  ports:
    - containerPort: {{ .Values.nexusProxy.targetPort }}
      name: proxy-port
    {{- end }}
    {{- if .Values.nexusBackup.enabled }}
    - name: nexus-backup
      image: "quay.io/travelaudience/docker-nexus-backup:1.4.0"
      imagePullPolicy: Always
      env:
        - name: NEXUS_AUTHORIZATION
          value: false
        - name: NEXUS_BACKUP_DIRECTORY
          value: /nexus-data/backup
        - name: NEXUS_DATA_DIRECTORY
          value: /nexus-data
        - name: NEXUS_LOCAL_HOST_PORT
          value: "localhost:8081"
        - name: OFFLINE_REPOS
          value: "maven-central maven-public maven-releases maven-snapshots"
        - name: TARGET_BUCKET
          value: "gs://nexus-backup"
        - name: GRACE_PERIOD
          value: "60"
        - name: TRIGGER_FILE
          value: .backup
      volumeMounts:
        - mountPath: /nexus-data
          name: nexus-data
        - mountPath: /nexus-data/backup
          name: nexus-data-backup
  terminationGracePeriodSeconds: 10

    {{- end }}

    {{- if .Values.persistence.enabled }}
  volumeClaimTemplates:
    - metadata:
        name: nexus-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 32Gi
        storageClassName: {{ .Values.persistence.storageClass }}
    - metadata:
        name: nexus-data-backup
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 32Gi
        storageClassName: {{ .Values.persistence.storageClass }}
    {{- end }}
halfer
  • 19,824
  • 17
  • 99
  • 186
  • 1
    The template you provided here is the part of helm chart, which can be deployed using `helm` cli, not using `kubectl apply`. – mchawre Sep 05 '19 at 11:36
  • thanks for the reply. do you have any guide or relevant commands to try! –  Sep 05 '19 at 11:38
  • The code from where you pulled this helm chart, should have the instructions to install that chart. – mchawre Sep 05 '19 at 11:39

1 Answers1

2

The template you provided here is the part of helm chart, which can be deployed using helm-cli, not using kubectl apply.

More info on using helm is here.

You can also get the instructions to install nexus using helm in this official stable helm chart.

Hope this helps.

mchawre
  • 10,744
  • 4
  • 35
  • 57