diff --git a/.github/workflows/helm-chart.yaml b/.github/workflows/helm-chart.yaml new file mode 100644 index 0000000000..7ae546ee9e --- /dev/null +++ b/.github/workflows/helm-chart.yaml @@ -0,0 +1,54 @@ +################################################################################ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +name: "Helm Chart" + +permissions: + contents: read + +on: + pull_request: + paths: + - 'helm/**' + - '.github/workflows/helm-chart.yaml' + push: + branches: [main, release-*, ci-*] + paths: + - 'helm/**' + - '.github/workflows/helm-chart.yaml' + +concurrency: + group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.run_id }} + cancel-in-progress: true + +jobs: + test-helm-chart: + name: "Helm Lint and Unittest" + runs-on: ubuntu-latest + steps: + - name: "Checkout code" + uses: actions/checkout@v6 + + - name: "Run helm-unittest" + uses: d3adb5/helm-unittest-action@v2 + with: + helm-version: latest + charts: helm + + - name: "Lint Helm chart" + run: helm lint ./helm diff --git a/helm/README.md b/helm/README.md index f09750c489..b16563fec6 100644 --- a/helm/README.md +++ b/helm/README.md @@ -22,7 +22,7 @@ This chart deploys an Apache Fluss cluster on Kubernetes, following Helm best pr It requires a Zookeeper ensemble to be running in the same Kubernetes cluster. In future releases, we may add support for an embedded Zookeeper cluster. -## Development environment +## Development environment | component | version | | ------------------------------------------------------------------------------ | ------- | @@ -33,7 +33,7 @@ It requires a Zookeeper ensemble to be running in the same Kubernetes cluster. I | [Apache Fluss](https://fluss.apache.org/docs/) | v0.10.0-incubating | -## Image requirements +## Image requirements A container image for Fluss is available on DockerHub as `fluss/fluss`. You can use it directly or build your own from this repo. To use your own image you need to build the project with [Maven](https://fluss.apache.org/community/dev/building/) and build it with Docker. @@ -93,6 +93,49 @@ Important Fluss options surfaced by the chart: - internal.listener.name: Which listener is used for internal communication (defaults to INTERNAL). - tablet-server.id: Required to be unique per TabletServer. The chart auto‑derives this from the StatefulSet pod ordinal at runtime. +### Metrics and Prometheus scraping + +The chart can enable Fluss metrics reporters and add scrape annotations to Services. + +Example: + +```bash +helm install fluss ./fluss-helm \ + --set metrics.enabled=true +``` + +When enabled, the chart will: +- configure `metrics.reporters` from reporter names in values +- configure `metrics.reporter..