From 2b77f46840fefca768ed824f39bed7fe552b7e7a Mon Sep 17 00:00:00 2001 From: 24sama Date: Fri, 8 Apr 2022 21:04:17 +0800 Subject: [PATCH] support kubesphere v3.3.0 Signed-off-by: 24sama --- pkg/config/generate.go | 2 + pkg/version/kubesphere/ks_installer.go | 16 ++ pkg/version/kubesphere/templates/cc_v330.go | 202 ++++++++++++++++++++ pkg/version/kubesphere/version_enum.go | 6 + 4 files changed, 226 insertions(+) create mode 100644 pkg/version/kubesphere/templates/cc_v330.go diff --git a/pkg/config/generate.go b/pkg/config/generate.go index 3f5f475d..2fe4237b 100644 --- a/pkg/config/generate.go +++ b/pkg/config/generate.go @@ -64,8 +64,10 @@ func GenerateKubeKeyConfig(arg common.Argument, name string) error { if ok { opt.KubeSphereConfigMap = ksInstaller.CCToString() } else if latest, ok := kubesphere.LatestRelease(version); ok { + latest.Version = version opt.KubeSphereConfigMap = latest.CCToString() } else if dev, ok := kubesphere.DevRelease(version); ok { + dev.Version = version opt.KubeSphereConfigMap = dev.CCToString() } else { return errors.New(fmt.Sprintf("Unsupported KubeSphere version: %s", version)) diff --git a/pkg/version/kubesphere/ks_installer.go b/pkg/version/kubesphere/ks_installer.go index 332314c1..2a078ee3 100644 --- a/pkg/version/kubesphere/ks_installer.go +++ b/pkg/version/kubesphere/ks_installer.go @@ -159,3 +159,19 @@ var KsV321 = &KsInstaller{ V320.String(), }, } + +var KsV330 = &KsInstaller{ + Version: V330.String(), + CRDTemplate: templates.KsInstaller, + ClusterConfigurationTemplate: templates.V330, + K8sSupportVersions: []string{ + "v1.19", + "v1.20", + "v1.21", + "v1.22", + }, + UpgradeSupportVersions: []string{ + V320.String(), + V321.String(), + }, +} diff --git a/pkg/version/kubesphere/templates/cc_v330.go b/pkg/version/kubesphere/templates/cc_v330.go new file mode 100644 index 00000000..43c452b1 --- /dev/null +++ b/pkg/version/kubesphere/templates/cc_v330.go @@ -0,0 +1,202 @@ +/* + Copyright 2022 The KubeSphere Authors. + + 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. +*/ + +package templates + +import ( + "github.com/lithammer/dedent" + "text/template" +) + +var V330 = template.Must(template.New("v3.3.0").Parse( + dedent.Dedent(` +--- +apiVersion: installer.kubesphere.io/v1alpha1 +kind: ClusterConfiguration +metadata: + name: ks-installer + namespace: kubesphere-system + labels: + version: {{ .Tag }} +spec: + persistence: + storageClass: "" + authentication: + jwtSecret: "" + local_registry: "" + # dev_tag: "" + etcd: + monitoring: false + endpointIps: localhost + port: 2379 + tlsEnable: true + common: + core: + console: + enableMultiLogin: true + port: 30880 + type: NodePort + # apiserver: + # resources: {} + # controllerManager: + # resources: {} + redis: + enabled: false + volumeSize: 2Gi + openldap: + enabled: false + volumeSize: 2Gi + minio: + volumeSize: 20Gi + monitoring: + # type: external + endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090 + GPUMonitoring: + enabled: false + gpu: + kinds: + - resourceName: "nvidia.com/gpu" + resourceType: "GPU" + default: true + es: + # master: + # volumeSize: 4Gi + # replicas: 1 + # resources: {} + # data: + # volumeSize: 20Gi + # replicas: 1 + # resources: {} + logMaxAge: 7 + elkPrefix: logstash + basicAuth: + enabled: false + username: "" + password: "" + externalElasticsearchHost: "" + externalElasticsearchPort: "" + alerting: + enabled: false + # thanosruler: + # replicas: 1 + # resources: {} + auditing: + enabled: false + # operator: + # resources: {} + # webhook: + # resources: {} + devops: + enabled: false + # resources: {} + jenkinsMemoryLim: 2Gi + jenkinsMemoryReq: 1500Mi + jenkinsVolumeSize: 8Gi + jenkinsJavaOpts_Xms: 1200m + jenkinsJavaOpts_Xmx: 1600m + jenkinsJavaOpts_MaxRAM: 2g + events: + enabled: false + # operator: + # resources: {} + # exporter: + # resources: {} + # ruler: + # enabled: true + # replicas: 2 + # resources: {} + logging: + enabled: + logsidecar: + enabled: true + replicas: 2 + # resources: {} + metrics_server: + enabled: false + monitoring: + storageClass: "" + node_exporter: + port: 9100 + # resources: {} + # kube_rbac_proxy: + # resources: {} + # kube_state_metrics: + # resources: {} + # prometheus: + # replicas: 1 + # volumeSize: 20Gi + # resources: {} + # operator: + # resources: {} + # alertmanager: + # replicas: 1 + # resources: {} + # notification_manager: + # resources: {} + # operator: + # resources: {} + # proxy: + # resources: {} + gpu: + nvidia_dcgm_exporter: + enabled: false + # resources: {} + multicluster: + clusterRole: none + network: + networkpolicy: + enabled: false + ippool: + type: none + topology: + type: none + openpitrix: + store: + enabled: false + servicemesh: + enabled: false + istio: + components: + ingressGateways: + - name: istio-ingressgateway + enabled: false + cni: + enabled: false + edgeruntime: + enabled: false + kubeedge: + enabled: false + cloudCore: + cloudHub: + advertiseAddress: + - "" + service: + cloudhubNodePort: "30000" + cloudhubQuicNodePort: "30001" + cloudhubHttpsNodePort: "30002" + cloudstreamNodePort: "30003" + tunnelNodePort: "30004" + # resources: {} + # hostNetWork: false + iptables-manager: + enabled: true + mode: "external" + # resources: {} + # edgeService: + # resources: {} + terminal: + timeout: 600 +`))) diff --git a/pkg/version/kubesphere/version_enum.go b/pkg/version/kubesphere/version_enum.go index e0a65b97..67209f62 100644 --- a/pkg/version/kubesphere/version_enum.go +++ b/pkg/version/kubesphere/version_enum.go @@ -32,6 +32,7 @@ const ( V311 V320 V321 + V330 ) var VersionList = []Version{ @@ -41,6 +42,7 @@ var VersionList = []Version{ V311, V320, V321, + V330, } var VersionMap = map[string]*KsInstaller{ @@ -50,6 +52,7 @@ var VersionMap = map[string]*KsInstaller{ V311.String(): KsV311, V320.String(): KsV320, V321.String(): KsV321, + V330.String(): KsV330, } var CNSource = map[string]bool{ @@ -57,6 +60,7 @@ var CNSource = map[string]bool{ V311.String(): true, V320.String(): true, V321.String(): true, + V330.String(): true, } func (v Version) String() string { @@ -73,6 +77,8 @@ func (v Version) String() string { return "v3.2.0" case V321: return "v3.2.1" + case V330: + return "v3.3.0" default: return "invalid option" }