Skip to content

launchdarkly/ld-relay-helm

Repository files navigation

LaunchDarkly Relay Proxy Helm Chart

Artifact Hub Quality control

A Helm chart to ease deployment of the LaunchDarkly Relay Proxy to Kubernetes (k8s).

Basic installation and configuration information is below.

To learn more, read the Getting started guide. For additional examples, read:

LaunchDarkly overview

LaunchDarkly is a feature management platform that serves trillions of feature flags daily to help teams build better software, faster. Get started using LaunchDarkly today!

Twitter Follow

Installation

The default configuration is insufficient to have a working instance of the Relay Proxy running. You must minimally provide an environment for the Relay Proxy to connect to, using your LaunchDarkly SDK key for that environment.

To deploy the Relay Proxy to the Kubernetes cluster using the default configuration and an environment:

helm repo add launchdarkly-ld-relay https://launchdarkly.github.io/ld-relay-helm
helm install ld-relay --set relay.environment.LD_ENV_YourEnvironment=your-sdk-key launchdarkly-ld-relay/ld-relay

For additional configuration, use the Configuration options below.

OCI artifacts of all LaunchDarkly Helm charts are available in ghcr.io.

Configuration options

To customize this Helm chart, override the configuration options defined in the values file. The values file contains detailed documentation on each option.

Here's a summary of the available configuration options:

Key Type Default Description
relay.environment object {} Defines container environment variables to configure the Relay Proxy instance (via ConfigMap)
relay.environmentVariables array [] Defines container environment variables to configure the Relay Proxy instance (via container spec)
relay.envFromSecret string null Defines container environment variables to configure the Relay Proxy instance (via existing k8s secrets)
relay.secrets array [] Defines container environment variables or volumes populated from k8s secrets
relay.volume object {} Enables offline mode or references an existing config file from a defined volume
relay.livenessProbe object {httpGet: { port: "api", path: "/status" }} Defines the liveness probe for the relay container
relay.readinessProbe object {httpGet: { port: "api", path: "/status" }} Defines the readiness probe for the relay container
relay.startupProbe object null Defines the startup probe for the relay container
relay.lifecycle object {} Defines the lifecycle hooks for the relay container
replicaCount integer 1 Number of replicas of the relay pod
image.repository string launchdarkly/ld-relay ld-relay image repository
image.pullPolicy string IfNotPresent ld-relay image pull policy
image.tag string "" Overrides the image tag whose default is the chart appVersion
imagePullSecrets array [] Specifies docker registry secret names as an array
nameOverride string "" Partially overrides the fullname template with a string (includes release name)
fullnameOverride string "" Fully overrides the fullname template with a string
namespaceOverride string "" Sets metadata.namespace on namespaced resources; defaults to the release namespace. Refer to values.yaml for when to use it
commonLabels object {} Specifies labels to be applied to all created resources
serviceAccount.create bool true Specifies whether a service account should be created
serviceAccount.annotations object {} Annotations to add to the service account
serviceAccount.name string "" The name of the service account
pod.annotations object {} Pod annotations
pod.labels object {} Pod labels
pod.securityContext object {} Pod security context
terminationGracePeriodSeconds string null Pod terminationGracePeriodSeconds
securityContext object {} Container security context
service.type string ClusterIP Kubernetes service type
service.annotations object {} Annotations to add to the service
service.ports array [{port: 8030, targetPort: 8030, protocol: TCP, name: api}] Service port mapping. Must include one port named api.
ingress.enabled bool false Enables ingress controller
ingress.className string "" Ingress class name
ingress.annotations object {} Ingress annotations
ingress.hosts array [] List of host rules
ingress.tls array [] Ingress TLS configuration
httpRoute.enabled bool false Enables Gateway API HTTPRoute
httpRoute.annotations object {} HTTPRoute annotations
httpRoute.parentRefs array [] List of Gateway parent references this route attaches to (full ParentReference schema; rendered as-is)
httpRoute.hostnames array [] List of hostnames this route matches
httpRoute.rules array [] List of routing rules; see the fields below
httpRoute.rules[].matches array [] Full Gateway API match schema (path, headers, method, queryParams); rendered as-is
httpRoute.rules[].filters array [] Full Gateway API filter schema (header modifiers, redirect, URL rewrite, mirror); rendered as-is
httpRoute.rules[].timeouts object {} Gateway API timeouts (request, backendRequest); rendered as-is
httpRoute.rules[].port integer nil Convenience: routes the rule's backend to the chart's Service on this port
httpRoute.rules[].backendRefs array [] Explicit backends (weighting, mirroring, external); overrides the port convenience when set
resources object {} Resource requirements for the relay container
autoscaling.enabled bool false Enables HorizontalPodAutoscaler
autoscaling.minReplicas integer 1 Sets minimum number of running replicas
autoscaling.maxReplicas integer 100 Sets maximum number of running replicas
autoscaling.targetCPUUtilizationPercentage integer 80 Configures CPU as an average utilization metrics resource
autoscaling.targetMemoryUtilizationPercentage integer 80 Configures memory as an average utilization metrics resource
autoscaling.behavior object null Optional HPA scale behavior (requires Kubernetes >= 1.18)
deployment.strategy object null Optional rolling update strategy for the deployment
deployment.revisionHistoryLimit integer null Optional number of old ReplicaSets to retain for rollback (Kubernetes default 10)
nodeSelector object {} Selector to target node placement for the relay pod
tolerations array [] Specify pod tolerations
affinity object {} Specify pod affinity
pod.disruptionBudget.enabled boolean false Enabled podDisruptionBudget
pod.disruptionBudget.minAvailable string "" Minimum number of pods that are available after eviction as number or percentage
pod.disruptionBudget.maxUnavailable string "" Maximum number of pods that are unavailable after eviction as number or percentage
pod.topologySpreadConstraints array [] Specify the topology spread constrait definitions to apply to the relay deployment
pod.priorityClassName string "" Specify a PriorityClass for the pod
pod.dnsPolicy string "" Optional pod DNS policy (Kubernetes default ClusterFirst); set to None when supplying a custom dnsConfig
pod.dnsConfig object {} Optional pod DNS configuration (nameservers, searches, options)

httpRoute requires the Gateway API CRDs (gateway.networking.k8s.io) to already be installed in the cluster, along with a Gateway resource for the route to attach to. Use either ingress or httpRoute, not both.

For each rule, set port to route to this chart's Service, or set backendRefs explicitly. backendRefs takes precedence over port when both are given, and (unlike port) can target any Service, including another namespace. A rule with no matches matches every request and publishes the entire relay -- including admin/metrics endpoints -- on the route's hostname, so add explicit matches unless a catch-all is intended.

Learn more

Read our documentation for in-depth instructions on configuring and using LaunchDarkly. To learn more about the Relay Proxy specifically, read the complete reference guide for the Relay Proxy.

Contributing

We encourage pull requests and other contributions from the community. Check out our contributing guidelines for instructions on how to contribute to this repository.

About LaunchDarkly

  • LaunchDarkly is a continuous delivery platform that provides feature flags as a service and allows developers to iterate quickly and safely. We allow you to easily flag your features and manage them from the LaunchDarkly dashboard. With LaunchDarkly, you can:
    • Roll out a new feature to a subset of your users (like a group of users who opt-in to a beta tester group), gathering feedback and bug reports from real-world use cases.
    • Gradually roll out a feature to an increasing percentage of users, and track the effect that the feature has on key metrics (for instance, how likely is a user to complete a purchase if they have feature A versus feature B?).
    • Turn off a feature that you realize is causing performance problems in production, without needing to re-deploy, or even restart the application with a changed configuration file.
    • Grant access to certain features based on user attributes, like payment plan (eg: users on the ‘gold’ plan get access to more features than users in the ‘silver’ plan). Disable parts of your application to facilitate maintenance, without taking everything offline.
  • LaunchDarkly provides feature flag SDKs for a wide variety of languages and technologies. Read our documentation for a complete list.
  • Explore LaunchDarkly

Releases

Packages

Used by

Contributors

Languages