create helm chart for ks-core
Signed-off-by: Roland.Ma <rolandma@yunify.com>
This commit is contained in:
7
Makefile
7
Makefile
@@ -90,6 +90,13 @@ docker-build: all
|
|||||||
docker-build-no-test: ks-apiserver ks-controller-manager
|
docker-build-no-test: ks-apiserver ks-controller-manager
|
||||||
hack/docker_build.sh
|
hack/docker_build.sh
|
||||||
|
|
||||||
|
helm-package:
|
||||||
|
ls config/crds/ | grep -v types.kubefed.io | xargs -i cp -r config/crds/{} config/ks-core/crds/
|
||||||
|
helm package config/ks-core --app-version=v3.1.0 --version=0.1.0 -d ./bin
|
||||||
|
|
||||||
|
helm-deploy:
|
||||||
|
helm upgrade --install ks-core ./config/ks-core -n kubesphere-system --create-namespace
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
test: fmt vet
|
test: fmt vet
|
||||||
export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=2m; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt
|
export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=2m; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt
|
||||||
|
|||||||
23
config/ks-core/.helmignore
Normal file
23
config/ks-core/.helmignore
Normal file
@@ -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/
|
||||||
15
config/ks-core/Chart.yaml
Normal file
15
config/ks-core/Chart.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: ks-core
|
||||||
|
description: A Helm chart for KubeSphere Core components
|
||||||
|
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# 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.1.0
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
appVersion: "v3.1.0"
|
||||||
0
config/ks-core/crds/.gitkeep
Normal file
0
config/ks-core/crds/.gitkeep
Normal file
0
config/ks-core/templates/NOTES.txt
Normal file
0
config/ks-core/templates/NOTES.txt
Normal file
63
config/ks-core/templates/_helpers.tpl
Normal file
63
config/ks-core/templates/_helpers.tpl
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "ks-core.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 "ks-core.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 "ks-core.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "ks-core.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "ks-core.chart" . }}
|
||||||
|
{{ include "ks-core.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "ks-core.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "ks-core.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "ks-core.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "ks-core.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
129
config/ks-core/templates/ks-apiserver.yml
Normal file
129
config/ks-core/templates/ks-apiserver.yml
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-apiserver
|
||||||
|
tier: backend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-apiserver
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 0
|
||||||
|
type: RollingUpdate
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ks-apiserver
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-apiserver
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- command:
|
||||||
|
- ks-apiserver
|
||||||
|
- --logtostderr=true
|
||||||
|
image: {{ .Values.image.ks_apiserver_repo }}:{{ .Values.image.ks_apiserver_tag | default .Chart.AppVersion }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
name: ks-apiserver
|
||||||
|
ports:
|
||||||
|
- containerPort: 9090
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.apiserverResources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /var/run/docker.sock
|
||||||
|
name: docker-sock
|
||||||
|
- mountPath: /etc/kubesphere/ingress-controller
|
||||||
|
name: ks-router-config
|
||||||
|
- mountPath: /etc/kubesphere/
|
||||||
|
name: kubesphere-config
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: host-time
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 8
|
||||||
|
httpGet:
|
||||||
|
path: /kapis/version
|
||||||
|
port: 9090
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 15
|
||||||
|
timeoutSeconds: 15
|
||||||
|
serviceAccountName: {{ include "ks-core.serviceAccountName" . }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
preference:
|
||||||
|
matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ""
|
||||||
|
{{- if gt .Values.replicaCount 1.0 }}
|
||||||
|
podAntiAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- topologyKey: kubernetes.io/hostname
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ks-apiserver
|
||||||
|
namespaces:
|
||||||
|
- kubesphere-system
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- hostPath:
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
type: ""
|
||||||
|
name: docker-sock
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: ks-router-config
|
||||||
|
name: ks-router-config
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: kubesphere-config
|
||||||
|
name: kubesphere-config
|
||||||
|
- hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
type: ""
|
||||||
|
name: host-time
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-apiserver
|
||||||
|
labels:
|
||||||
|
app: ks-apiserver
|
||||||
|
tier: backend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-apiserver
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 9090
|
||||||
|
selector:
|
||||||
|
app: ks-apiserver
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
type: ClusterIP
|
||||||
28
config/ks-core/templates/ks-console-config.yml
Normal file
28
config/ks-core/templates/ks-console-config.yml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
local_config.yaml: |
|
||||||
|
server:
|
||||||
|
http:
|
||||||
|
hostname: localhost
|
||||||
|
port: 8000
|
||||||
|
static:
|
||||||
|
production:
|
||||||
|
/public: server/public
|
||||||
|
/assets: dist/assets
|
||||||
|
/dist: dist
|
||||||
|
redis:
|
||||||
|
port: 6379
|
||||||
|
host: redis.kubesphere-system.svc
|
||||||
|
redisTimeout: 5000
|
||||||
|
sessionTimeout: 7200000
|
||||||
|
client:
|
||||||
|
version:
|
||||||
|
kubesphere: {{ .Chart.AppVersion }}
|
||||||
|
kubernetes: {{ .Values.kube_version }}
|
||||||
|
openpitrix: {{ .Chart.AppVersion }}
|
||||||
|
enableKubeConfig: true
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: ks-console-config
|
||||||
|
namespace: kubesphere-system
|
||||||
118
config/ks-core/templates/ks-console.yml
Normal file
118
config/ks-core/templates/ks-console.yml
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-console
|
||||||
|
tier: frontend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-console
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 0
|
||||||
|
type: RollingUpdate
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ks-console
|
||||||
|
tier: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-console
|
||||||
|
tier: frontend
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: {{ .Values.image.ks_console_repo }}:{{ .Values.image.ks_console_tag | default .Chart.AppVersion }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
name: ks-console
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.consoleResources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /opt/kubesphere/console/server/local_config.yaml
|
||||||
|
name: ks-console-config
|
||||||
|
subPath: local_config.yaml
|
||||||
|
- mountPath: /opt/kubesphere/console/server/sample
|
||||||
|
name: sample-bookinfo
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: host-time
|
||||||
|
livenessProbe:
|
||||||
|
tcpSocket:
|
||||||
|
port: 8000
|
||||||
|
initialDelaySeconds: 15
|
||||||
|
timeoutSeconds: 15
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 8
|
||||||
|
serviceAccount: kubesphere
|
||||||
|
serviceAccountName: kubesphere
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
preference:
|
||||||
|
matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ""
|
||||||
|
{{- if gt .Values.replicaCount 1.0 }}
|
||||||
|
podAntiAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- topologyKey: kubernetes.io/hostname
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ks-console
|
||||||
|
namespaces:
|
||||||
|
- kubesphere-system
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: ks-console-config
|
||||||
|
items:
|
||||||
|
- key: local_config.yaml
|
||||||
|
path: local_config.yaml
|
||||||
|
name: ks-console-config
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: sample-bookinfo
|
||||||
|
name: sample-bookinfo
|
||||||
|
- hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
type: ""
|
||||||
|
name: host-time
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-console
|
||||||
|
tier: frontend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-console
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: nginx
|
||||||
|
port: 80
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8000
|
||||||
|
{{- with .Values.console.port }}
|
||||||
|
nodePort:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
app: ks-console
|
||||||
|
tier: frontend
|
||||||
|
type: {{ .Values.console.type }}
|
||||||
129
config/ks-core/templates/ks-controller-manager.yaml
Normal file
129
config/ks-core/templates/ks-controller-manager.yaml
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-controller-manager
|
||||||
|
tier: backend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-controller-manager
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 0
|
||||||
|
type: RollingUpdate
|
||||||
|
progressDeadlineSeconds: 600
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ks-controller-manager
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-controller-manager
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- command:
|
||||||
|
- controller-manager
|
||||||
|
- --logtostderr=true
|
||||||
|
- --leader-elect=true
|
||||||
|
image: {{ .Values.image.ks_controller_manager_repo }}:{{ .Values.image.ks_controller_manager_tag | default .Chart.AppVersion }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
name: ks-controller-manager
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
- containerPort: 8443
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.controllerManagerResources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/kubesphere/
|
||||||
|
name: kubesphere-config
|
||||||
|
- mountPath: /tmp/k8s-webhook-server/serving-certs
|
||||||
|
name: webhook-secret
|
||||||
|
- mountPath: /var/lib/kubelet/plugins/
|
||||||
|
name: kubelet-plugin
|
||||||
|
- mountPath: /etc/localtime
|
||||||
|
name: host-time
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
restartPolicy: Always
|
||||||
|
schedulerName: default-scheduler
|
||||||
|
serviceAccountName: {{ include "ks-core.serviceAccountName" . }}
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- name: kubesphere-config
|
||||||
|
configMap:
|
||||||
|
name: kubesphere-config
|
||||||
|
defaultMode: 420
|
||||||
|
- name: webhook-secret
|
||||||
|
secret:
|
||||||
|
defaultMode: 420
|
||||||
|
secretName: ks-controller-manager-webhook-cert
|
||||||
|
- name: kubelet-plugin
|
||||||
|
hostPath:
|
||||||
|
path: /var/lib/kubelet/plugins/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
- hostPath:
|
||||||
|
path: /etc/localtime
|
||||||
|
type: ""
|
||||||
|
name: host-time
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- weight: 100
|
||||||
|
preference:
|
||||||
|
matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ""
|
||||||
|
{{- if gt .Values.replicaCount 1.0 }}
|
||||||
|
podAntiAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- topologyKey: kubernetes.io/hostname
|
||||||
|
labelSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: app
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- ks-controller-manager
|
||||||
|
namespaces:
|
||||||
|
- kubesphere-system
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ks-controller-manager
|
||||||
|
tier: backend
|
||||||
|
version: {{ .Chart.AppVersion }}
|
||||||
|
name: ks-controller-manager
|
||||||
|
namespace: kubesphere-system
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 443
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8443
|
||||||
|
selector:
|
||||||
|
app: ks-controller-manager
|
||||||
|
tier: backend
|
||||||
|
# version: {{ .Chart.AppVersion }}
|
||||||
|
sessionAffinity: None
|
||||||
|
type: ClusterIP
|
||||||
10
config/ks-core/templates/ks-router-cm.yaml
Normal file
10
config/ks-core/templates/ks-router-cm.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: ks-router-config
|
||||||
|
namespace: kubesphere-system
|
||||||
|
data:
|
||||||
|
ingress-controller-svc.yaml: |+
|
||||||
|
{{- include "ingress-controller-svc.yaml" . }}
|
||||||
|
ingress-controller.yaml: |
|
||||||
|
{{- include "ingress-controller.yaml" . }}
|
||||||
96
config/ks-core/templates/ks-router-config.tpl
Normal file
96
config/ks-core/templates/ks-router-config.tpl
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
|
||||||
|
{{- define "ingress-controller.yaml" }}
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: ks-router
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: kubesphere
|
||||||
|
component: ks-router
|
||||||
|
tier: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: kubesphere
|
||||||
|
component: ks-router
|
||||||
|
tier: backend
|
||||||
|
annotations:
|
||||||
|
prometheus.io/port: '10254'
|
||||||
|
prometheus.io/scrape: 'true'
|
||||||
|
spec:
|
||||||
|
serviceAccountName: kubesphere-router-serviceaccount
|
||||||
|
containers:
|
||||||
|
- name: nginx-ingress-controller
|
||||||
|
image: {{ .Values.image.nginx_ingress_controller_repo }}:{{ .Values.image.nginx_ingress_controller_tag | default .Chart.AppVersion}}
|
||||||
|
args:
|
||||||
|
- /nginx-ingress-controller
|
||||||
|
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
|
||||||
|
- --annotations-prefix=nginx.ingress.kubernetes.io
|
||||||
|
- --update-status
|
||||||
|
- --update-status-on-shutdown
|
||||||
|
env:
|
||||||
|
- name: POD_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.name
|
||||||
|
- name: POD_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
- name: https
|
||||||
|
containerPort: 443
|
||||||
|
livenessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 10254
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 1
|
||||||
|
readinessProbe:
|
||||||
|
failureThreshold: 3
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 10254
|
||||||
|
scheme: HTTP
|
||||||
|
periodSeconds: 10
|
||||||
|
successThreshold: 1
|
||||||
|
timeoutSeconds: 1
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: false
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "ingress-controller-svc.yaml" }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: kubesphere-router-gateway
|
||||||
|
labels:
|
||||||
|
app: kubesphere
|
||||||
|
component: ks-router
|
||||||
|
tier: backend
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: kubesphere
|
||||||
|
component: ks-router
|
||||||
|
tier: backend
|
||||||
|
type: LoadBalancer
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
- name: https
|
||||||
|
protocol: TCP
|
||||||
|
port: 443
|
||||||
|
targetPort: 443
|
||||||
|
{{- end }}
|
||||||
34
config/ks-core/templates/kubesphere-config.yaml
Normal file
34
config/ks-core/templates/kubesphere-config.yaml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{{- if .Values.config.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: kubesphere-config
|
||||||
|
namespace: kubesphere-system
|
||||||
|
data:
|
||||||
|
kubesphere.yaml: |
|
||||||
|
authentication:
|
||||||
|
authenticateRateLimiterMaxTries: {{ .Values.config.authentication.authenticateRateLimiterMaxTries | default 10 }}
|
||||||
|
authenticateRateLimiterDuration: {{ .Values.config.authentication.authenticationRateLimiterDuration | default "10m0s" }}
|
||||||
|
loginHistoryRetentionPeriod: {{ .Values.config.authentication.loginHistoryRetentionPeriod | default "168h" }}
|
||||||
|
maximumClockSkew: {{ .Values.config.authentication.maximumClockSkew | default "10s" }}
|
||||||
|
multipleLogin: {{ .Values.console.enableMultiLogin | default true }}
|
||||||
|
kubectlImage: {{ .Values.image.ks_kubectl_repo }}:{{ .Values.image.ks_kubectl_tag | default "latest" }}
|
||||||
|
jwtSecret: "{{ .Values.jwtSecret }}"
|
||||||
|
{{- if .Values.config.authentication.oauthOptions }}
|
||||||
|
{{- with .Values.config.authentication.oauthOptions }}
|
||||||
|
oauthOptions:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if eq (default .Values.config.multicluster.clusterRole "none") "member" }}
|
||||||
|
oauthOptions:
|
||||||
|
accessTokenMaxAge: 0
|
||||||
|
{{- end }}
|
||||||
|
monitoring:
|
||||||
|
endpoint: {{ .Values.config.monitoring.endpoint | default "http://prometheus-operated.kubesphere-monitoring-system.svc:9090" }}
|
||||||
|
|
||||||
|
{{- with .Values.config.servicemesh }}
|
||||||
|
servicemesh:
|
||||||
|
{{- toYaml . | nindent 6 }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- end }}
|
||||||
238
config/ks-core/templates/kubesphere-controls-system.yaml
Normal file
238
config/ks-core/templates/kubesphere-controls-system.yaml
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
name: system:kubesphere-router-clusterrole
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
- endpoints
|
||||||
|
- nodes
|
||||||
|
- pods
|
||||||
|
- secrets
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- get
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- nodes
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- "extensions"
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- "networking.k8s.io"
|
||||||
|
resources:
|
||||||
|
- ingresses
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- events
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- "extensions"
|
||||||
|
resources:
|
||||||
|
- ingresses/status
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- "networking.k8s.io"
|
||||||
|
resources:
|
||||||
|
- ingresses/status
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: system:kubesphere-router-role
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
- pods
|
||||||
|
- secrets
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
resourceNames:
|
||||||
|
# Defaults to "<election-id>-<ingress-class>"
|
||||||
|
# Here: "<ingress-controller-leader>-<nginx>"
|
||||||
|
# This has to be adapted if you change either parameter
|
||||||
|
# when launching the nginx-ingress-controller.
|
||||||
|
- "ingress-controller-leader-nginx"
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- update
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- configmaps
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- endpoints
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: kubesphere-router-serviceaccount
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: system:nginx-ingress-clusterrole-nisa-binding
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:kubesphere-router-clusterrole
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: kubesphere-router-serviceaccount
|
||||||
|
namespace: kubesphere-controls-system
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: nginx-ingress-role-nisa-binding
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: Role
|
||||||
|
name: system:kubesphere-router-role
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: kubesphere-router-serviceaccount
|
||||||
|
namespace: kubesphere-controls-system
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: default-http-backend
|
||||||
|
labels:
|
||||||
|
app: kubesphere
|
||||||
|
component: kubesphere-router
|
||||||
|
version: express-1.0.alpha
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: kubesphere
|
||||||
|
component: kubesphere-router
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: kubesphere
|
||||||
|
component: kubesphere-router
|
||||||
|
spec:
|
||||||
|
terminationGracePeriodSeconds: 60
|
||||||
|
containers:
|
||||||
|
- name: default-http-backend
|
||||||
|
# Any image is permissible as long as:
|
||||||
|
# 1. It serves a 404 page at /
|
||||||
|
# 2. It serves 200 on a /healthz endpoint
|
||||||
|
image: {{ .Values.image.defaultbackend_repo }}:{{ .Values.image.defaultbackend_tag | default "latest" }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 8080
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
timeoutSeconds: 5
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 20Mi
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 20Mi
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: default-http-backend
|
||||||
|
labels:
|
||||||
|
app: kubesphere
|
||||||
|
component: kubesphere-router
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/ks-router
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: kubesphere
|
||||||
|
component: kubesphere-router
|
||||||
|
|
||||||
|
---
|
||||||
|
# create a seviceaccount for kubectl pod
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: kubesphere-cluster-admin
|
||||||
|
namespace: kubesphere-controls-system
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/kubectl
|
||||||
|
---
|
||||||
|
# bind kubesphere-cluster-admin sa to clusterrole cluster-admin
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: system:kubesphere-cluster-admin
|
||||||
|
annotations:
|
||||||
|
kubernetes.io/created-by: kubesphere.io/kubectl
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: kubesphere-cluster-admin
|
||||||
|
namespace: kubesphere-controls-system
|
||||||
378
config/ks-core/templates/sample-bookinfo-configmap.yaml
Normal file
378
config/ks-core/templates/sample-bookinfo-configmap.yaml
Normal file
@@ -0,0 +1,378 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
bookinfo.yaml: |
|
||||||
|
apiVersion: app.k8s.io/v1beta1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: bookinfo
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
addOwnerRef: true
|
||||||
|
descriptor:
|
||||||
|
icons:
|
||||||
|
- src: '/assets/bookinfo.svg'
|
||||||
|
componentKinds:
|
||||||
|
- group: ''
|
||||||
|
kind: Service
|
||||||
|
- group: apps
|
||||||
|
kind: Deployment
|
||||||
|
- group: apps
|
||||||
|
kind: StatefulSet
|
||||||
|
- group: extensions
|
||||||
|
kind: Ingress
|
||||||
|
- group: servicemesh.kubesphere.io
|
||||||
|
kind: Strategy
|
||||||
|
- group: servicemesh.kubesphere.io
|
||||||
|
kind: ServicePolicy
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/isElasticReplicas: 'false'
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
labels:
|
||||||
|
app: productpage
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
name: productpage-v1
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: productpage
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: productpage
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
sidecar.istio.io/inject: 'true'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: productpage
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 10Mi
|
||||||
|
limits:
|
||||||
|
cpu: '1'
|
||||||
|
memory: 1000Mi
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
image: {{- .Values.image.bookinfo_productpage_v1_repo }}:{{- .Values.image.bookinfo_productpage_v1_tag }}
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
containerPort: 9080
|
||||||
|
servicePort: 9080
|
||||||
|
serviceAccount: default
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 25%
|
||||||
|
maxSurge: 25%
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app: productpage
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/workloadType: Deployment
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
name: productpage
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
sessionAffinity: None
|
||||||
|
selector:
|
||||||
|
app: productpage
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
port: 9080
|
||||||
|
targetPort: 9080
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/isElasticReplicas: 'false'
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
labels:
|
||||||
|
app: reviews
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
name: reviews-v1
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: reviews
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: reviews
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
sidecar.istio.io/inject: 'true'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: reviews
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 10Mi
|
||||||
|
limits:
|
||||||
|
cpu: '1'
|
||||||
|
memory: 1000Mi
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
image: {{- .Values.image.bookinfo_reviews_v1_repo }}:{{- .Values.image.bookinfo_reviews_v1_tag }}
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
containerPort: 9080
|
||||||
|
servicePort: 9080
|
||||||
|
serviceAccount: default
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 25%
|
||||||
|
maxSurge: 25%
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app: reviews
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/workloadType: Deployment
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
name: reviews
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
sessionAffinity: None
|
||||||
|
selector:
|
||||||
|
app: reviews
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
port: 9080
|
||||||
|
targetPort: 9080
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/isElasticReplicas: 'false'
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
labels:
|
||||||
|
app: details
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
name: details-v1
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: details
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: details
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
sidecar.istio.io/inject: 'true'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: details
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 10Mi
|
||||||
|
limits:
|
||||||
|
cpu: '1'
|
||||||
|
memory: 1000Mi
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
image: {{- .Values.image.bookinfo_details_v1_repo }}:{{- .Values.image.bookinfo_details_v1_tag }}
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
containerPort: 9080
|
||||||
|
servicePort: 9080
|
||||||
|
serviceAccount: default
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 25%
|
||||||
|
maxSurge: 25%
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app: details
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/workloadType: Deployment
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
name: details
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
sessionAffinity: None
|
||||||
|
selector:
|
||||||
|
app: details
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
port: 9080
|
||||||
|
targetPort: 9080
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/isElasticReplicas: 'false'
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
labels:
|
||||||
|
app: ratings
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
name: ratings-v1
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ratings
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ratings
|
||||||
|
version: v1
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
sidecar.istio.io/inject: 'true'
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: ratings
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 10m
|
||||||
|
memory: 10Mi
|
||||||
|
limits:
|
||||||
|
cpu: '1'
|
||||||
|
memory: 1000Mi
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
image: {{- .Values.image.bookinfo_ratings_v1_repo }}:{{- .Values.image.bookinfo_ratings_v1_tag }}
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
containerPort: 9080
|
||||||
|
servicePort: 9080
|
||||||
|
serviceAccount: default
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 25%
|
||||||
|
maxSurge: 25%
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app: ratings
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
annotations:
|
||||||
|
kubesphere.io/workloadType: Deployment
|
||||||
|
servicemesh.kubesphere.io/enabled: 'true'
|
||||||
|
name: ratings
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
sessionAffinity: None
|
||||||
|
selector:
|
||||||
|
app: ratings
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
ports:
|
||||||
|
- name: http-web
|
||||||
|
protocol: TCP
|
||||||
|
port: 9080
|
||||||
|
targetPort: 9080
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
namespace: servicemesh
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/version: v1
|
||||||
|
app.kubernetes.io/name: bookinfo
|
||||||
|
name: bookinfo-ingress
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
backend:
|
||||||
|
serviceName: productpage
|
||||||
|
servicePort: 9080
|
||||||
|
host: productpage.servicemesh.139.198.121.92.nip.io
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: sample-bookinfo
|
||||||
|
namespace: kubesphere-system
|
||||||
26
config/ks-core/templates/serviceaccount.yaml
Normal file
26
config/ks-core/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "ks-core.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "ks-core.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: kubesphere
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: cluster-admin
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: kubesphere
|
||||||
|
namespace: kubesphere-system
|
||||||
123
config/ks-core/templates/webhook.yaml
Normal file
123
config/ks-core/templates/webhook.yaml
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
{{- $ca := genCA "ks-controller-manager-ca" 3650 }}
|
||||||
|
{{- $cn := printf "%s-admission-webhook" .Release.Name }}
|
||||||
|
{{- $altName1 := printf "ks-controller-manager.kubesphere-system" }}
|
||||||
|
{{- $altName2 := printf "ks-controller-manager.kubesphere-system.svc" }}
|
||||||
|
{{- $cert := genSignedCert $cn nil (list $altName1 $altName2) 3650 $ca }}
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
data:
|
||||||
|
ca.crt: {{ b64enc $ca.Cert | quote }}
|
||||||
|
tls.crt: {{ b64enc $cert.Cert | quote }}
|
||||||
|
tls.key: {{ b64enc $cert.Key | quote }}
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: ks-controller-manager-webhook-cert
|
||||||
|
namespace: kubesphere-system
|
||||||
|
type: Opaque
|
||||||
|
---
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1beta1
|
||||||
|
kind: ValidatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: users.iam.kubesphere.io
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
caBundle: {{ b64enc $ca.Cert | quote }}
|
||||||
|
service:
|
||||||
|
name: ks-controller-manager
|
||||||
|
namespace: kubesphere-system
|
||||||
|
path: /validate-email-iam-kubesphere-io-v1alpha2
|
||||||
|
port: 443
|
||||||
|
failurePolicy: Fail
|
||||||
|
matchPolicy: Exact
|
||||||
|
name: users.iam.kubesphere.io
|
||||||
|
namespaceSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: control-plane
|
||||||
|
operator: DoesNotExist
|
||||||
|
objectSelector: {}
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- iam.kubesphere.io
|
||||||
|
apiVersions:
|
||||||
|
- v1alpha2
|
||||||
|
operations:
|
||||||
|
- CREATE
|
||||||
|
- UPDATE
|
||||||
|
resources:
|
||||||
|
- users
|
||||||
|
scope: '*'
|
||||||
|
sideEffects: None
|
||||||
|
timeoutSeconds: 30
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1
|
||||||
|
kind: ValidatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: network.kubesphere.io
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
caBundle: {{ b64enc $ca.Cert | quote }}
|
||||||
|
service:
|
||||||
|
name: ks-controller-manager
|
||||||
|
namespace: kubesphere-system
|
||||||
|
path: /validate-network-kubesphere-io-v1alpha1
|
||||||
|
port: 443
|
||||||
|
failurePolicy: Fail
|
||||||
|
matchPolicy: Exact
|
||||||
|
name: validating-network.kubesphere.io
|
||||||
|
namespaceSelector:
|
||||||
|
matchExpressions:
|
||||||
|
- key: control-plane
|
||||||
|
operator: DoesNotExist
|
||||||
|
objectSelector: {}
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- network.kubesphere.io
|
||||||
|
apiVersions:
|
||||||
|
- v1alpha1
|
||||||
|
operations:
|
||||||
|
- CREATE
|
||||||
|
- UPDATE
|
||||||
|
- DELETE
|
||||||
|
resources:
|
||||||
|
- ippools
|
||||||
|
scope: '*'
|
||||||
|
sideEffects: None
|
||||||
|
timeoutSeconds: 30
|
||||||
|
|
||||||
|
---
|
||||||
|
apiVersion: admissionregistration.k8s.io/v1
|
||||||
|
kind: ValidatingWebhookConfiguration
|
||||||
|
metadata:
|
||||||
|
name: resourcesquotas.quota.kubesphere.io
|
||||||
|
webhooks:
|
||||||
|
- admissionReviewVersions:
|
||||||
|
- v1beta1
|
||||||
|
clientConfig:
|
||||||
|
caBundle: {{ b64enc $ca.Cert | quote }}
|
||||||
|
service:
|
||||||
|
name: ks-controller-manager
|
||||||
|
namespace: kubesphere-system
|
||||||
|
path: /validate-quota-kubesphere-io-v1alpha2
|
||||||
|
port: 443
|
||||||
|
failurePolicy: Ignore
|
||||||
|
matchPolicy: Exact
|
||||||
|
name: resourcesquotas.quota.kubesphere.io
|
||||||
|
namespaceSelector: {}
|
||||||
|
objectSelector: {}
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- '*'
|
||||||
|
apiVersions:
|
||||||
|
- '*'
|
||||||
|
operations:
|
||||||
|
- CREATE
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
scope: '*'
|
||||||
|
sideEffects: None
|
||||||
118
config/ks-core/values.yaml
Normal file
118
config/ks-core/values.yaml
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
# Default values for ks-core.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
ks_controller_manager_repo: kubesphere/ks-controller-manager
|
||||||
|
ks_controller_manager_tag: ""
|
||||||
|
|
||||||
|
ks_apiserver_repo: kubesphere/ks-apiserver
|
||||||
|
ks_apiserver_tag: ""
|
||||||
|
ks_console_repo: "kubesphere/ks-console"
|
||||||
|
ks_console_tag: ""
|
||||||
|
|
||||||
|
ks_kubectl_repo: kubesphere/kubectl
|
||||||
|
ks_kubectl_tag: ""
|
||||||
|
|
||||||
|
nginx_ingress_controller_repo: kubesphere/nginx-ingress-controller
|
||||||
|
nginx_ingress_controller_tag: "v0.35.0"
|
||||||
|
defaultbackend_repo: "mirrorgooglecontainers/defaultbackend-amd64"
|
||||||
|
defaultbackend_tag: "1.4"
|
||||||
|
|
||||||
|
bookinfo_productpage_v1_repo: kubesphere/examples-bookinfo-productpage-v1
|
||||||
|
bookinfo_productpage_v1_tag: "1.16.2"
|
||||||
|
|
||||||
|
bookinfo_reviews_v1_repo: kubesphere/examples-bookinfo-reviews-v1
|
||||||
|
bookinfo_reviews_v1_tag: "1.16.2"
|
||||||
|
|
||||||
|
bookinfo_details_v1_repo: kubesphere/examples-bookinfo-details-v1
|
||||||
|
bookinfo_details_v1_tag: "1.16.2"
|
||||||
|
|
||||||
|
bookinfo_ratings_v1_repo: kubesphere/examples-bookinfo-ratings-v1
|
||||||
|
bookinfo_ratings_v1_tag: "1.16.3"
|
||||||
|
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
|
||||||
|
config:
|
||||||
|
# Specifies whether the kubesphere-config configmap should be created
|
||||||
|
create: true
|
||||||
|
authentication: {}
|
||||||
|
# Jwt Secret is required
|
||||||
|
jwtSecret: ""
|
||||||
|
multicluster: {}
|
||||||
|
monitoring: {}
|
||||||
|
|
||||||
|
console:
|
||||||
|
port: 30880
|
||||||
|
type: NodePort
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: "kubesphere"
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
apiserverResources:
|
||||||
|
limits:
|
||||||
|
cpu: 1
|
||||||
|
memory: 1024Mi
|
||||||
|
requests:
|
||||||
|
cpu: 20m
|
||||||
|
memory: 100Mi
|
||||||
|
|
||||||
|
consoleResources:
|
||||||
|
limits:
|
||||||
|
cpu: 1
|
||||||
|
memory: 1024Mi
|
||||||
|
requests:
|
||||||
|
cpu: 20m
|
||||||
|
memory: 100Mi
|
||||||
|
|
||||||
|
controllerManagerResources:
|
||||||
|
limits:
|
||||||
|
cpu: 1
|
||||||
|
memory: 1000Mi
|
||||||
|
requests:
|
||||||
|
cpu: 30m
|
||||||
|
memory: 50Mi
|
||||||
|
|
||||||
|
# Kubernetes Version shows in KubeSphere console
|
||||||
|
kube_version: "v1.19.4"
|
||||||
|
|
||||||
|
tolerations:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
effect: NoSchedule
|
||||||
|
- key: CriticalAddonsOnly
|
||||||
|
operator: Exists
|
||||||
|
- effect: NoExecute
|
||||||
|
key: node.kubernetes.io/not-ready
|
||||||
|
operator: Exists
|
||||||
|
tolerationSeconds: 60
|
||||||
|
- effect: NoExecute
|
||||||
|
key: node.kubernetes.io/unreachable
|
||||||
|
operator: Exists
|
||||||
|
tolerationSeconds: 60
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
Reference in New Issue
Block a user