Skip to content

Conversation

nikitok
Copy link

@nikitok nikitok commented Apr 10, 2025

Added Helm charts for deployment, based on Multinode-HA, to allow for more convenient management.

  • Created charts to simplify the deployment of a multi-zone Vespa application.

  • Architecture of the charts:

    • Config: Deploys configserver with high-availability support.
    • Services: Launches other clusters (admin, content, feed, query) after configserver initialization, leveraging initContainers.
  • Added a readiness mechanism for configserver:


 until curl -f http://vespa-configserver-0.vespa-internal.vespa.svc.cluster.local:19071/state/v1/health; do
    echo "Waiting for Vespa ConfigServer to be ready...";
    sleep 5;
  done

These changes simplify the deployment process and ensure the proper sequence for starting components.

@radu-gheorghe
Copy link
Contributor

Thanks for the awesome contribution, @nikitok 🙏

We'll look into it and get back to you.

Values such as `config.serverReplicas`, `services.content.replicas`, and `services.content.storage` can be adjusted in `values.yaml` to match your requirements for scaling and resource configuration. For example:
```yaml
config:
serverReplicas: 5
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
serverReplicas: 5
serverReplicas: 3

Let's keep three as the default number of config servers recommended across all documentation. More than that adds extra operational work, with minimal advantages.

Comment on lines +59 to +61
memory: "1.5G"
limits:
memory: "1.5G"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make memory configurable from values for easier override?

- name: vespa-logs
mountPath: /opt/vespa/logs
- name: vespa-workspace
mountPath: /workspace
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this mount point used for? I can't find any references to it anywhere else in the chart.

accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make volume claim sizes configurable for easier override?

- /bin/sh
- -c
- |
until curl -f http://vespa-configserver-0.vespa-internal.vespa.svc.cluster.local:19071/state/v1/health; do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to get vespa-internal and vespa (namespace) values from the templating functionality to support other values for this without changing the chart?

done
containers:
- name: vespa-admin
image: vespaengine/vespa
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to support specifying the Vespa version, defaulting to latest.

requests:
memory: "1G"
limits:
memory: "1G"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make configurable?

requests:
memory: "1.5G"
limits:
memory: "1.5G"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make configurable?

requests:
memory: "1.5G"
limits:
memory: "1.5G"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make configurable? Memory requirements are very application package and query patterns dependant.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants