buildbuddy-helm

BuildBuddy Executor

BuildBuddy Executor handles execution for BuildBuddy’s Remote Build Execution platform.

TL;DR

helm repo add buildbuddy https://helm.buildbuddy.io
helm install buildbuddy buildbuddy/buildbuddy-executor

Introduction

This chart creates a BuildBuddy Executor deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

Installing the Chart

To install the chart with the release name my-release:

$ helm install my-release buildbuddy/buildbuddy-executor

Helm v2 command

$ helm install --name my-release buildbuddy/buildbuddy-executor

The command deploys BuildBuddy Executor on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Updating your release

If you change configuration, you can update your deployment:

$ helm upgrade my-release -f my-values.yaml buildbuddy/buildbuddy-executor

Writing deployment to a file

You can write your Kubernetes deployment configuration to a file release name my-release:

$ helm template my-release buildbuddy/buildbuddy-executor > buildbuddy-deploy.yaml

You can then check this configuration in to your source repository, or manually apply it to your cluster with:

$ kubectl apply -f buildbuddy-deploy.yaml

Configuration

The following table lists the configurable parameters of the BuildBuddy Open Source chart and their default values.

Parameter Description Default
config The config.yaml configuration to be used by the BuildBuddy Executor. The values you provide will by using Helm’s merging behavior override individual default values only. See the example configuration and the BuildBuddy documentation for details. See config in values.yaml
image.repository Container image repository gcr.io/flame-public/buildbuddy-executor-enterprise
image.tag Container image tag server-image-enterprise-v1.3.1
image.imagePullPolicy Container image pull policy IfNotPresent
disk.data.enabled Whether to enable a persistent volume disk mounted at /data true
disk.data.size The size of the persistent volume disk 10Gi
service.type The type of service we’re exposing LoadBalancer
service.externalGRPCPort The port on which to expose our grpc load balancer 1985
service.internalHTTPPort The port on our docker image that serves http traffic 8080
service.internalGRPCPort The port on our docker image that serves grpc traffic 1985
service.annotations Service annotations []
extraPodAnnotations Extra pod annotations to be used in the deployments []
extraEnvVars Extra environments variables to be used in the deployments []
extraInitContainers Additional init containers []

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install my-release \
  --set image.tag=server-image-enterprise-v1.3.1 \
  --set mysql.mysqlUser=sampleUser \
  --set mysql.mysqlPassword=samplePassword \
  buildbuddy/buildbuddy-executor

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

$ helm install my-release -f values.yaml buildbuddy/buildbuddy-executor

Example configurations

Below are some examples of .yaml files with values that could be passed to the helm command with the -f or --values flag to get started.

Example bring your own executor configuration

config:
  executor:
    app_target: "grpcs://your.buildbuddy.app:443"
    local_cache_size_bytes: 10000000000 # 10GB

More examples

For more example config: blocks, see our configuration docs.

Local development

For local testing use minikube

Create local cluster using with specified Kubernetes version (e.g. 1.15.6)

$ minikube start --kubernetes-version v1.15.6

Initialize helm

$ helm init

Above command is not required for Helm v3

Get dependencies

$ helm dependency update

Perform local installation

$ helm install . \
    --set image.tag=5.12.4 \
    --set mysql.mysqlUser=sampleUser \
    --set mysql.mysqlPassword=samplePassword

Helm v3 command

$ helm install . \
    --generate-name \
    --set image.tag=5.12.4 \
    --set mysql.mysqlUser=sampleUser \
    --set mysql.mysqlPassword=samplePassword