diff --git a/README.md b/README.md index fe9b7d493ca..c57d3679153 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,46 @@ using several systems, combined with best-of-breed ideas and practices from the ![volcano](docs/images/volcano-intro.png) +## Installation + +The easiest way to use Volcano is to use the Helm chart. + + +### 1. Volcano Image +Official images now are not available on DockerHub, however you can build them locally with command: +``` +make docker +``` +**NOTE**: You need ensure the images are correctly loaded in your kubernetes cluster, for +example, if you are using [kind cluster](https://github.com/kubernetes-sigs/kind), +try command ```kind load docker-image : ``` for each of the images. + +### 2. Helm charts +First of all, clone repo to your local path +``` +# mkdir -p $GOPATH/src/volcano.sh/ +# cd $GOPATH/src/volcano.sh/ +# git clone https://github.com/volcano-sh/volcano.git +``` +Second, install required helm plugin and generate valid certificate, volcano uses a helm plugin **gen-admission-secret** +to generate certificate for admission service to communicate with kubernetes API server. +``` +#1. Install helm plugin +helm plugin install installer/chart/volcano/plugins/gen-admission-secret + +#2. Generate secret within service name +helm gen-admission-secret --service -admission-service --namespace +``` +Finally, install helm chart. +``` +helm install installer/chart/volcano --namespace --name +``` +**NOTE**:The `````` used in the two commands above should be identical. + + + + + ## Community, discussion, contribution, and support You can reach the maintainers of this project at: diff --git a/installer/chart/volcano-init/Chart.yaml b/installer/chart/volcano-init/Chart.yaml deleted file mode 100644 index ef2fa97f214..00000000000 --- a/installer/chart/volcano-init/Chart.yaml +++ /dev/null @@ -1,4 +0,0 @@ -name: volcano-init -version: 0.0.1 -description: volcano crds and admission-controller config -apiVersion: v1 \ No newline at end of file diff --git a/installer/chart/volcano-init/values.yaml b/installer/chart/volcano-init/values.yaml deleted file mode 100644 index 13097a0c59c..00000000000 --- a/installer/chart/volcano-init/values.yaml +++ /dev/null @@ -1,2 +0,0 @@ -basic: - namespace: default \ No newline at end of file diff --git a/installer/chart/volcano/plugins/gen-admission-secret/gen-admission-secret.sh b/installer/chart/volcano/plugins/gen-admission-secret/gen-admission-secret.sh old mode 100644 new mode 100755 index 3aae09c9083..d7295933cf9 --- a/installer/chart/volcano/plugins/gen-admission-secret/gen-admission-secret.sh +++ b/installer/chart/volcano/plugins/gen-admission-secret/gen-admission-secret.sh @@ -9,7 +9,7 @@ This script uses k8s' CertificateSigningRequest API to a generate a certificate signed by k8s CA suitable for use with webhook services. This requires permissions to create and approve CSR. See https://kubernetes.io/docs/tasks/tls/managing-tls-in-a-cluster for -detailed explantion and additional instructions. +detailed explanation and additional instructions. The server key/cert k8s CA cert are stored in a k8s secret. usage: ${0} [OPTIONS] The following flags are required. @@ -17,7 +17,7 @@ The following flags are required. --namespace Namespace where webhook service and secret reside. --secret Secret name for CA certificate and server certificate/key pair. EOF - exit 1 + exit 0 } while [[ $# -gt 0 ]]; do @@ -41,7 +41,12 @@ while [[ $# -gt 0 ]]; do shift done -[ -z ${service} ] && service=volcano-admission-service +if [ -z ${service} ]; then + echo "'--service' must be specified" + exit 1 +fi + + [ -z ${secret} ] && secret=volcano-admission-secret [ -z ${namespace} ] && namespace=default diff --git a/installer/chart/volcano/plugins/gen-admission-secret/plugin.yaml b/installer/chart/volcano/plugins/gen-admission-secret/plugin.yaml index e2f8698d59a..3159e1d93e5 100644 --- a/installer/chart/volcano/plugins/gen-admission-secret/plugin.yaml +++ b/installer/chart/volcano/plugins/gen-admission-secret/plugin.yaml @@ -1,6 +1,6 @@ name: "gen-admission-secret" version: "1.0.0" -usage: "Integrate Keybase.io tools with Helm" +usage: "Generate valid cert for admission server" description: This plugin provides signed cert to admission server. ignoreFlags: false useTunnel: false diff --git a/installer/chart/volcano/templates/admission-config.yaml b/installer/chart/volcano/templates/admission-config.yaml index 4181dbec8ec..b827910f3b5 100644 --- a/installer/chart/volcano/templates/admission-config.yaml +++ b/installer/chart/volcano/templates/admission-config.yaml @@ -9,7 +9,7 @@ webhooks: caBundle: "" service: name: {{ .Release.Name }}-admission-service - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} path: /jobs failurePolicy: Ignore name: validatejob.volcano.sh @@ -36,7 +36,7 @@ webhooks: caBundle: "" service: name: {{ .Release.Name }}-admission-service - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} path: /mutating-jobs failurePolicy: Ignore name: mutatejob.volcano.sh diff --git a/installer/chart/volcano/templates/admission.yaml b/installer/chart/volcano/templates/admission.yaml index 678b45db019..c82a9d2e478 100644 --- a/installer/chart/volcano/templates/admission.yaml +++ b/installer/chart/volcano/templates/admission.yaml @@ -2,14 +2,13 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ .Release.Name }}-admission - namespace: {{.Values.basic.namespace}} - + namespace: {{ .Release.Namespace }} --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-admission - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} rules: - apiGroups: [""] resources: ["configmaps"] @@ -26,11 +25,11 @@ kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-admission-role - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} subjects: - kind: ServiceAccount name: {{ .Release.Name }}-admission - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: {{ .Release.Name }}-admission @@ -44,7 +43,7 @@ metadata: app: admission admission: "true" name: {{ .Release.Name }}-admission - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} spec: replicas: 1 selector: @@ -89,7 +88,7 @@ metadata: labels: test: admission name: {{ .Release.Name }}-admission-service - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} spec: ports: - port: 443 diff --git a/installer/chart/volcano-init/templates/batch_v1alpha1_job.yaml b/installer/chart/volcano/templates/batch_v1alpha1_job.yaml similarity index 99% rename from installer/chart/volcano-init/templates/batch_v1alpha1_job.yaml rename to installer/chart/volcano/templates/batch_v1alpha1_job.yaml index c47e4c82be4..33ba2d9f079 100644 --- a/installer/chart/volcano-init/templates/batch_v1alpha1_job.yaml +++ b/installer/chart/volcano/templates/batch_v1alpha1_job.yaml @@ -2,6 +2,8 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: jobs.batch.volcano.sh + annotations: + "helm.sh/hook": crd-install spec: group: batch.volcano.sh names: diff --git a/installer/chart/volcano-init/templates/bus_v1alpha1_command.yaml b/installer/chart/volcano/templates/bus_v1alpha1_command.yaml similarity index 97% rename from installer/chart/volcano-init/templates/bus_v1alpha1_command.yaml rename to installer/chart/volcano/templates/bus_v1alpha1_command.yaml index e5b9b451a86..1cf467052b8 100644 --- a/installer/chart/volcano-init/templates/bus_v1alpha1_command.yaml +++ b/installer/chart/volcano/templates/bus_v1alpha1_command.yaml @@ -2,6 +2,8 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: commands.bus.volcano.sh + annotations: + "helm.sh/hook": crd-install spec: group: bus.volcano.sh names: diff --git a/installer/chart/volcano/templates/controllers.yaml b/installer/chart/volcano/templates/controllers.yaml index 69cddc974a7..c12eb5518ce 100644 --- a/installer/chart/volcano/templates/controllers.yaml +++ b/installer/chart/volcano/templates/controllers.yaml @@ -2,14 +2,14 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ .Release.Name }}-controllers - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-controllers - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] @@ -47,12 +47,11 @@ kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-controllers-role - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} subjects: - kind: ServiceAccount name: {{ .Release.Name }}-controllers - # replace with non-default namespace name - namespace: default + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: {{ .Release.Name }}-controllers @@ -63,7 +62,7 @@ kind: Deployment apiVersion: apps/v1 metadata: name: {{ .Release.Name }}-controllers - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} spec: replicas: 1 selector: diff --git a/installer/chart/volcano/templates/scheduler.yaml b/installer/chart/volcano/templates/scheduler.yaml index aac923e3c70..1e51377de5f 100644 --- a/installer/chart/volcano/templates/scheduler.yaml +++ b/installer/chart/volcano/templates/scheduler.yaml @@ -2,14 +2,13 @@ apiVersion: v1 kind: ServiceAccount metadata: name: {{ .Release.Name }}-scheduler - namespace: {{.Values.basic.namespace}} - + namespace: {{ .Release.Namespace }} --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-scheduler - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] @@ -62,12 +61,11 @@ kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: {{ .Release.Name }}-scheduler-role - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} subjects: - kind: ServiceAccount name: {{ .Release.Name }}-scheduler - # replace with non-default namespace name - namespace: default + namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: {{ .Release.Name }}-scheduler @@ -78,7 +76,7 @@ kind: Deployment apiVersion: apps/v1 metadata: name: {{ .Release.Name }}-scheduler - namespace: {{.Values.basic.namespace}} + namespace: {{ .Release.Namespace }} spec: replicas: 1 selector: diff --git a/installer/chart/volcano-init/templates/scheduling_v1alpha1_podgroup.yaml b/installer/chart/volcano/templates/scheduling_v1alpha1_podgroup.yaml similarity index 94% rename from installer/chart/volcano-init/templates/scheduling_v1alpha1_podgroup.yaml rename to installer/chart/volcano/templates/scheduling_v1alpha1_podgroup.yaml index 1432fc160f2..35f5e5bd1de 100644 --- a/installer/chart/volcano-init/templates/scheduling_v1alpha1_podgroup.yaml +++ b/installer/chart/volcano/templates/scheduling_v1alpha1_podgroup.yaml @@ -2,6 +2,8 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: podgroups.scheduling.incubator.k8s.io + annotations: + "helm.sh/hook": crd-install spec: group: scheduling.incubator.k8s.io names: diff --git a/installer/chart/volcano-init/templates/scheduling_v1alpha1_queue.yaml b/installer/chart/volcano/templates/scheduling_v1alpha1_queue.yaml similarity index 92% rename from installer/chart/volcano-init/templates/scheduling_v1alpha1_queue.yaml rename to installer/chart/volcano/templates/scheduling_v1alpha1_queue.yaml index df115259510..ae80ccf2b3c 100644 --- a/installer/chart/volcano-init/templates/scheduling_v1alpha1_queue.yaml +++ b/installer/chart/volcano/templates/scheduling_v1alpha1_queue.yaml @@ -2,6 +2,8 @@ apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: queues.scheduling.incubator.k8s.io + annotations: + "helm.sh/hook": crd-install spec: group: scheduling.incubator.k8s.io names: diff --git a/installer/chart/volcano/values.yaml b/installer/chart/volcano/values.yaml index f7094bd1099..84b6128c04b 100644 --- a/installer/chart/volcano/values.yaml +++ b/installer/chart/volcano/values.yaml @@ -1,6 +1,5 @@ basic: image_tag_version: "1.0" - namespace: default controller_image_name: "volcano-controllers" scheduler_image_name: "volcano-scheduler" admission_image_name: "volcano-admission"