Skip to content

Add higress helm chart#3946

Open
cyclinder wants to merge 1 commit intoDaoCloud:mainfrom
cyclinder:gateway_api
Open

Add higress helm chart#3946
cyclinder wants to merge 1 commit intoDaoCloud:mainfrom
cyclinder:gateway_api

Conversation

@cyclinder
Copy link
Collaborator

What this PR does / why we need it:

Which issue(s) this PR fixes:

Fixes #

@gemini-code-assist
Copy link

Summary of Changes

Hello @cyclinder, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new Helm chart for Higress, a cloud-native API gateway, designed to simplify its deployment and management on Kubernetes. The chart includes the core gateway functionality, a management console, and optional integrations for observability (Grafana, Prometheus, Loki, Promtail) and certificate management (cert-manager). Automated scripting handles configuration adjustments and image repository normalization, ensuring a robust and flexible deployment process.

Highlights

  • New Helm Chart for Higress: Introduced a comprehensive Helm chart to deploy Higress, a cloud-native API gateway, along with its core components and an optional management console.
  • Automated Configuration: Added a custom shell script (custom.sh) that dynamically generates the main values.yaml from subchart values, normalizes image repositories, and applies specific configuration patches using yq and sed for streamlined setup.
  • Observability Integration: Included optional observability components (Grafana, Prometheus, Loki, Promtail) for the console and core gateway, allowing for enhanced monitoring and logging.
  • Cert-Manager Support: Integrated cert-manager resources within the higress-console subchart to enable automatic HTTPS certificate management.
  • Redis-Stack-Server Support: Added a Redis subchart (redis-stack-server) to provide an optional, persistent Redis instance for Higress components.
  • Image Relocation Support: Included .relok8s-images.yaml files to list all container image references, facilitating image relocation to private registries.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • charts/higress/config
    • Added configuration for repository, chart name, version, and upgrade details.
  • charts/higress/custom.sh
    • Added a script to dynamically generate values.yaml from subchart values.
    • Normalized image repositories and applied specific configuration patches using yq and sed.
  • charts/higress/higress/.relok8s-images.yaml
    • Added a list of image references for relocation.
  • charts/higress/higress/Chart.yaml
    • Added main Higress Helm chart definition with dependencies and metadata.
  • charts/higress/higress/README.md
    • Added English README for the Higress Helm chart, including installation and configuration instructions.
  • charts/higress/higress/charts/higress/Chart.lock
    • Added Helm chart lock file, specifying dependencies and their versions.
  • charts/higress/higress/charts/higress/Chart.yaml
    • Added subchart definition for Higress, detailing dependencies on higress-core and higress-console.
  • charts/higress/higress/charts/higress/LICENSE
    • Added Apache License 2.0 for the Higress chart and its subcomponents.
  • charts/higress/higress/charts/higress/README.md
    • Added English README for the Higress subchart.
  • charts/higress/higress/charts/higress/README.md.gotmpl
    • Added Go template for generating the README.md.
  • charts/higress/higress/charts/higress/README.zh.md
    • Added Chinese README for the Higress subchart.
  • charts/higress/higress/charts/higress/charts/higress-console/.helmignore
    • Added .helmignore file for the higress-console subchart.
  • charts/higress/higress/charts/higress/charts/higress-console/Chart.yaml
    • Added Helm chart definition for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/LICENSE
    • Added Apache License 2.0 for the higress-console subchart.
  • charts/higress/higress/charts/higress/charts/higress-console/README.md
    • Added README for the higress-console subchart.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/NOTES.txt
    • Added Helm NOTES.txt template for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/_helpers.tpl
    • Added Helm helper templates for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/certmanager.yaml
    • Added Kubernetes resources for cert-manager integration in higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/clusterrole.yaml
    • Added ClusterRole for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/clusterrolebinding.yaml
    • Added ClusterRoleBinding for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/configmap.yaml
    • Added ConfigMap for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/deployment.yaml
    • Added Deployment for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/grafana.yaml
    • Added Kubernetes resources for Grafana in higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/ingress.yaml
    • Added Ingress resource for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/loki.yaml
    • Added Kubernetes resources for Loki in higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/prometheus.yaml
    • Added Kubernetes resources for Prometheus in higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/role.yaml
    • Added Role for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/rolebinding.yaml
    • Added RoleBinding for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/secret.yaml
    • Added Secret for higress-console admin credentials.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/service.yaml
    • Added Service for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/templates/serviceaccount.yaml
    • Added ServiceAccount for higress-console.
  • charts/higress/higress/charts/higress/charts/higress-console/values.yaml
    • Added default values for the higress-console subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/.helmignore
    • Added .helmignore file for the higress-core subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/Chart.yaml
    • Added Helm chart definition for higress-core.
  • charts/higress/higress/charts/higress/charts/higress-core/LICENSE
    • Added Apache License 2.0 for the higress-core subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/README.md
    • Added README for the higress-core subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/.helmignore
    • Added .helmignore file for the Redis subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/Chart.yaml
    • Added Helm chart definition for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/templates/_helpers.tpl
    • Added Helm helper templates for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/templates/configmap.yaml
    • Added ConfigMap for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/templates/pvc.yaml
    • Added PersistentVolumeClaim for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/templates/service.yaml
    • Added Service for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/templates/statefulset.yaml
    • Added StatefulSet for Redis.
  • charts/higress/higress/charts/higress/charts/higress-core/charts/redis/values.yaml
    • Added default values for the Redis subchart.
  • charts/higress/higress/charts/higress/charts/higress-core/crds/customresourcedefinitions.gen.yaml
    • Added CustomResourceDefinitions for Higress extensions and networking.
  • charts/higress/higress/charts/higress/charts/higress-core/crds/istio-envoyfilter.yaml
    • Added CustomResourceDefinition for Istio EnvoyFilter.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/NOTES.txt
    • Added Helm NOTES.txt template for higress-core.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/_helpers.tpl
    • Added Helm helper templates for higress-core.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/_pod.tpl
    • Added Helm pod template for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/clusterrole.yaml
    • Added ClusterRole for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/configmap.yaml
    • Added ConfigMap for Higress core configuration.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-clusterrole.yaml
    • Added ClusterRole for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-clusterrolebinding.yaml
    • Added ClusterRoleBinding for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-deployment.yaml
    • Added Deployment for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-role.yaml
    • Added Role for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-rolebinding.yaml
    • Added RoleBinding for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-service.yaml
    • Added Service for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/controller-serviceaccont.yaml
    • Added ServiceAccount for the Higress controller.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/daemonset.yaml
    • Added DaemonSet for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/deployment.yaml
    • Added Deployment for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/fallback-envoyfilter.yaml
    • Added EnvoyFilter for global custom response.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/hpa.yaml
    • Added HorizontalPodAutoscaler for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/ingressclass.yaml
    • Added IngressClass resource.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/plugin-server-deployment.yaml
    • Added Deployment for the plugin server.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/plugin-server-service.yaml
    • Added Service for the plugin server.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/podmonitor.yaml
    • Added PodMonitor resource for gateway metrics.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/promtail.yaml
    • Added ConfigMap for Promtail configuration.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/role.yaml
    • Added Role for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/service.yaml
    • Added Service for the gateway component.
  • charts/higress/higress/charts/higress/charts/higress-core/templates/serviceaccount.yaml
    • Added ServiceAccount for the gateway component.
  • charts/higress/higress/values.schema.json
    • Added JSON schema for Higress Helm chart values.
  • charts/higress/higress/values.yaml
    • Added default values for the Higress Helm chart.
  • charts/higress/parent/.relok8s-images.yaml
    • Added image references for relocation in the parent chart.
  • charts/higress/parent/values.schema.json
    • Added JSON schema for parent Higress Helm chart values.
  • test/higress/install.sh
    • Added installation script for Higress Helm chart in a Kind cluster.
Activity
  • The pull request introduces a new Helm chart for Higress.
  • The author cyclinder has provided initial configuration and scripts for the chart.
  • The custom.sh script handles dynamic values.yaml generation and image repository adjustments.
  • The .relok8s-images.yaml files list images for potential relocation.
  • Comprehensive READMEs in both English and Chinese have been added.
  • Detailed Kubernetes resource definitions (Deployments, Services, Roles, etc.) for Higress core, console, and optional components like Redis and observability tools are included.
  • A test installation script (install.sh) is provided for Kind clusters, demonstrating how to enable optional features like observability, cert-manager, and Redis.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new Helm chart for Higress. The changes are quite extensive, including the chart structure, subcharts, configuration files, and test scripts. The core logic for customizing the chart resides in custom.sh. My review focuses on this script, where I've identified opportunities to improve robustness and maintainability. Specifically, I'm suggesting a simplification for extracting the chart version and a significant cleanup of the sed commands used for patching YAML files.


mv "$TMP_VALUES_YAML" values.yaml

export CHART_VERSION=$(helm show chart . | grep '^version' |grep -E '[0-9].*.[0-9]' | awk -F ':' '{print $2}' | tr -d ' ')

Choose a reason for hiding this comment

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

medium

The command to extract CHART_VERSION is overly complex and can be simplified by using yq, which is already a dependency of this script. This improves readability and robustness.

Suggested change
export CHART_VERSION=$(helm show chart . | grep '^version' |grep -E '[0-9].*.[0-9]' | awk -F ':' '{print $2}' | tr -d ' ')
export CHART_VERSION=$(yq e '.version' Chart.yaml)

@cyclinder cyclinder force-pushed the gateway_api branch 10 times, most recently from d866b9f to ad8cfbb Compare February 26, 2026 07:11
Signed-off-by: Cyclinder Kuo <qifeng.guo@daocloud.io>
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.

1 participant