Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ addons-cluster/etcd/ @loomt @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-
addons/greptimedb/ @GreptimeTeam @sh2 @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers
addons-cluster/greptimedb/ @GreptimeTeam @sh2 @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers

addons/hugegraph/ @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers
addons-cluster/hugegraph/ @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers

addons/influxdb/ @cjc7373 @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers
addons-cluster/influxdb/ @cjc7373 @leon-ape @apecloud/kb-reviewers @apecloud/kb-addon-reviewers

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-addons-cluster-chart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ on:
- elasticsearch
- etcd
- greptimedb
- hugegraph
- influxdb
- kafka
- llm
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/release-chart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ on:
- elasticsearch
- etcd
- greptimedb
- hugegraph
- influxdb
- kafka
- llm
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ KubeBlocks add-ons.
| elasticsearch | elasticsearch-6.8.23<br>elasticsearch-7.10.1<br>elasticsearch-7.10.2<br>elasticsearch-7.7.1<br>elasticsearch-7.8.1<br>elasticsearch-8.1.3<br>elasticsearch-8.15.5<br>elasticsearch-8.8.2<br>kibana-6.8.23<br>kibana-7.10.1<br>kibana-7.10.2<br>kibana-7.7.1<br>kibana-7.8.1<br>kibana-8.1.3<br>kibana-8.15.5<br>kibana-8.8.2<br>kibana-8.9.1 | Elasticsearch is a distributed, RESTful search engine optimized for speed and relevance on production-scale workloads. | kizuna-lek vipshop |
| etcd | etcd-3.5.15<br>etcd-3.5.6<br>etcd-3.6.1 | Etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. | loomt |
| greptimedb | greptimedb-0.3.2 | An open-source, cloud-native, distributed time-series database with PromQL/SQL/Python supported. | GreptimeTeam sh2 |
| hugegraph | hugegraph-1.7.0 | Apache HugeGraph standalone addon for KubeBlocks. | ApeCloud |
| influxdb | influxdb-2.7.11<br>influxdb-data-1.8.10<br>influxdb-meta-1.8.10 | InfluxDB is an open source time-series database. It is a core component of the TICK (Telegraf, InfluxDB(TM), Chronograf, Kapacitor) stack. | cjc7373 |
| kafka | kafka-broker-2.7.0<br>kafka-broker-2.8.2<br>kafka-broker-3.3.2<br>kafka-broker-3.7.1<br>kafka-broker-3.8.1<br>kafka-broker-3.9.0<br>kafka-combine-3.3.2<br>kafka-combine-3.7.1<br>kafka-combine-3.8.1<br>kafka-combine-3.9.0<br>kafka-controller-3.3.2<br>kafka-controller-3.7.1<br>kafka-controller-3.8.1<br>kafka-controller-3.9.0<br>kafka-exporter-1.6.0 | Apache Kafka is a distributed streaming platform designed to build real-time pipelines and can be used as a message broker or as a replacement for a log aggregation solution for big data applications. | cjc7373 caiq1nyu vipshop |
| llm | llm-ggml-20241115-latest<br>llm-vllm-0.11.2 | Large language models. | ApeCloud |
Expand Down
5 changes: 5 additions & 0 deletions addons-cluster/hugegraph/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.DS_Store
.git/
.gitignore
*.swp
*.tmp
23 changes: 23 additions & 0 deletions addons-cluster/hugegraph/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: v2
name: hugegraph-cluster
description: Apache HugeGraph standalone cluster chart for KubeBlocks.
type: application
version: 1.0.0
appVersion: "1.7.0"

dependencies:
- name: kblib
version: 0.1.2
repository: file://../kblib
alias: extra

home: https://hugegraph.apache.org/
icon: https://hugegraph.apache.org/img/logo.svg

maintainers:
- name: ApeCloud
url: https://kubeblocks.io/

sources:
- https://github.com/apache/incubator-hugegraph
- https://github.com/apecloud/kubeblocks-addons
8 changes: 8 additions & 0 deletions addons-cluster/hugegraph/releases_notes.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
releases:
- version: "1.0.0"
released_at: "2026-08-10"
status: preview
notes: Initial HugeGraph 1.7.0 standalone cluster chart.
git_branch: "release-1.0"
git_tag: "1.0.0"
commit_sha: ""
5 changes: 5 additions & 0 deletions addons-cluster/hugegraph/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
HugeGraph {{ .Values.version }} standalone cluster {{ include "kblib.clusterName" . }} has been submitted.

HTTP service port: 8080
Gremlin service port: 8182
System account Secret: {{ include "kblib.clusterName" . }}-server-account-admin
33 changes: 33 additions & 0 deletions addons-cluster/hugegraph/templates/cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
apiVersion: apps.kubeblocks.io/v1
kind: Cluster
metadata:
name: {{ include "kblib.clusterName" . }}
namespace: {{ .Release.Namespace }}
labels: {{ include "kblib.clusterLabels" . | nindent 4 }}
spec:
clusterDef: hugegraph
topology: {{ .Values.topology | default "standalone" }}
terminationPolicy: {{ .Values.extra.terminationPolicy }}
componentSpecs:
{{- if eq (.Values.topology | default "standalone") "distributed" }}
- name: pd
serviceVersion: {{ .Values.version | quote }}
replicas: {{ .Values.distributed.pdReplicas | default 3 }}
{{- include "kblib.componentResources" . | nindent 6 }}
{{- include "kblib.componentStorages" . | nindent 6 }}
- name: store
serviceVersion: {{ .Values.version | quote }}
replicas: {{ .Values.distributed.storeReplicas | default 3 }}
{{- include "kblib.componentResources" . | nindent 6 }}
{{- include "kblib.componentStorages" . | nindent 6 }}
- name: server
serviceVersion: {{ .Values.version | quote }}
replicas: {{ .Values.distributed.serverReplicas | default 1 }}
{{- include "kblib.componentResources" . | nindent 6 }}
{{- else }}
- name: server
serviceVersion: {{ .Values.version | quote }}
replicas: 1
{{- include "kblib.componentResources" . | nindent 6 }}
{{- include "kblib.componentStorages" . | nindent 6 }}
{{- end }}
85 changes: 85 additions & 0 deletions addons-cluster/hugegraph/values.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"properties": {
"version": {
"title": "Version",
"description": "HugeGraph service version.",
"type": "string",
"default": "1.7.0",
"enum": ["1.7.0"]
},
"topology": {
"title": "Topology",
"description": "standalone is one Server with RocksDB. distributed is PD 3 + Store 3 + Server 1.",
"type": "string",
"default": "standalone",
"enum": ["standalone", "distributed"]
},
"replicas": {
"title": "Replicas",
"description": "Standalone HugeGraph requires exactly one replica.",
"type": "integer",
"default": 1,
"minimum": 1,
"maximum": 1
},
"distributed": {
"title": "Distributed",
"description": "Claimed distributed shape. Horizontal scaling is not supported.",
"type": "object",
"properties": {
"pdReplicas": {
"title": "PD Replicas",
"type": "integer",
"default": 3,
"minimum": 3,
"maximum": 3
},
"storeReplicas": {
"title": "Store Replicas",
"type": "integer",
"default": 3,
"minimum": 3,
"maximum": 3
},
"serverReplicas": {
"title": "Server Replicas",
"type": "integer",
"default": 1,
"minimum": 1,
"maximum": 1
}
}
},
"cpu": {
"title": "CPU",
"description": "CPU cores.",
"type": ["number", "string"],
"default": 1,
"minimum": 0.5,
"maximum": 64
},
"memory": {
"title": "Memory(Gi)",
"description": "Memory in Gi.",
"type": ["number", "string"],
"default": 2,
"minimum": 1,
"maximum": 1000
},
"storage": {
"title": "Storage(Gi)",
"description": "Data volume size in Gi.",
"type": ["number", "string"],
"default": 20,
"minimum": 1,
"maximum": 10000
},
"storageClassName": {
"title": "Storage Class Name",
"description": "StorageClass for the data PVC.",
"type": "string"
}
}
}
19 changes: 19 additions & 0 deletions addons-cluster/hugegraph/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
version: "1.7.0"
topology: standalone
replicas: 1

distributed:
pdReplicas: 3
storeReplicas: 3
serverReplicas: 1

cpu: 1
memory: 2

requests:

storage: 20
storageClassName: ""

extra:
terminationPolicy: Delete
7 changes: 7 additions & 0 deletions addons/hugegraph/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.DS_Store
.git/
.gitignore
tests/
*.swp
*.tmp
exporter/
28 changes: 28 additions & 0 deletions addons/hugegraph/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: v2
name: hugegraph
description: Apache HugeGraph standalone addon for KubeBlocks.
type: application
version: 1.0.0
appVersion: "1.7.0"

dependencies:
- name: kblib
version: 0.1.0
repository: file://../kblib
alias: extra

home: https://hugegraph.apache.org/
icon: https://hugegraph.apache.org/img/logo.svg

maintainers:
- name: ApeCloud
url: https://kubeblocks.io/

sources:
- https://github.com/apache/incubator-hugegraph
- https://github.com/apecloud/kubeblocks-addons

annotations:
addon.kubeblocks.io/kubeblocks-version: ">=1.0.0"
addon.kubeblocks.io/model: "graph"
addon.kubeblocks.io/provider: "community"
63 changes: 63 additions & 0 deletions addons/hugegraph/DESIGN-distributed.zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# HugeGraph 1.7.0 分布式 Topology 设计

依据 `docs/addon-api/03-cluster-definition.md`、`06-variables-and-services.md`、
`12a-minimum-acceptance.md`、`12b-claimed-only-acceptance.md`。

## 1. 拓扑含义

`distributed` 是用户可选的第二种部署形态:PD + Store + Server。
这不是 sharding。PD / Store 的多副本是同一 Raft 组里的 `replicas`。

官方 1.7.0 运行时依赖是 PD healthy -> Store -> Server。
PD 启动又需要事先知道 Store 的稳定 FQDN 列表,所以对象创建上 PD 和 Store
放在同一 provision 阶段(逗号=并行),Server 后置。Store 启动脚本等 PD
`/v1/health`。这符合合同:阶段内并行、阶段间有序。

```text
orders.provision: [pd,store, server]
orders.terminate: [server, store,pd]
orders.update: [pd,store, server]
```

`standalone` 仍是唯一 default。未指定 topology 时必须落到 standalone。

## 2. 组件与名字

| topology component | CmpD 名 | 正则 | 镜像 |
| --- | --- | --- | --- |
| standalone `server` | `hugegraph-{{ ver }}` | `^hugegraph-[0-9]` | `hugegraph/hugegraph:1.7.0` |
| distributed `pd` | `hugegraph-pd-{{ ver }}` | `^hugegraph-pd-` | `hugegraph/pd:1.7.0` |
| distributed `store` | `hugegraph-store-{{ ver }}` | `^hugegraph-store-` | `hugegraph/store:1.7.0` |
| distributed `server` | `hugegraph-server-{{ ver }}` | `^hugegraph-server-` | `hugegraph/server:1.7.0` |

standalone 原来的 `^hugegraph-` 会误伤 `hugegraph-pd-` / `hugegraph-store-` /
`hugegraph-server-`,必须收窄。这是合同要求:`compDef` 正则要稳定命中唯一集合。

## 3. Raft 身份

官方用 hostname 当 Raft 成员 ID(`pd0:8610`)。合同要求不要把不可重算的
Pod 名 / clusterUID 写进引擎成员 ID。这里用 KB `podFQDNs` 生成
`{podFQDN}:port`,恢复或同名重建时只要 FQDN 规则不变就可以重算。

本节点地址从 `podFQDNs` 里按 `hostname` / `metadata.name` 前缀匹配,不手写
headless Service 名。

## 4. 本 PR 声明 / 不声明

声明:

- `distributed` topology 可渲染,orders 闭合
- 三组件 CmpD / ComponentVersion / example 名字对齐
- PD / Store / Server 用官方 `HG_*` 环境变量启动
- 最小规格:pd 3、store 3、server 1

不声明(12b,本轮不验收):

- distributed backup / restore / PITR
- Store scale-in / rebalance
- PD / Store switchover、roleProbe
- TLS、reconfigure
- Hubble
- distributed `systemAccounts` / 生成 admin Secret

BackupPolicyTemplate 继续只命中 standalone server CmpD。
Loading
Loading