-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23 from startechnica/mayastor
[mayastor] Release v0.1.0
- Loading branch information
Showing
32 changed files
with
3,835 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# 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 | ||
*~ | ||
|
||
# Various IDEs | ||
.project | ||
.idea/ | ||
*.tmproj | ||
.vscode/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
annotations: | ||
category: Storage | ||
apiVersion: v2 | ||
appVersion: 1.0.2 | ||
dependencies: | ||
- name: common | ||
repository: https://charts.bitnami.com/bitnami | ||
tags: | ||
- bitnami-common | ||
version: 1.x.x | ||
- name: etcd | ||
condition: etcd.enabled | ||
repository: https://charts.bitnami.com/bitnami | ||
tags: | ||
- bitnami-etcd | ||
version: 8.x.x | ||
- name: jaeger-operator | ||
condition: jaeger.enabled | ||
repository: https://jaegertracing.github.io/helm-charts | ||
version: 2.32.2 | ||
- name: loki-stack | ||
condition: lokiStack.enabled | ||
version: 2.6.5 | ||
repository: https://grafana.github.io/helm-charts | ||
description: Mayastor is a cloud-native declarative data plane written in Rust. | ||
Our goal is to abstract storage resources and their differences through the data | ||
plane such that users only need to supply the what and do not have to worry about | ||
the how so that individual teams stay in control. | ||
home: https://github.com/startechnica/apps/tree/main/charts/mayastor | ||
icon: https://openebs.io/images/seo/openebs.png | ||
keywords: | ||
- mayastor | ||
- openebs | ||
maintainers: | ||
- name: firmansyahn | ||
email: [email protected] | ||
url: https://firmansyah.nainggolan.id | ||
name: mayastor | ||
sources: | ||
- https://github.com/openebs/mayastor | ||
- https://github.com/openebs/mayastor-control-plane | ||
- https://github.com/openebs/mayastor-api | ||
- https://openebs.io/docs/concepts/mayastor | ||
- https://mayastor.gitbook.io | ||
type: application | ||
version: 0.1.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
<!--- app-name: Mayastor --> | ||
|
||
# Helm chart for Mayastor | ||
|
||
Mayastor is a cloud-native declarative data plane written in Rust. The goal is to abstract storage resources and their differences through the data plane such that users only need to supply the what and do not have to worry about the how so that individual teams stay in control. | ||
|
||
Mayastor also try to be as unopinionated as possible. What this means is that we try to work with the existing storage systems you might already have and unify them as abstract resources instead of swapping them out whenever the resources are local or remote. | ||
|
||
[Overview of Mayastor](https://mayastor.gitbook.io) | ||
|
||
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/startechnica/apps/issues/new/choose)** | ||
|
||
## TL;DR | ||
|
||
```bash | ||
$ helm repo add startechnica https://startechnica.github.io/apps | ||
$ helm install my-release startechnica/mayastor | ||
``` | ||
|
||
## Prerequisites | ||
|
||
- Kubernetes 1.20+ | ||
- Helm 3.2.0+ | ||
|
||
## Installing the Chart | ||
|
||
To install the chart with the release name `my-release` on `my-release` namespace: | ||
|
||
```bash | ||
$ helm repo add startechnica https://startechnica.github.io/apps | ||
$ helm install my-release startechnica/mayastor --namespace my-release --create-namespace | ||
``` | ||
|
||
These commands deploy Mayastor on the Kubernetes cluster in the default configuration. | ||
|
||
> **Tip**: List all releases using `helm list -A` | ||
## Uninstalling the Chart | ||
|
||
To uninstall/delete the `my-release` deployment: | ||
|
||
```bash | ||
$ helm delete my-release --namespace my-release | ||
``` | ||
|
||
The command removes all the Kubernetes components associated with the chart and deletes the release. | ||
|
||
## Parameters | ||
|
||
### Global parameters | ||
|
||
| Name | Description | Value | | ||
| ------------------------- | ----------------------------------------------- | ----- | | ||
| `global.imageRegistry` | Global Docker image registry | `""` | | ||
| `global.imagePullSecrets` | Global Docker registry secret names as an array | `[]` | | ||
|
||
### Common parameters | ||
|
||
| Name | Description | Value | | ||
| ------------------- | ------------------------------------------------------------------------------------------ | --------------- | | ||
| `nameOverride` | String to partially override mayastor.fullname template (will maintain the release name) | `""` | | ||
| `namespaceOverride` | | `""` | | ||
| `fullnameOverride` | String to fully override mayastor.fullname template | `""` | | ||
| `kubeVersion` | Force target Kubernetes version (using Helm capabilities if not set) | `""` | | ||
| `clusterDomain` | Kubernetes Cluster Domain | `cluster.local` | | ||
| `extraDeploy` | Extra objects to deploy (value evaluated as a template) | `[]` | | ||
| `commonLabels` | Add labels to all the deployed resources | `{}` | | ||
| `commonAnnotations` | Add annotations to all the deployed resources | `{}` | | ||
|
||
### I/O Engine Dataplane Deployment | ||
|
||
### CSI Node Deployment | ||
|
||
### CSI Controller Deployment | ||
|
||
### Agent Core Deployment | ||
|
||
### API Rest Deployment | ||
|
||
### ETCD Deployment | ||
|
||
### Setting Pod's affinity | ||
|
||
This chart allows you to set your custom affinity using the `affinity` parameter. Find more information about Pod's affinity in the [kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity). | ||
|
||
### Deploying extra resources | ||
|
||
There are cases where you may want to deploy extra objects, such a ConfigMap containing your app's configuration or some extra deployment with a micro service used by your app. For covering this case, the chart allows adding the full specification of other objects using the `extraDeploy` parameter. | ||
|
||
## Troubleshooting | ||
|
||
Find more information about how to deal with common errors related to Startechnica's Helm charts in [this troubleshooting guide](https://startechnica.github.io/doc/troubleshoot-helm-chart-issues). | ||
|
||
## License | ||
|
||
Copyright © 2022 Startechnica | ||
|
||
Licensed 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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
{{- if .Values.csiDriver.create -}} | ||
apiVersion: storage.k8s.io/v1 | ||
kind: CSIDriver | ||
metadata: | ||
name: io.openebs.csi-mayastor | ||
spec: | ||
podInfoOnMount: {{ .Values.csiDriver.podInfoOnMount }} | ||
attachRequired: {{ .Values.csiDriver.attachRequired }} | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
apiVersion: apps/v1 | ||
kind: DaemonSet | ||
metadata: | ||
name: {{ printf "%s" (include "common.names.fullname" .) }} | ||
namespace: {{ include "common.names.namespace" . | quote }} | ||
labels: {{- include "common.labels.standard" . | nindent 4 }} | ||
openebs.io/engine: io-engine | ||
app.kubernetes.io/component: mayastor | ||
{{- if .Values.commonLabels }} | ||
{{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 4 }} | ||
{{- end }} | ||
{{- if .Values.commonAnnotations }} | ||
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }} | ||
{{- end }} | ||
spec: | ||
revisionHistoryLimit: 2 | ||
selector: | ||
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }} | ||
app.kubernetes.io/component: mayastor | ||
updateStrategy: | ||
type: RollingUpdate | ||
rollingUpdate: | ||
maxUnavailable: 1 | ||
minReadySeconds: 10 | ||
template: | ||
metadata: | ||
{{- if .Values.podAnnotations }} | ||
annotations: | ||
{{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }} | ||
{{- end }} | ||
labels: {{- include "common.labels.standard" . | nindent 8 }} | ||
app.kubernetes.io/component: mayastor | ||
{{- if .Values.podLabels }} | ||
{{- include "common.tplvalues.render" (dict "value" .Values.podLabels "context" $) | nindent 8 }} | ||
{{- end }} | ||
spec: | ||
# To resolve services from mayastor's namespace | ||
dnsPolicy: ClusterFirstWithHostNet | ||
hostNetwork: true | ||
{{- include "mayastor.imagePullSecrets" . | nindent 6 }} | ||
{{- if .Values.nodeSelector }} | ||
nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $) | nindent 8 }} | ||
{{- end }} | ||
serviceAccountName: {{ include "mayastor.serviceAccountName" . }} | ||
{{- if .Values.tolerations }} | ||
tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" .) | nindent 8 }} | ||
{{- end }} | ||
{{- if .Values.topologySpreadConstraints }} | ||
topologySpreadConstraints: {{- include "common.tplvalues.render" (dict "value" .Values.topologySpreadConstraints "context" .) | nindent 8 }} | ||
{{- end }} | ||
containers: | ||
- name: mayastor | ||
image: {{ include "mayastor.image" . }} | ||
imagePullPolicy: {{ .Values.image.pullPolicy | quote }} | ||
env: | ||
- name: NVMF_TCP_MAX_QUEUE_DEPTH | ||
value: "32" | ||
- name: MY_NODE_NAME | ||
valueFrom: | ||
fieldRef: | ||
fieldPath: spec.nodeName | ||
- name: MY_POD_IP | ||
valueFrom: | ||
fieldRef: | ||
fieldPath: status.podIP | ||
- name: RUST_LOG | ||
value: info,mayastor={{ .Values.mayastorLogLevel }} | ||
- name: RUST_BACKTRACE | ||
value: full | ||
{{- if .Values.diagnosticMode.enabled }} | ||
command: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.command "context" $) | nindent 12 }} | ||
{{- else if .Values.command }} | ||
command: {{- include "common.tplvalues.render" (dict "value" .Values.command "context" $) | nindent 12 }} | ||
{{- else }} | ||
command: | ||
- mayastor | ||
{{- end }} | ||
{{- if .Values.diagnosticMode.enabled }} | ||
args: {{- include "common.tplvalues.render" (dict "value" .Values.diagnosticMode.args "context" $) | nindent 12 }} | ||
{{- else if .Values.args }} | ||
args: {{- include "common.tplvalues.render" (dict "value" .Values.args "context" $) | nindent 12 }} | ||
{{- else }} | ||
args: | ||
# The -l argument accepts cpu-list. Indexing starts at zero. | ||
# For example -l 1,2,10-20 means use core 1, 2, 10 to 20. | ||
# Note: Ensure that the CPU resources are updated accordingly. | ||
# If you use 2 CPUs, the CPU: field should also read 2. | ||
- "-N$(MY_NODE_NAME)" | ||
- "-g$(MY_POD_IP)" | ||
- "-y/var/local/mayastor/config.yaml" | ||
- "-l{{ include "mayastorCpuSpec" . }}" | ||
- "-pmayastor-etcd" | ||
{{- end }} | ||
securityContext: | ||
privileged: true | ||
resources: | ||
# NOTE: Each container must have mem/cpu limits defined in order to | ||
# belong to Guaranteed QoS class, hence can never get evicted in case of | ||
# pressure unless they exceed those limits. limits and requests must be the same. | ||
limits: | ||
cpu: "{{ .Values.mayastorCpuCount }}" | ||
memory: "1Gi" | ||
hugepages-2Mi: "{{ max .Values.mayastorHugePagesGiB 2 }}Gi" | ||
requests: | ||
cpu: "{{ .Values.mayastorCpuCount }}" | ||
memory: "1Gi" | ||
hugepages-2Mi: "{{ max .Values.mayastorHugePagesGiB 2 }}Gi" | ||
ports: | ||
- containerPort: 10124 | ||
name: mayastor | ||
protocol: TCP | ||
volumeMounts: | ||
- name: device | ||
mountPath: /dev | ||
- name: run-udev | ||
mountPath: /run/udev | ||
- name: dshm | ||
mountPath: /dev/shm | ||
- name: configlocation | ||
mountPath: /var/local/mayastor/ | ||
volumes: | ||
- name: device | ||
hostPath: | ||
path: /dev | ||
type: Directory | ||
- name: run-udev | ||
hostPath: | ||
path: /run/udev | ||
type: Directory | ||
- name: dshm | ||
emptyDir: | ||
medium: Memory | ||
sizeLimit: "1Gi" | ||
- name: hugepage | ||
emptyDir: | ||
medium: HugePages | ||
- name: configlocation | ||
hostPath: | ||
path: /var/local/mayastor/ | ||
type: DirectoryOrCreate |
Oops, something went wrong.