Helm
KubeVela's Helm component meets the needs of users to connect to Helm Chart. You can deploy any ready-made Helm chart software package from Helm Repo, Git Repo or OSS bucket through the Helm component, and overwrite its parameters.
Deploy From Helm Repo
In this Application, we hope to deliver a component called redis-comp. It is a chart from the bitnami.
cat <<EOF | kubectl apply -f -
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-delivering-chart
spec:
components:
- name: redis-comp
type: helm
properties:
chart: redis-cluster
version: 6.2.7
url: https://charts.bitnami.com/bitnami
repoType: helm
EOF
Please copy the above code block and deploy it directly to the runtime cluster:
application.core.oam.dev/app-delivering-chart created
Finally, we use vela ls to view the application status after successful delivery:
APP COMPONENT TYPE TRAITS PHASE HEALTHY STATUS CREATED-TIME
app-delivering-chart redis-comp helm running healthy 2021-08-28 18:48:21 +0800 CST
We also see that the PHASE of the app-delivering-chart APP is running and the STATUS is healthy.
Attributes
| Parameters | Description | Example |
|---|---|---|
| repoType | required, indicates where it's from | Helm |
| pullInterval | optional, synchronize with Helm Repo, tunning interval and 5 minutes by default | 10m |
| url | required, Helm Reop address, it supports http/https | https://charts.bitnami.com/bitnami |
| secretRef | optional, The name of the Secret object that holds the credentials required to pull the repo. The username and password fields must be included in the HTTP/S basic authentication Secret. For TLS the secret must contain a certFile and keyFile, and/or caCert fields. For TLS authentication, the secret must contain a certFile / keyFile field and/or caCert field. | sec-name |
| timeout | optional, timeout for pulling repo index | 60s |
| chart | required, chart title | redis-cluster |
| version | optional, chart version, * by default | 6.2.7 |
| targetNamespace | optional, the namespace to install chart, decided by chart itself | your-ns |
| releaseName | optional, release name after installed | your-rn |
| values | optional, override the Values.yaml inchart, using for the rendering of Helm |
Deploy From OSS bucket
| Parameters | Description | Example |
|---|---|---|
| repoType | required, indicates where it's from | oss |
| pullInterval | optional, synchronize with bucket, tunning interval and 5 minutes by default | 10m |
| url | required, bucket's endpoint and no need to fill in with scheme | oss-cn-beijing.aliyuncs.com |
| secretRef | optional, Save the name of a Secret, which is the credential to read the bucket. Secret contains accesskey and secretkey fields | sec-name |
| timeout | optional, The timeout period of the download operation, the default is 20s | 60s |
| chart | required, Chart storage path (key) | ./chart/podinfo-5.1.3.tgz |
| version | optional, In OSS source, this parameter has no effect | |
| targetNamespace | optional, The namespace of the installed chart, which is determined by the chart itself by default | your-ns |
| releaseName | optional, Installed release name | your-rn |
| values | optional, Overwrite the Values.yaml of the chart for Helm rendering. | |
| oss.bucketName | required, bucket name | your-bucket |
| oss.provider | optional, Optional generic or aws, fill in aws if the certificate is obtained from aws EC2. The default is generic. | generic |
| oss.region | optional, bucket region |
How-to
- (Opentional) If your OSS bucket needs identity verification, create a Secret:
$ kubectl create secret generic bucket-secret --from-literal=accesskey=<your-ak> --from-literal=secretkey=<your-sk>
secret/bucket-secret created
- Example
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: bucket-app
spec:
components:
- name: bucket-comp
type: helm
properties:
repoType: oss
# required if bucket is private
secretRef: bucket-secret
chart: ./chart/podinfo-5.1.3.tgz
url: oss-cn-beijing.aliyuncs.com
oss:
bucketName: definition-registry
Deploy From Git Repo
| Parameters | Description | Example |
|---|---|---|
| repoType | required, indicates where it's from | git |
| pullInterval | optional, synchronize with Git Repo, tunning interval and 5 minutes by default | 10m |
| url | required, Git Repo address | https://github.com/oam-dev/terraform-controller |
| secretRef | optional, The name of the Secret object that holds the credentials required to pull the Git repository. For HTTP/S basic authentication, the Secret must contain the username and password fields. For SSH authentication, the identity, identity.pub and known_hosts fields must be included | sec-name |
| timeout | optional, The timeout period of the download operation, the default is 20s | 60s |
| chart | required, Chart storage path (key) | ./chart/podinfo-5.1.3.tgz |
| version | optional, In Git source, this parameter has no effect | |
| targetNamespace | optional, the namespace to install chart, decided by chart itself | your-ns |
| releaseName | optional, Installed release name | your-rn |
| values | optional, Overwrite the Values.yaml of the chart for Helm rendering. | |
| git.branch | optional, Git branch, master by default | dev |
How-to
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-delivering-chart
spec:
components:
- name: terraform-controller
type: helm
properties:
repoType: git
url: https://github.com/oam-dev/terraform-controller
chart: ./chart
git:
branch: master