so i updated values like ``` persistence: ...
# troubleshooting
a
so i updated values like
Copy code
persistence:
      enabled: true
      accessMode: ReadWriteOnce
      size: 2G
      mountPath: /var/pinot/controller/data
      storageClass: ""
      extraVolumes:
        - name: gcp-credentials-volume
          secret:
            secretName: gcp-credentials
            items:
            - key: gcp_creds_json
              path: gcp_credentials.json
      extraVolumeMounts:
        - name: gcp-credentials-volume
          mountPath: /opt/pinot/gcp
          readOnly: true
but when i run helm template testing --debug .  the template it generates does not have any volume mount named `gcp-credentials-volume`, any idea's?
m
@User
x
Make sure the level of
persistence
I tried your template and it works:
Copy code
---
# Source: pinot/templates/controller/statefulset.yaml
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   <http://www.apache.org/licenses/LICENSE-2.0>
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: release-name-pinot-controller
  labels:
    <http://helm.sh/chart|helm.sh/chart>: pinot-0.2.6-SNAPSHOT
    app: pinot
    release: release-name
    <http://app.kubernetes.io/version|app.kubernetes.io/version>: "0.2.6-SNAPSHOT"
    <http://app.kubernetes.io/managed-by|app.kubernetes.io/managed-by>: Helm
    heritage: Helm
    component: controller
spec:
  selector:
    matchLabels:
      app: pinot
      release: release-name
      component: controller
  serviceName: release-name-pinot-controller-headless
  replicas: 1
  updateStrategy:
    type: RollingUpdate
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        <http://helm.sh/chart|helm.sh/chart>: pinot-0.2.6-SNAPSHOT
        app: pinot
        release: release-name
        <http://app.kubernetes.io/version|app.kubernetes.io/version>: "0.2.6-SNAPSHOT"
        <http://app.kubernetes.io/managed-by|app.kubernetes.io/managed-by>: Helm
        heritage: Helm
        component: controller
      annotations:
        {}
    spec:
      terminationGracePeriodSeconds: 30
      serviceAccountName: release-name-pinot
      securityContext:
        {}
      nodeSelector:
        {}
      affinity:
        {}
      tolerations:
        []
      containers:
      - name: controller
        securityContext:
          {}
        image: "apachepinot/pinot:latest-jdk11"
        imagePullPolicy: IfNotPresent
        args: [ "StartController", "-configFileName", "/var/pinot/controller/config/pinot-controller.conf" ]
        env:
          - name: JAVA_OPTS
            value: "-Xms256M -Xmx1G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:file=/opt/pinot/gc-pinot-controller.log -Dlog4j2.configurationFile=/opt/pinot/conf/log4j2.xml -Dplugins.dir=/opt/pinot/plugins"
        envFrom:
          []
        ports:
          - containerPort: 9000
            protocol: TCP
            name: controller
        volumeMounts:
          - name: config
            mountPath: /var/pinot/controller/config
          - name: data
            mountPath: "/var/pinot/controller/data"
          - mountPath: /opt/pinot/gcp
            name: gcp-credentials-volume
            readOnly: true
        resources:
            {}
      restartPolicy: Always
      volumes:
      - name: config
        configMap:
          name: release-name-pinot-controller-config
      - name: gcp-credentials-volume
        secret:
          items:
          - key: gcp_creds_json
            path: gcp_credentials.json
          secretName: gcp-credentials
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - "ReadWriteOnce"
        resources:
          requests:
            storage: "2G"
---
Copy code
helm template . --values values.yaml
a
so this is my chart.yaml looks
Copy code
---
apiVersion: v2
name: apache-pinot
description: Apache Pinot
version: 0.1.0
dependencies:
  - name: pinot
    repository: <https://raw.githubusercontent.com/apache/pinot/master/kubernetes/helm>
    version: v0.2.4
...
and values till controller,
Copy code
# Default values for Pinot.
pinot:
  image:
    repository: apachepinot/pinot
    tag: latest-jdk11 # release-0.7.1
    pullPolicy: IfNotPresent

  cluster:
    name: pinot-cluster

  imagePullSecrets: []

  terminationGracePeriodSeconds: 30

  securityContext: {}
    # capabilities:
    #   drop:
    #   - ALL
    # readOnlyRootFilesystem: true
    # runAsNonRoot: true
    # runAsUser: 1000

  probes:
    initialDelaySeconds: 60
    periodSeconds: 10

  serviceAccount:
    # Specifies whether a service account should be created
    create: true
    # Annotations to add to the service account
    annotations: {}
    # The name of the service account to use.
    # If not set and create is true, a name is generated using the fullname template
    name: ""

  additionalMatchLabels: {}

  # ------------------------------------------------------------------------------
  # Pinot Controller:
  # ------------------------------------------------------------------------------
  controller:
    name: controller
    replicaCount: 1
    podManagementPolicy: Parallel
    podSecurityContext: {}
      # fsGroup: 2000
    securityContext: {}

    probes:
      endpoint: "/health"
      livenessEnabled: false
      readinessEnabled: false

    persistence:
      enabled: true
      accessMode: ReadWriteOnce
      size: 2G
      mountPath: /var/pinot/controller/data
      storageClass: ""
      extraVolumes:
        - name: gcp-credentials-volume
          secret:
            secretName: gcp-credentials
            items:
            - key: gcp_creds_json
              path: gcp_credentials.json
      extraVolumeMounts:
        - name: gcp-credentials-volume
          mountPath: /opt/pinot/gcp
          readOnly: true

    vip:
      enabled: false
      host: pinot-controller
      port: 9000

    jvmOpts: "-Xms256M -Xmx1G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:file=/opt/pinot/gc-pinot-controller.log"

    log4j2ConfFile: /opt/pinot/conf/log4j2.xml
    pluginsDir: /opt/pinot/plugins

    service:
      annotations: {}
      clusterIP: "None"
      externalIPs: []
      loadBalancerIP: ""
      loadBalancerSourceRanges: []
      type: ClusterIP
      port: 9000
      nodePort: ""
      protocol: TCP
      name: controller

    external:
      enabled: false
      type: LoadBalancer
      port: 9000
      annotations: {}

    ingress:
      v1beta1:
        enabled: true
      v1:
        enabled: false
      annotations:
        <http://kubernetes.io/ingress.class|kubernetes.io/ingress.class>: nginx
        <http://kubernetes.io/tls-acme|kubernetes.io/tls-acme>: "true"
        <http://nginx.ingress.kubernetes.io/backend-protocol|nginx.ingress.kubernetes.io/backend-protocol>: "HTTP"
        <http://nginx.ingress.kubernetes.io/auth-url|nginx.ingress.kubernetes.io/auth-url>: "<https://auth.stg.domain.com/oauth2/auth>"
        <http://nginx.ingress.kubernetes.io/auth-signin|nginx.ingress.kubernetes.io/auth-signin>: "<https://auth.stg.domain.com/oauth2/start?rd=$scheme://$host$request_uri>"
      path: /
      hosts:
        - <http://pinot.stg.domain.com|pinot.stg.domain.com>
      tls:
      - secretName: pinot.stg.domain.com-cert
        hosts:
        - <http://pinot.stg.domain.com|pinot.stg.domain.com>

    # resources: {}
    resources:
      requests:
        cpu: 1000m
      limits:
        cpu: 1700m

    nodeSelector:
      service: pinot-cluster

    tolerations: []

    affinity: {}

    podAnnotations: {}

    updateStrategy:
      type: RollingUpdate

    # Use envFrom to define all of the ConfigMap or Secret data as container environment variables.
    # ref: <https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables>
    # ref: <https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#configure-all-key-value-pairs-in-a-secret-as-container-environment-variables>
    envFrom: []
    #  - configMapRef:
    #      name: special-config
    #  - secretRef:
    #      name: test-secret

    # Use extraEnv to add individual key value pairs as container environment variables.
    # ref: <https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/>
    # extraEnv: []
    #  - name: PINOT_CUSTOM_ENV
    #    value: custom-value
    extraEnv:
      # - name: AWS_ACCESS_KEY_ID
      #   value: some-mounted-access-key-id
      # - name: AWS_SECRET_ACCESS_KEY
      #   value: some-mounted-secret-access-key
      - name: GOOGLE_APPLICATION_CREDENTIALS
        value: /opt/pinot/gcp/gcp_credentials.json

    data:
      # dir: /var/pinot/controller/data
      dir: <s3://some-bucket-for-deep-store>

    # Extra configs will be appended to pinot-controller.conf file
    extra:
      configs: |-
        pinot.set.instance.id.to.hostname=true
        controller.task.scheduler.enabled=true
        controller.local.temp.dir=/tmp/pinot/
        # pinot.controller.storage.factory.class.s3=org.apache.pinot.plugin.filesystem.S3PinotFS
        # pinot.controller.storage.factory.s3.region=eu-west-1
        # pinot.controller.segment.fetcher.protocols=file,http,s3
        # pinot.controller.segment.fetcher.s3.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher
        controller.data.dir=<gs://pinot/somefolder/data/>
        controller.enable.split.commit=true
        <http://pinot.controller.storage.factory.class.gs|pinot.controller.storage.factory.class.gs>=org.apache.pinot.plugin.filesystem.GcsPinotFS
        pinot.controller.storage.factory.gs.projectId=flex-305117
        pinot.controller.storage.factory.gs.gcpKey=/opt/pinot/gcp/gcp_credentials.json
        pinot.controller.segment.fetcher.protocols=file,http,gs
        pinot.controller.segment.fetcher.gs.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher
for some reason
gcp-credentials-volume
does not show up in helm template . --values values.yaml
what version of chart did u try it on? i’m on
Copy code
- name: pinot
    repository: <https://raw.githubusercontent.com/apache/pinot/master/kubernetes/helm>
    version: v0.2.4
even the values in ingress doesnot show up in template
x
i’m on master branch
i checked out the code from github
might be that the change are not in 0.2.4
can you check if the controller statefulset template has volumes?
we can publish a new version of helmchart with new changes later today
a
let me check
this is what i see
Copy code
# Source: apache-pinot/charts/pinot/templates/controller/statefulset.yaml
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   <http://www.apache.org/licenses/LICENSE-2.0>
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: release-name-pinot-controller
  labels:
    <http://helm.sh/chart|helm.sh/chart>: pinot-0.2.4
    app: pinot
    chart: pinot-0.2.4
    release: release-name
    <http://app.kubernetes.io/version|app.kubernetes.io/version>: "0.2.4"
    <http://app.kubernetes.io/managed-by|app.kubernetes.io/managed-by>: Helm
    heritage: Helm
    component: controller
spec:
  selector:
    matchLabels:
      app: pinot
      chart: pinot-0.2.4
      release: release-name
      component: controller
  serviceName: release-name-pinot-controller-headless
  replicas: 1
  updateStrategy:
    type: RollingUpdate
  podManagementPolicy: Parallel
  template:
    metadata:
      labels:
        <http://helm.sh/chart|helm.sh/chart>: pinot-0.2.4
        app: pinot
        chart: pinot-0.2.4
        release: release-name
        <http://app.kubernetes.io/version|app.kubernetes.io/version>: "0.2.4"
        <http://app.kubernetes.io/managed-by|app.kubernetes.io/managed-by>: Helm
        heritage: Helm
        component: controller
      annotations:
        {}
    spec:
      terminationGracePeriodSeconds: 30
      serviceAccountName: release-name-pinot
      securityContext:
        {}
      nodeSelector:
        {}
      affinity:
        {}
      tolerations:
        []
      containers:
      - name: controller
        securityContext:
          {}
        image: "apachepinot/pinot:latest-jdk11"
        imagePullPolicy: IfNotPresent
        args: [ "StartController", "-configFileName", "/var/pinot/controller/config/pinot-controller.conf" ]
        env:
          - name: JAVA_OPTS
            value: "-Xms256M -Xmx1G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xlog:gc*:file=/opt/pinot/gc-pinot-controller.log -Dlog4j2.configurationFile=/opt/pinot/conf/log4j2.xml -Dplugins.dir=/opt/pinot/plugins"
        envFrom:
          []
        ports:
          - containerPort: 9000
            protocol: TCP
            name: controller
        volumeMounts:
          - name: config
            mountPath: /var/pinot/controller/config
          - name: data
            mountPath: "/var/pinot/controller/data"
        resources:
            {}
      restartPolicy: Always
      volumes:
      - name: config
        configMap:
          name: release-name-pinot-controller-config
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - "ReadWriteOnce"
        resources:
          requests:
            storage: "1G"
---
also please try to publish latest pinot and charts too i see Diana Arnos was using her own custom image as well
I will publish a new version
a
thanks a bunch
x
a
does it support latest pino with ingress helm template?
Copy code
---
apiVersion: v2
name: apache-pinot
description: Apache Pinot
version: 0.1.0
dependencies:
  - name: pinot
    repository: <https://raw.githubusercontent.com/apache/pinot/master/kubernetes/helm>
    version: v0.2.5
...
Copy code
% helm dependency build
Hang tight while we grab the latest from your chart repositories...
...Unable to get an update from the "pinot" chart repository (<https://raw.githubusercontent.com/apache/pinot/master/kubernetes/helm>):
        error converting YAML to JSON: yaml: line 31: did not find expected key
...Successfully got an update from the "superset" chart repository
...Successfully got an update from the "nginx-stable" chart repository
Update Complete. ⎈Happy Helming!⎈
Error: can't get a valid version for repositories pinot. Try changing the version constraint in Chart.yaml
x
yes
updated
helm repo update
you can try now
a
okay let me try
x
0.2.5 should have ingress change as well
just a note that the ingress is using
extensions/v1beta1
1
a
yep i see ingress + volumes properly
thanks a lot!
x
👍