Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add helm install based on kubeblocks #1788

Merged
merged 16 commits into from
Aug 8, 2023
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
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
60 changes: 60 additions & 0 deletions tools/kubeblocks_helm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@

# Install pika cluster by kubeblocks
Fellow the kubeblock docs [Install kbcli](https://kubeblocks.io/docs/preview/user_docs/installation/install-kbcli)

## install kubeblocks
Fellow the kubeblock docs [kubeblocks](https://kubeblocks.io/docs/preview/user_docs/installation/install-kubeblocks)

## install pika cluster

### install pika CD and pika cluster
First, use helm install pika cluster definition and install pika cluster.

```bash
cd ./tools/kubeblocks-helm/
helm install pika ./pika
helm install pika-cluster ./pika-cluster
```

Wait for pika cluster until the status to be `Running`.
```bash
kubectl get cluster --watch
````

### Add Pika instance to codis
Then connect codis front end.
```bash
kubectl port-forward svc/pika-cluster-codis-fe 8080
```
Open browser and visit `http://localhost:8080`

Then add pika instance to codis
1. Input group id `1` and click `Add Group` button
2. Input the following pika instance url and group id, then click `Add Server` button
- pika-cluster-pika-0.pika-cluster-pika-headless:9221
- pika-cluster-pika-1.pika-cluster-pika-headless:9221

3. Click `Rebalance all slots` button


### connect to pika cluster
```bash
kubectl port-forward svc/pika-cluster-codis-proxy 19000
# start new terminal
redis-cli -p 19000 info
```

## Scale pika cluster

Use kb cli horizontal scale pika instance, you will get 2 new pika instances.
machinly marked this conversation as resolved.
Show resolved Hide resolved
```bash
kbcli cluster hscale pika-cluster --replicas 4 --components pika
```

Add new pika instances to codis
1. Input group id `2` and click `Add Group` button
2. Input the following pika instance url and group id, then click `Add Server` button
- pika-cluster-pika-2.pika-cluster-pika-headless:9221
- pika-cluster-pika-3.pika-cluster-pika-headless:9221
3. Click `Rebalance all slots` button

23 changes: 23 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
22 changes: 22 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: v2
name: pika-cluster
description: A Pika Codis Cluster Helm chart for KubeBlocks.

type: application

version: 0.6.0-alpha.21

appVersion: "3.5.0-alpha"

home: https://github.com/OpenAtomFoundation/pika
keywords:
- pika
- redis
- database
- nosql
- replication
- codis

maintainers:
- name: pika
url: https://github.com/OpenAtomFoundation/pika/tools/helm
machinly marked this conversation as resolved.
Show resolved Hide resolved
2 changes: 2 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1. Get the application URL by running these commands:

62 changes: 62 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "pika-cluster.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "pika-cluster.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "pika-cluster.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "pika-cluster.labels" -}}
helm.sh/chart: {{ include "pika-cluster.chart" . }}
{{ include "pika-cluster.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "pika-cluster.selectorLabels" -}}
app.kubernetes.io/name: {{ include "pika-cluster.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{- define "clustername" -}}
{{ include "pika-cluster.fullname" .}}
{{- end}}

{{/*
Create the name of the service account to use
*/}}
{{- define "pika-cluster.serviceAccountName" -}}
{{- default (printf "kb-%s" (include "clustername" .)) .Values.serviceAccount.name }}
{{- end }}
138 changes: 138 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/templates/cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
apiVersion: apps.kubeblocks.io/v1alpha1
kind: Cluster
metadata:
name: {{ include "clustername" . }}
labels: {{ include "pika-cluster.labels" . | nindent 4 }}
spec:
clusterDefinitionRef: pika # ref clusterDefinition.name
clusterVersionRef: pika-{{ default .Chart.AppVersion .Values.clusterVersionOverride }} # ref clusterVersion.name
terminationPolicy: {{ .Values.terminationPolicy }}
affinity:
{{- with .Values.topologyKeys }}
topologyKeys: {{ . | toYaml | nindent 6 }}
{{- end }}
{{- with $.Values.tolerations }}
tolerations: {{ . | toYaml | nindent 4 }}
{{- end }}
componentSpecs:
- name: pika # user-defined
componentDefRef: pika # ref clusterDefinition componentDefs.name
monitor: {{ .Values.monitor.enabled | default false }}
enabledLogs: {{ .Values.enabledLogs | toJson | indent 4 }}
replicas: {{ .Values.replicaCount | default 2 }}
serviceAccountName: {{ include "pika-cluster.serviceAccountName" . }}
switchPolicy:
type: {{ .Values.switchPolicy.type}}
{{- with .Values.resources }}
resources:
limits:
cpu: {{ .limits.cpu | quote }}
memory: {{ .limits.memory | quote }}
requests:
cpu: {{ .requests.cpu | quote }}
memory: {{ .requests.memory | quote }}
{{- end }}
{{- if .Values.persistence.enabled }}
volumeClaimTemplates:
- name: data # ref clusterdefinition components.containers.volumeMounts.name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.data.size }}
{{- end }}
- name: etcd # user-defined
componentDefRef: etcd # ref clusterdefinition components.name
monitor: {{ .Values.monitor.enabled | default false }}
replicas: {{ .Values.etcdReplicaCount| default 3 }}
{{- with .Values.resources }}
resources:
{{- with .limits }}
limits:
cpu: {{ .cpu | quote }}
memory: {{ .memory | quote }}
{{- end }}
{{- with .requests }}
requests:
cpu: {{ .cpu | quote }}
memory: {{ .memory | quote }}
{{- end }}
{{- end }}
{{- if .Values.persistence.enabled }}
volumeClaimTemplates:
- name: data # ref clusterdefinition components.containers.volumeMounts.name
spec:
storageClassName: {{ .Values.persistence.data.storageClassName }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.data.size }}
{{- end }}
- name: codis-proxy
componentDefRef: codis-proxy # ref clusterDefinition componentDefs.name
replicas: {{ .Values.codisProxyReplicaCount | default 2 }}
{{- with .Values.resources }}
resources:
limits:
cpu: {{ .limits.cpu | quote }}
memory: {{ .limits.memory | quote }}
requests:
cpu: {{ .requests.cpu | quote }}
memory: {{ .requests.memory | quote }}
{{- end }}
{{- if .Values.persistence.enabled }}
volumeClaimTemplates:
- name: data # ref clusterdefinition components.containers.volumeMounts.name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.data.size }}
{{- end }}
- name: codis-fe
componentDefRef: codis-fe # ref clusterDefinition componentDefs.name
replicas: {{ .Values.codisFeReplicaCount | default 1 }}
{{- with .Values.resources }}
resources:
limits:
cpu: {{ .limits.cpu | quote }}
memory: {{ .limits.memory | quote }}
requests:
cpu: {{ .requests.cpu | quote }}
memory: {{ .requests.memory | quote }}
{{- end }}
{{- if .Values.persistence.enabled }}
volumeClaimTemplates:
- name: data # ref clusterdefinition components.containers.volumeMounts.name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.data.size }}
{{- end }}
- name: codis-dashboard
componentDefRef: codis-dashboard # ref clusterDefinition componentDefs.name
replicas: 1
{{- with .Values.resources }}
resources:
limits:
cpu: {{ .limits.cpu | quote }}
memory: {{ .limits.memory | quote }}
requests:
cpu: {{ .requests.cpu | quote }}
memory: {{ .requests.memory | quote }}
{{- end }}
{{- if .Values.persistence.enabled }}
volumeClaimTemplates:
- name: data # ref clusterdefinition components.containers.volumeMounts.name
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.data.size }}
{{- end }}
14 changes: 14 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/templates/role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: kb-{{ include "clustername" . }}
namespace: {{ .Release.Namespace }}
labels:
{{ include "pika-cluster.labels" . | nindent 4 }}
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- create
14 changes: 14 additions & 0 deletions tools/kubeblocks_helm/pika-cluster/templates/rolebinding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: kb-{{ include "clustername" . }}
labels:
{{ include "pika-cluster.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: kb-{{ include "clustername" . }}
subjects:
- kind: ServiceAccount
name: {{ include "pika-cluster.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "pika-cluster.serviceAccountName" . }}
labels:
{{ include "pika-cluster.labels" . | nindent 4 }}
Loading
Loading