Helm Chart Installation

Installation

Prepare Customized values.yaml for Pulsar

Apache Pulsar is a scalable high-performance message broker. Default values from the original Helm chart are a bit oversized for our needs. To decrease the resource requirements, you should use the following customized settings.

Note: On air-gapped installations, update all occurrences of apachepulsar/pulsar to point to your local Docker registry.

Note: Update storageClassName according to your setup (see kubectl get storageclass output). The storageClass will differ on different cloud providers and Kubernetes installations.

# file name: customized-values-pulsar.yaml
components:
  functions: false
  proxy: false
  pulsar_manager: false
  toolset: false
monitoring:
  alert_manager: false
  grafana: false
  node_exporter: false
  prometheus: false
images:
  autorecovery:
    repository: apachepulsar/pulsar
  bookie:
    repository: apachepulsar/pulsar
  broker:
    repository: apachepulsar/pulsar
  zookeeper:
    repository: apachepulsar/pulsar
zookeeper:
  volumes:
    data:
      name: data
      size: 2Gi
      storageClassName: mystorageclass
bookkeeper:
  configData:
    PULSAR_MEM: >
            -Xms128m -Xmx256m -XX:MaxDirectMemorySize=128m
  metadata:
    image:
      repository: apachepulsar/pulsar
  replicaCount: 3
  resources:
    requests:
      cpu: 0.2
      memory: 128Mi
  volumes:
    journal:
      name: journal
      size: 5Gi
      storageClassName: mystorageclass
    ledgers:
      name: ledgers
      size: 5Gi
      storageClassName: mystorageclass
pulsar_metadata:
  image:
    repository: apachepulsar/pulsar
broker:
  configData:
    PULSAR_MEM: >
            -Xms128m -Xmx256m -XX:MaxDirectMemorySize=128m
    subscriptionExpirationTimeMinutes: "5"
    webSocketServiceEnabled: "true"
  replicaCount: 2
  resources:
    requests:
      cpu: 0.2
      memory: 256Mi

Apache Pulsar Chart

This command will deploy Apache Pulsar from extracted Helm chart directory ./pulsar.

$ helm install --namespace pulsar --version 2.6.1-2 \
    -f customized-values-pulsar.yaml --set initialize=true \
    pulsar ./pulsar

Prepare Customized values.yaml for GoodData.CN

To support a broad variety of deployment options, the GoodData.CN Helm chart offers multiple parameters that you may tune to fit your environment. Check default values in the Helm chart to see further options.

Option1: Installations with SaaS Redis and Postgres

If you are running in public cloud that offers Redis and Postgres as a service and you have decided to use these services, do not deploy the Redis and Postgres subcharts. Refer to Environment Setup for the Redis and Postgres installations in the public clouds.

# file name: customized-values-gooddata-cn.yaml

service:
  redis:
    hosts:
      - redis.cache
    port: 6379
    clusterMode: false
  postgres:
    host: postgres.database
    port: 5432
    username: postgres@gooddata-cn-pg
    password: <PG_ADMIN_PASSWORD>

deployRedisHA: false
deployPostgresHA: false

Option2: Installations with included Redis and Postgress

If you do not have the possibility to use Redis and Postgress as a service or you simply do not want to, then deploy the Redis and Postgres subcharts (default).

# file name: customized-values-gooddata-cn.yaml

deployRedisHA: true
deployPostgresHA: true

Dex identity provider settings

Based on your assessment in the Deployment Considerations section you may need to setup the Dex. You need to setup the hostname for the Ingress, the authHost, and the certificate for the Dex, being it either the secret containing the certificate or annotation for the CertManager which will provide the certificate.

dex:
  ingress:
    authHost: 'auth.company.com'
    tls:
      authSecretName: gooddata-cn-auth-tls
    annotations:
      kubernetes.io/ingress.class: nginx
    #  cert-manager.io/cluster-issuer: letsencrypt-production

Note: If you do not want to use default storageClass of your Kubernetes cluster for Redis and/or Postgres helm charts, you need to set storageClass according to your setup (see kubectl get storageclass output).

redis-ha:
  persistentVolume:
    storageClass: mystorageclass
postgresql-ha:
  persistence:
    storageClass: mystorageclass

Note: On air-gapped clusters, you need to override all images so they are fetched from your local Docker registry:

image:
  # this is where GoodData.CN images are stored
  repositoryPrefix: "registry.company.com/gooddata"
  # this is where DockerHub repositories are stored
  dockerhubPrefix: "registry.company.com/dockermirror"

# For postgresql-ha subchart, if used
global:
  # usually the same as image.dockerhubPrefix
  imageRegistry: "registry.company.com/dockermirror"

# Used for redis-ha subchart, if used
redis-ha:
  image:
    repository: "registry.company.com/dockermirror/redis"
  exporter:
    image: "registry.company.com/dockermirror/redis_exporter"

# Used for dex component, if used
dex:
  image:
    name: "registry.company.com/dockermirror/dex"

GoodData.CN Application Chart

This command will deploy GoodData.CN from extracted Helm chart directory ./anywhere.

$ helm install --namespace gooddata-cn --wait -f customized-values-gooddata-cn.yaml gooddata-cn ./gooddata-cn
Release "gooddata-cn" has been installed. Happy Helming!
NAME: gooddata-cn
LAST DEPLOYED: Thu Mar 26 14:32:44 2020
NAMESPACE: gooddata-cn
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Congratulations, you have just deployed the GoodData.CN to your Kubernetes cluster.

To proceed with the configuration, follow the Administration Guide in documentation and
create your Organization by creating a custom resource in Kubernetes.

All necessary services are up and running in your Kubernetes cluster now.