Helm Chart Installation
Release Notice
GoodData.CN ready for Kubernetes will be published during May 2021. Stay tuned and watch GoodData Developers website.
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
Note
The helm value --set initialize=true
is required only for initial installation of the Pulsar
Helm chart. Further upgrades should not contain this parameter.
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.
Note
You need to ensure that DNS record is created for the authHost
Ingress.
See DNS Configuration section for more details.
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.
Connect to GoodData.CN
As of this point of the installation, you do not have any endpoint/hostname to connect to yet. Follow the Administration Guide to understand and create your Organization(s) by creating a custom resource.
Hostname for accessing GoodData.CN platform will be provisioned by the Organization resource.