support helm install scheduler estimator

Signed-off-by: jrkeen <jrkeen@hotmail.com>
This commit is contained in:
jrkeen 2021-09-28 16:02:57 +08:00
parent 844939f106
commit 1e07df5eb6
5 changed files with 262 additions and 9 deletions

View File

@ -20,7 +20,7 @@ kubeVersion: ">=1.16.0"
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.0.1
version: 0.0.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to

View File

@ -41,11 +41,71 @@ $ helm uninstall karmada -n karmada-system
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Example
### 1. Install agent
Edited values.yaml
```YAML
installMode: "agent"
agent:
clusterName: "member"
## kubeconfig of the karmada
kubeconfig:
caCrt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
crt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
key: |
-----BEGIN RSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----
server: "https://apiserver.karmada"
```
Execute command (switch to the `root` directory of the repo, and sets the `current-context` in a kubeconfig file)
```console
$ kubectl config use-context member
$ helm install karmada-agent -n karmada-system --create-namespace ./charts
```
### 2. Install component
Edited values.yaml
```YAML
installMode: "component"
components: [
"schedulerEstimator"
]
schedulerEstimator:
clusterName: "member"
## kubeconfig of the member cluster
kubeconfig:
caCrt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
crt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
key: |
-----BEGIN RSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----
server: "https://apiserver.member"
```
Execute command (switch to the `root` directory of the repo, and sets the `current-context` in a kubeconfig file)
```console
$ kubectl config use-context host
$ helm install karmada-scheduler-estimator -n karmada-system ./charts
```
## Configuration
| Name | Description | Value |
| ------------------------- | ----------------------------------------------- | ----- |
| `installMode` | InstallMode "host" and "agent" are provided, "host" means install karmada in the control-cluster, "agent" means install agent client in the member cluster | `"host"`|
| `installMode` | InstallMode "host", "agent" and "component" are provided, "host" means install karmada in the control-cluster, "agent" means install agent client in the member cluster, "component" means install selected components in the control-cluster | `"host"`|
| `clusterDomain` | Default cluster domain for karmada | `"cluster.local"` |
| `components` | Selected components list, selectable values: "schedulerEstimator" | `[]` |
|`certs.mode`| Mode "auto" and "custom" are provided, "auto" means auto generate certificate, "custom" means use user certificate |`"auto"`|
|`certs.auto.expiry`| Expiry of the certificate |`"43800h"`|
|`certs.auto.hosts`| Hosts of the certificate |`["kubernetes.default.svc","*.etcd.karmada-system.svc.cluster.local","*.karmada-system.svc.cluster.local","*.karmada-system.svc","localhost","127.0.0.1"]`|
@ -139,3 +199,20 @@ The command removes all the Kubernetes components associated with the chart and
|`kubeControllerManager.nodeSelector`| Node selector of the kube-controller-manager |`{}`|
|`kubeControllerManager.affinity`| Affinity of the kube-controller-manager |`{}`|
|`kubeControllerManager.tolerations`| Tolerations of the kube-controller-manager |`[]`|
|`schedulerEstimator.clusterName`| Name of the member cluster |`""`|
|`schedulerEstimator.kubeconfig.caCrt`| CA CRT of the certificate |`""`|
|`schedulerEstimator.kubeconfig.crt`| CRT of the certificate |`""`|
|`schedulerEstimator.kubeconfig.key`| KEY of the certificate |`""`|
|`schedulerEstimator.kubeconfig.server`| API-server of the member cluster |`""`|
|`schedulerEstimator.labels`| Labels of the scheduler-estimator deployment |`{}`|
|`schedulerEstimator.replicaCount`| Target replicas of the scheduler-estimator |`1`|
|`schedulerEstimator.podLabels`| Labels of the scheduler-estimator pods |`{}`|
|`schedulerEstimator.podAnnotations`| Annotaions of the scheduler-estimator pods |`{}`|
|`schedulerEstimator.imagePullSecrets`| Image pull secret of the scheduler-estimator |`[]`|
|`schedulerEstimator.image.repository`| Image of the scheduler-estimator |`"swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-scheduler-estimator"`|
|`schedulerEstimator.image.tag`| Image tag of the scheduler-estimator |`"latest"`|
|`schedulerEstimator.image.pullPolicy`| Image pull policy of the scheduler-estimator |`"IfNotPresent"`|
|`schedulerEstimator.resources`| Resource quota of the scheduler-estimator |`{}`|
|`schedulerEstimator.nodeSelector`| Node selector of the scheduler-estimator |`{}`|
|`schedulerEstimator.affinity`| Affinity of the scheduler-estimator |`{}`|
|`schedulerEstimator.tolerations`| Tolerations of the scheduler-estimator |`[]`|

View File

@ -149,3 +149,19 @@ caBundle: {{ print "{{ ca_crt }}" }}
caBundle: {{ b64enc .Values.certs.custom.caCrt }}
{{- end }}
{{- end -}}
{{- define "karmada.schedulerEstimator.podLabels" -}}
{{- if .Values.schedulerEstimator.podLabels }}
{{- range $key, $value := .Values.schedulerEstimator.podLabels}}
{{ $key }}: {{ $value }}
{{- end}}
{{- end }}
{{- end -}}
{{- define "karmada.schedulerEstimator.labels" -}}
{{- if .Values.schedulerEstimator.labels }}
{{- range $key, $value := .Values.schedulerEstimator.labels}}
{{ $key }}: {{ $value }}
{{- end}}
{{- end }}
{{- end -}}

View File

@ -0,0 +1,93 @@
{{- if and (eq .Values.installMode "component") (has "schedulerEstimator" .Values.components) }}
{{ $namespace := include "karmada.namespace" .}}
{{ $clusterName := .Values.schedulerEstimator.clusterName }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: karmada-scheduler-estimator-{{ $clusterName }}
namespace: {{ $namespace }}
labels:
cluster: {{ $clusterName }}
{{- include "karmada.schedulerEstimator.labels" . | nindent 4}}
spec:
replicas: {{ .Values.schedulerEstimator.replicaCount }}
selector:
matchLabels:
app: karmada-scheduler-estimator-{{ $clusterName }}
{{- include "karmada.schedulerEstimator.labels" . | nindent 6}}
template:
metadata:
{{- with .Values.schedulerEstimator.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
app: karmada-scheduler-estimator-{{ $clusterName }}
{{- include "karmada.schedulerEstimator.labels" . | nindent 8}}
{{- include "karmada.schedulerEstimator.podLabels" . | nindent 8}}
spec:
{{- with .Values.schedulerEstimator.tolerations}}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: karmada-scheduler-estimator
image: "{{ .Values.schedulerEstimator.image.repository }}:{{ .Values.schedulerEstimator.image.tag | default "latest" }}"
imagePullPolicy: {{ .Values.schedulerEstimator.image.pullPolicy }}
command:
- /bin/karmada-scheduler-estimator
- --kubeconfig=/etc/{{ $clusterName }}-kubeconfig
- --cluster-name={{ $clusterName }}
volumeMounts:
- name: member-kubeconfig
subPath: {{ $clusterName }}-kubeconfig
mountPath: /etc/{{ $clusterName }}-kubeconfig
volumes:
- name: member-kubeconfig
secret:
secretName: {{ $clusterName }}-kubeconfig
---
apiVersion: v1
kind: Service
metadata:
name: karmada-scheduler-estimator-{{ $clusterName }}
namespace: {{ $namespace }}
labels:
cluster: {{ $clusterName }}
spec:
selector:
app: karmada-scheduler-estimator-{{ $clusterName }}
{{- include "karmada.schedulerEstimator.labels" . | nindent 4}}
ports:
- protocol: TCP
port: 10352
targetPort: 10352
---
apiVersion: v1
kind: Secret
metadata:
name: {{ $clusterName }}-kubeconfig
namespace: {{ $namespace }}
stringData:
{{ $clusterName }}-kubeconfig: |-
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: {{ b64enc .Values.schedulerEstimator.kubeconfig.caCrt }}
insecure-skip-tls-verify: false
server: {{ .Values.schedulerEstimator.kubeconfig.server }}
name: {{ $clusterName }}-apiserver
users:
- user:
client-certificate-data: {{ b64enc .Values.schedulerEstimator.kubeconfig.crt }}
client-key-data: {{ b64enc .Values.schedulerEstimator.kubeconfig.key }}
name: {{ $clusterName }}-apiserver
contexts:
- context:
cluster: {{ $clusterName }}-apiserver
user: {{ $clusterName }}-apiserver
name: {{ $clusterName }}-apiserver
current-context: {{ $clusterName }}-apiserver
{{- end }}

View File

@ -5,11 +5,18 @@
## @param installMode "host" and "agent" are provided
## "host" means install karmada in the control-cluster
## "agent" means install agent client in the member cluster
## "component" means install selected components in the control-cluster
installMode: "host"
## @param clusterDomain default domain for karmada
clusterDomain: "cluster.local"
## @param components component list
components: []
# components: [
# "schedulerEstimator"
# ]
## karmada certificate config
certs:
## @param certs.mode "auto" and "custom" are provided
@ -63,7 +70,7 @@ scheduler:
repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-scheduler
## @param scheduler.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param scheduler.image.tag verrides the image tag whose default is the latest
## @param scheduler.image.tag overrides the image tag whose default is the latest
tag: latest
## @param scheduler.resources
resources: { }
@ -102,7 +109,7 @@ webhook:
repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-webhook
## @param webhook.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param webhook.image.tag verrides the image tag whose default is the latest
## @param webhook.image.tag overrides the image tag whose default is the latest
tag: latest
## @param webhook.resources
resources: { }
@ -141,7 +148,7 @@ controllerManager:
repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-controller-manager
## @param controllerManager.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param controllerManager.image.tag verrides the image tag whose default is the latest
## @param controllerManager.image.tag overrides the image tag whose default is the latest
tag: latest
## @param controllerManager.resources
resources: { }
@ -180,7 +187,7 @@ apiServer:
repository: k8s.gcr.io/kube-apiserver
## @param apiServer.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param apiServer.image.tag verrides the image tag whose default is the latest
## @param apiServer.image.tag overrides the image tag whose default is the latest
tag: "v1.19.1"
## @param apiServer.resources
resources: { }
@ -219,7 +226,7 @@ kubeControllerManager:
repository: k8s.gcr.io/kube-controller-manager
## @param kubeControllerManager.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param kubeControllerManager.image.tag verrides the image tag whose default is the latest
## @param kubeControllerManager.image.tag overrides the image tag whose default is the latest
tag: "v1.19.1"
## @param kubeControllerManager.resources
resources:
@ -276,13 +283,14 @@ etcd:
repository: k8s.gcr.io/etcd
## @param etcd.internal.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param etcd.internal.image.tag verrides the image tag whose default is the latest
## @param etcd.internal.image.tag overrides the image tag whose default is the latest
tag: "3.4.13-0"
## agent client config
agent:
## @param agent.clusterName name of the member cluster
clusterName: ""
## kubeconfig of the karmada
kubeconfig:
## @param agent.kubeconfig.caCrt ca of the certificate
caCrt: |
@ -317,7 +325,7 @@ agent:
repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-agent
## @param agent.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param agent.image.tag verrides the image tag whose default is the latest
## @param agent.image.tag overrides the image tag whose default is the latest
tag: latest
## @param agent.resources
resources: { }
@ -337,3 +345,62 @@ agent:
tolerations: { }
# - key: node-role.kubernetes.io/master
# operator: Exists
## karmada scheduler estimator
schedulerEstimator:
## schedulerEstimator.clusterName the name of the member cluster
clusterName: ""
## kubeconfig of the member cluster
kubeconfig:
## @param schedulerEstimator.kubeconfig.caCrt ca of the certificate
caCrt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
## @param schedulerEstimator.kubeconfig.crt crt of the certificate
crt: |
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE-----
## @param schedulerEstimator.kubeconfig.key key of the certificate
key: |
-----BEGIN RSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----
## @param schedulerEstimator.kubeconfig.server apiserver of the member cluster
server: ""
## @param schedulerEstimator.labels
labels: {}
## @param schedulerEstimator.replicaCount target replicas
replicaCount: 1
## @param schedulerEstimator.podAnnotations
podAnnotations: { }
## @param schedulerEstimator.podLabels
podLabels: { }
## @param schedulerEstimator.imagePullSecrets
imagePullSecrets: [ ]
image:
## @param schedulerEstimator.image.repository image of the apiserver
repository: swr.ap-southeast-1.myhuaweicloud.com/karmada/karmada-scheduler-estimator
## @param schedulerEstimator.image.pullPolicy pull policy of image
pullPolicy: IfNotPresent
## @param schedulerEstimator.image.tag overrides the image tag whose default is the latest
tag: "latest"
## @param schedulerEstimator.resources
resources: { }
# If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
## @param schedulerEstimator.nodeSelector
nodeSelector: { }
## @param schedulerEstimator.affinity
affinity: { }
## @param schedulerEstimator.tolerations
tolerations: [ ]
# - key: node-role.kubernetes.io/master
# operator: Exists