Compare commits

...

10 Commits

Author SHA1 Message Date
zeaslity
22ea4b8359 [cmii][deploy] - cmii-uav-watchdog-test.yaml 2025-09-01 17:01:27 +08:00
zeaslity
32c82b2751 大量更新 2025-03-27 16:02:12 +08:00
zeaslity
ae4bdb7dbc [cmii][deploy] - cmii-uav-watchdog-test.yaml 2025-03-26 16:55:36 +08:00
zeaslity
ae1baa4c38 大量更新 2025-03-26 16:53:31 +08:00
zeaslity
c8d897622d [cmii][deploy] - 优化后端项目结构 2025-03-26 16:17:07 +08:00
zeaslity
86bcbad396 大量更新 2025-03-26 15:22:01 +08:00
zeaslity
ab6a130950 优化Zsh安装脚本执行逻辑
- 移除oh-my-zsh插件列表文件的清理步骤
- 将Zsh安装命令从"/bin/bash"改为"sh -c"
- 针对国内网络环境,使用SingleLineCommandExecutor设置远程仓库地址
- 简化Zsh插件安装命令的执行方式
2025-03-12 14:27:12 +08:00
zeaslity
8e4444a7cc 优化Zsh插件安装流程和命令执行器
- 重构Zsh插件安装逻辑,将硬编码URL拆分为源和目标路径
- 修改RealTimeCommandExecutor,增加实时命令执行日志输出
- 优化SingleLineCommandExecutor日志信息,改进命令日志可读性
- 简化插件安装命令,支持国内外镜像源的插件克隆
2025-03-11 16:14:28 +08:00
zeaslity
34b5f80704 重构命令执行器和防火墙管理逻辑
- 优化Base.go中防火墙清空命令,使用更结构化的命令执行方式
- 修改Proxy.go中Xray安装命令,改用SingleLineCommandExecutor
- 重构Excutor.go,新增RealTimeCommandExecutor方法,支持实时输出命令执行日志
- 简化命令执行日志输出,移除冗余的日志前缀
- 改进管道命令执行的日志记录,增加可读性
2025-03-11 16:07:19 +08:00
zeaslity
35646ff89f 优化Harbor、Docker和Zsh安装流程,改进命令执行和文件操作
- 重构Harbor安装命令,改进容器检查和启动逻辑
- 修改Docker和DockerCompose安装方法,优化文件移动和权限设置
- 更新Zsh插件安装命令,简化git克隆过程
- 调整UnzipFile工具方法,支持更多压缩文件类型
- 修正Docker Daemon配置文件中的安装节标签
- 更新测试脚本,简化文件上传流程
2025-03-11 15:59:21 +08:00
47 changed files with 29852 additions and 24190 deletions

19
.aiexclude Normal file
View File

@@ -0,0 +1,19 @@
.cursorignore
.cursor
.idea
.run
agent
agent-tmp
common
message_pusher
port_forwarding
server-go
socks5_txthinking
source
pom.xml
setting-aliyun.xml

View File

@@ -12,4 +12,17 @@
<pattern value="^\QTestFetchDependencyRepos_Middle\E$" /> <pattern value="^\QTestFetchDependencyRepos_Middle\E$" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration default="false" name="Middle镜像-35.70" type="GoTestRunConfiguration" factoryName="Go Test">
<module name="ProjectOctopus" />
<target name="wdd-dev-35.70" />
<working_directory value="$PROJECT_DIR$/agent-operator" />
<kind value="PACKAGE" />
<package value="wdd.io/agent-operator" />
<directory value="$PROJECT_DIR$" />
<filePath value="$PROJECT_DIR$" />
<option name="build_on_remote_target" value="true" />
<framework value="gotest" />
<pattern value="^\QTestFetchDependencyRepos_Middle\E$" />
<method v="2" />
</configuration>
</component> </component>

View 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/

View File

@@ -0,0 +1,21 @@
apiVersion: v2
appVersion: 2.1.7
description: Apache Doris is an easy-to-use, high-performance and real-time analytical
database based on MPP architecture, known for its extreme speed and ease of use.
home: https://doris.apache.org
icon: https://charts.selectdb.com/images/doris.jpg
keywords:
- doris
- database
- olap
- sharding
kubeVersion: '>= 1.19'
maintainers:
- email: hudechao@selectdb.com
name: Dechao Hu
name: doris
sources:
- https://github.com/apache/doris
- https://github.com/apache/doris-operator
type: application
version: 25.2.1

View File

@@ -0,0 +1,61 @@
# Deploy Doris Cluster by Helm
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/doris)](https://artifacthub.io/packages/search?repo=doris)
This chart for deploying doris on kubernetes use Doris-Operator. Before using this chart, please install doris-operator as [install doc](https://artifacthub.io/packages/helm/doris/doris-operator).
## Install doris
### Add helm-chart repo and install doris-operator
this document and doris-operator installation document are duplicated. you can skip If they have already been executed completely.
1. Add the selectdb repository
```Bash
$ helm repo add selectdb https://charts.selectdb.com
```
2. Update the Helm Chart Repo to the latest version
```Bash
$ helm repo update selectdb
```
3. Check the Helm Chart Repo is the latest version
```Bash
$ helm search repo selectdb
NAME CHART VERSION APP VERSION DESCRIPTION
selectdb/doris-operator 1.3.1 1.3.1 Doris-operator for doris creat ...
selectdb/doris 1.3.1 2.0.3 Apache Doris is an easy-to-use ...
```
4. Install doris-operator (with default config in a namespace named `doris`)
```Bash
$ helm install operator selectdb/doris-operator
```
### Install the doris use doriscluster
- Use default config for deploying doris
This deploy only deploy fe and be components using default storageClass for providing persistent volume.
```bash
$ helm install doriscluster selectdb/doris
```
- Custom doris deploying
when you want to specify resources or different deployment type, please custom the [`values.yaml`](./values.yaml) and use next command for deploying.
```bash
$ helm install -f values.yaml doriscluster selectdb/doris
```
### Validate installation status
After executing the installation command, deployment and distribution, service deployment scheduling and startup will take a certain amount of time. Check the deployment status of Pods through the kubectl get pods command.
Observe that the Pod of `doriscluster` is in the `Running` state and all containers in the Pod are ready, that means, the deployment is successful.
```Bash
$ kubectl get pod --namespace doris
NAME READY STATUS RESTARTS AGE
doriscluster-helm-fe-0 1/1 Running 0 1m39s
doriscluster-helm-fe-1 1/1 Running 0 1m39s
doriscluster-helm-fe-2 1/1 Running 0 1m39s
doriscluster-helm-be-0 1/1 Running 0 16s
doriscluster-helm-be-1 1/1 Running 0 16s
doriscluster-helm-be-2 1/1 Running 0 16s
```
## Uninstall doriscluster
Please confirm the Doris is not used, when using next command to uninstall `doriscluster`.
```bash
$ helm uninstall doriscluster
```

View File

@@ -0,0 +1 @@
Thank you for installing {{ .Chart.Name }}-{{ .Chart.Version }}

View File

@@ -0,0 +1,267 @@
{*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you 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.
*}
{{- define "doriscluster.name" -}}
{{ default .Chart.Name .Values.dorisCluster.name }}
{{- end }}
{{- define "doriscluster.namespace" -}}
{{ print .Release.Namespace }}
{{- end }}
{{- define "kube-control.name" -}}
{{- print "doris-operator" }}
{{- end }}
{{/*
doris cluster pod default resource.
*/}}
{{- define "doriscluster.default.resource" }}
requests:
cpu: 8
memory: 16Gi
limits:
cpu: 16
memory: 32Gi
{{- end }}
{{/*
doris cluster admin user and password secret name.
*/}}
{{- define "doriscluster.secret.name" -}}
{{ template "doriscluster.name" . }}-secret-base64
{{- end -}}
{{/*
doris cluster fe configMap default name.
*/}}
{{- define "doriscluster.default.feConfigMap.name" -}}
{{ template "doriscluster.name" . }}-fe-configmap
{{- end -}}
{{/*
doris cluster fe pod default configMap resolve file.
*/}}
{{- define "doriscluster.default.feConfig.resolveKey" }}
{{- print "fe.conf" }}
{{- end }}
{{/*
doris cluster be configMap default name.
*/}}
{{- define "doriscluster.default.beConfigMap.name" -}}
{{ template "doriscluster.name" . }}-be-configmap
{{- end -}}
{{/*
doris cluster pod default configMap resolve file.
*/}}
{{- define "doriscluster.default.beConfig.resolveKey" }}
{{- print "be.conf" }}
{{- end }}
{{/*
doris cluster cn configMap default name.
*/}}
{{- define "doriscluster.default.cnConfigMap.name" -}}
{{ template "doriscluster.name" . }}-cn-configmap
{{- end -}}
{{/*
doris cluster cn pod default configMap resolve file.
*/}}
{{- define "doriscluster.default.cnConfig.resolveKey" }}
{{- print "be.conf" }}
{{- end }}
{{/*
doris cluster broker configMap default name.
*/}}
{{- define "doriscluster.default.brokerConfigMap.name" -}}
{{ template "doriscluster.name" . }}-broker-configmap
{{- end -}}
{{/*
doris cluster broker pod default configMap resolve file.
*/}}
{{- define "doriscluster.default.brokerConfig.resolveKey" }}
{{- print "apache_hdfs_broker.conf" }}
{{- end }}
{{/*
doris cluster cn pod autoscaler default version.
*/}}
{{- define "doriscluster.default.autoScalerVersion" -}}
{{- print "v2" }}
{{- end -}}
{{/*
doris cluster fe PVC
*/}}
{{- define "doriscluster.fe.pvc" -}}
{{- if and .Values.feSpec.persistentVolumeClaim.metaPersistentVolume .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storage}}
- mountPath: /opt/apache-doris/fe/doris-meta
name: fe-meta
persistentVolumeClaimSpec:
{{- if or .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storageClassName .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
storageClassName: {{ default .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storage}}
{{- end }}
{{- if and .Values.feSpec.persistentVolumeClaim.logsPersistentVolume .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
- mountPath: /opt/apache-doris/fe/log
name: fe-log
persistentVolumeClaimSpec:
{{- if or .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storageClassName}}
storageClassName: {{ default .Values.feSpec.persistentVolumeClaim.metaPersistentVolume.storageClassName .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.feSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
{{- end }}
{{- end -}}
{{/*
doris cluster be PVC
*/}}
{{- define "doriscluster.be.pvc" -}}
{{- if and .Values.beSpec.persistentVolumeClaim.dataPersistentVolume .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storage}}
- mountPath: /opt/apache-doris/be/storage
name: be-storage
persistentVolumeClaimSpec:
{{- if or .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
storageClassName: {{ default .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storage}}
{{- end }}
{{- if and .Values.beSpec.persistentVolumeClaim.logsPersistentVolume .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
- mountPath: /opt/apache-doris/be/log
name: be-log
persistentVolumeClaimSpec:
{{- if or .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
storageClassName: {{ default .Values.beSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.beSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
{{- end }}
{{- end -}}
{{/*
doris cluster cn PVC
*/}}
{{- define "doriscluster.cn.pvc" -}}
{{- if and .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storage}}
- mountPath: /opt/apache-doris/be/storage
name: cn-storage
persistentVolumeClaimSpec:
{{- if or .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
storageClassName: {{ default .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storage}}
{{- end }}
{{- if and .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
- mountPath: /opt/apache-doris/be/log
name: cn-log
persistentVolumeClaimSpec:
{{- if or .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
storageClassName: {{ default .Values.cnSpec.persistentVolumeClaim.dataPersistentVolume.storageClassName .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.cnSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
{{- end }}
{{- end -}}
{{/*
doris cluster broker PVC
*/}}
{{- define "doriscluster.broker.pvc" -}}
{{- if and .Values.brokerSpec.persistentVolumeClaim.logsPersistentVolume .Values.brokerSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
- mountPath: /opt/apache-doris/apache_hdfs_broker/log
name: broker-log
persistentVolumeClaimSpec:
{{- if .Values.brokerSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName}}
storageClassName: {{ .Values.brokerSpec.persistentVolumeClaim.logsPersistentVolume.storageClassName }}
{{- end }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.brokerSpec.persistentVolumeClaim.logsPersistentVolume.storage}}
{{- end }}
{{- end -}}
{{- define "doriscluster.feConfig.configMaps" }}
{{- range .Values.feSpec.configMap.mountConfigMaps }}
- configMapName: {{ .configMapName }}
mountPath: {{ .mountPath }}
{{- end }}
{{- end }}
{{- define "doriscluster.beConfig.configMaps" }}
{{- range .Values.beSpec.configMap.mountConfigMaps }}
- configMapName: {{ .configMapName }}
mountPath: {{ .mountPath }}
{{- end }}
{{- end }}
{{- define "doriscluster.cnConfig.configMaps" }}
{{- range .Values.cnSpec.configMap.mountConfigMaps }}
- configMapName: {{ .configMapName }}
mountPath: {{ .mountPath }}
{{- end }}
{{- end }}
{{- define "doriscluster.brokerConfig.configMaps" }}
{{- range .Values.brokerSpec.configMap.mountConfigMaps }}
- configMapName: {{ .configMapName }}
mountPath: {{ .mountPath }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{- $originalMap := omit .Values.beSpec.configMap "mountConfigMaps" }}
{{- if $originalMap }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "doriscluster.default.beConfigMap.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
data:
{{- toYaml $originalMap | nindent 2}}
{{- end }}

View File

@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{- $originalMap := omit .Values.brokerSpec.configMap "mountConfigMaps" }}
{{- if $originalMap }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "doriscluster.default.brokerConfigMap.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
data:
{{- toYaml $originalMap | nindent 2}}
{{- end }}

View File

@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{- $originalMap := omit .Values.cnSpec.configMap "mountConfigMaps" }}
{{- if $originalMap }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "doriscluster.default.cnConfigMap.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
data:
{{- toYaml $originalMap | nindent 2}}
{{- end }}

View File

@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{- $originalMap := omit .Values.feSpec.configMap "mountConfigMaps" }}
{{- if $originalMap }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "doriscluster.default.feConfigMap.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
data:
{{- toYaml $originalMap | nindent 2}}
{{- end }}

View File

@@ -0,0 +1,56 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{$cmDatas := list }}
{{- range $cp := .Values.feSpec.configMap.mountConfigMaps }}
{{- if $cp.data }}
{{- $cmDatas = append $cmDatas $cp }}
{{- end }}
{{- end }}
{{- range $index, $cp := .Values.beSpec.configMap.mountConfigMaps }}
{{- if $cp.data }}
{{- $cmDatas = append $cmDatas $cp }}
{{- end }}
{{- end }}
{{- range $index, $cp := .Values.brokerSpec.configMap.mountConfigMaps }}
{{- if $cp.data }}
{{- $cmDatas = append $cmDatas $cp }}
{{- end }}
{{- end }}
{{- range $index, $cp := .Values.cnSpec.configMap.mountConfigMaps }}
{{- if $cp.data }}
{{- $cmDatas = append $cmDatas $cp }}
{{- end }}
{{- end }}
{{- range $cp := $cmDatas }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $cp.configMapName }}
namespace: {{ template "doriscluster.namespace" $ }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" $ }}
app.kubernetes.io/part-of: {{ template "kube-control.name" $ }}
data:
{{- toYaml $cp.data | nindent 2 }}
---
{{- end }}

View File

@@ -0,0 +1,368 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# This yaml have dorisCluster CRD all fields. The yaml only for reference how to config, not for deploy on kubernetes.
apiVersion: doris.selectdb.com/v1
kind: DorisCluster
metadata:
name: {{ template "doriscluster.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
{{- if .Values.dorisCluster.annotations }}
annotations:
{{- toYaml .Values.dorisCluster.annotations | nindent 4 }}
{{- end }}
spec:
{{- if .Values.dorisCluster.adminUser }}
adminUser:
{{- toYaml .Values.dorisCluster.adminUser | nindent 4 }}
{{- else if .Values.dorisCluster.authSecret }}
authSecret: {{ template "doriscluster.secret.name" . }}
{{- end }}
feSpec:
replicas: {{ .Values.feSpec.replicas }}
{{- if .Values.feSpec.electionNumber }}
electionNumber: {{ .Values.feSpec.electionNumber }}
{{- end }}
{{- if .Values.feSpec.labels }}
podLabels:
{{- toYaml .Values.feSpec.labels | nindent 6 }}
{{- end }}
image: {{ .Values.feSpec.image.repository }}:{{ .Values.feSpec.image.tag }}
{{- if .Values.feSpec.image.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.feSpec.image.imagePullSecrets | nindent 4 }}
{{- end }}
{{- if .Values.feSpec.service }}
service:
type: {{ .Values.feSpec.service.type }}
{{- if and (eq "LoadBalancer" .Values.feSpec.service.type) .Values.feSpec.service.loadbalancerIP }}
loadBalancerIP: {{ .Values.feSpec.service.loadbalancerIP }}
{{- end }}
{{- if .Values.feSpec.service.servicePorts }}
servicePorts:
{{- toYaml .Values.feSpec.service.servicePorts | nindent 6 }}
{{- end }}
{{- if .Values.feSpec.service.annotations }}
annotations:
{{- toYaml .Values.feSpec.service.annotations | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.feSpec.configMap }}
configMapInfo:
{{- $originalMap := .Values.feSpec.configMap }}
{{- $defaultMap := omit $originalMap "mountConfigMaps" }}
{{- if $defaultMap }}
configMapName: {{ template "doriscluster.default.feConfigMap.name" . }}
resolveKey: {{ template "doriscluster.default.feConfig.resolveKey" . }}
{{- end }}
{{- if .Values.feSpec.configMap.mountConfigMaps }}
configMaps:
{{- template "doriscluster.feConfig.configMaps" . }}
{{- end }}
{{- end }}
{{- if .Values.feSpec.resource }}
{{- toYaml .Values.feSpec.resource | nindent 4 }}
{{- else }}
{{- include "doriscluster.default.resource" .}}
{{- end }}
{{- if .Values.feSpec.nodeSelector }}
nodeSelector:
{{- toYaml .Values.feSpec.nodeSelector | nindent 6 }}
{{- end }}
{{- if .Values.feSpec.env }}
envVars:
{{- toYaml .Values.feSpec.env | nindent 4 }}
{{- end }}
{{- if .Values.feSpec.affinity }}
affinity:
{{- toYaml .Values.feSpec.affinity | nindent 6 }}
{{- end }}
{{- if .Values.feSpec.tolerations }}
tolerations:
{{- toYaml .Values.feSpec.tolerations | nindent 4 }}
{{- end }}
{{- if .Values.feSpec.hostAliases }}
hostAliases:
{{- toYaml .Values.feSpec.hostAliases | nindent 4 }}
{{- end }}
{{- if .Values.feSpec.persistentVolumeClaim }}
persistentVolumes:
{{- template "doriscluster.fe.pvc" . }}
{{- end }}
{{- if .Values.feSpec.systemInitialization }}
systemInitialization:
{{- if .Values.feSpec.systemInitialization.initImage }}
initImage: {{ .Values.feSpec.systemInitialization.initImage }}
{{- end }}
{{- if .Values.feSpec.systemInitialization.command }}
command: {{ .Values.feSpec.systemInitialization.command }}
{{- end }}
{{- end }}
beSpec:
replicas: {{ .Values.beSpec.replicas }}
{{- if .Values.beSpec.labels }}
podLabels:
{{- toYaml .Values.beSpec.labels | nindent 6 }}
{{- end }}
image: {{ .Values.beSpec.image.repository }}:{{ .Values.beSpec.image.tag }}
{{- if .Values.beSpec.image.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.beSpec.image.imagePullSecrets | nindent 4 }}
{{- end }}
{{- if .Values.beSpec.service }}
service:
type: {{ .Values.beSpec.service.type }}
{{- if and (eq "LoadBalancer" .Values.beSpec.service.type) .Values.beSpec.service.loadbalancerIP }}
loadBalancerIP: {{ .Values.beSpec.service.loadbalancerIP }}
{{- end }}
{{- if .Values.beSpec.service.servicePorts }}
servicePorts:
{{- toYaml .Values.beSpec.service.servicePorts | nindent 6 }}
{{- end }}
{{- if .Values.beSpec.service.annotations }}
annotations:
{{- toYaml .Values.beSpec.service.annotations | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.beSpec.configMap }}
configMapInfo:
{{- $originalMap := .Values.beSpec.configMap }}
{{- $defaultMap := omit $originalMap "mountConfigMaps" }}
{{- if $defaultMap }}
configMapName: {{ template "doriscluster.default.beConfigMap.name" . }}
resolveKey: {{ template "doriscluster.default.beConfig.resolveKey" . }}
{{- end }}
{{- if .Values.beSpec.configMap.mountConfigMaps }}
configMaps:
{{- template "doriscluster.beConfig.configMaps" . }}
{{- end }}
{{- end }}
{{- if .Values.beSpec.resource }}
{{- toYaml .Values.beSpec.resource | nindent 4 }}
{{- else }}
{{- include "doriscluster.default.resource" .}}
{{- end }}
{{- if .Values.beSpec.nodeSelector }}
nodeSelector:
{{- toYaml .Values.beSpec.nodeSelector | nindent 6 }}
{{- end }}
{{- if .Values.beSpec.env }}
envVars:
{{- toYaml .Values.beSpec.env | nindent 4 }}
{{- end }}
{{- if .Values.beSpec.affinity }}
affinity:
{{- toYaml .Values.beSpec.affinity | nindent 6 }}
{{- end }}
{{- if .Values.beSpec.tolerations }}
tolerations:
{{- toYaml .Values.beSpec.tolerations | nindent 4 }}
{{- end }}
{{- if .Values.beSpec.hostAliases }}
hostAliases:
{{- toYaml .Values.beSpec.hostAliases | nindent 4 }}
{{- end }}
{{- if .Values.beSpec.persistentVolumeClaim }}
persistentVolumes:
{{- template "doriscluster.be.pvc" . }}
{{- end }}
{{- if .Values.beSpec.systemInitialization }}
systemInitialization:
{{- if .Values.beSpec.systemInitialization.initImage }}
initImage: {{ .Values.beSpec.systemInitialization.initImage }}
{{- end }}
{{- if .Values.beSpec.systemInitialization.command }}
command: {{ .Values.beSpec.systemInitialization.command }}
{{- end }}
{{- end }}
{{- if .Values.dorisCluster.enabledCn }}
cnSpec:
replicas: {{ .Values.cnSpec.replicas }}
{{- if .Values.cnSpec.labels }}
podLabels:
{{- toYaml .Values.cnSpec.labels | nindent 6 }}
{{- end }}
image: {{ .Values.cnSpec.image.repository }}:{{ .Values.cnSpec.image.tag }}
{{- if .Values.cnSpec.image.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.cnSpec.image.imagePullSecrets | nindent 4 }}
{{- end }}
{{- if .Values.cnSpec.service }}
service:
type: {{ .Values.cnSpec.service.type }}
{{- if and (eq "LoadBalancer" .Values.cnSpec.service.type) .Values.cnSpec.service.loadbalancerIP }}
loadBalancerIP: {{ .Values.cnSpec.service.loadbalancerIP }}
{{- end }}
{{- if .Values.cnSpec.service.servicePorts }}
servicePorts:
{{- toYaml .Values.cnSpec.service.servicePorts | nindent 6 }}
{{- end }}
{{- if .Values.cnSpec.service.annotations }}
annotations:
{{- toYaml .Values.cnSpec.service.annotations | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.cnSpec.configMap }}
configMapInfo:
{{- $originalMap := .Values.cnSpec.configMap }}
{{- $defaultMap := omit $originalMap "mountConfigMaps" }}
{{- if $defaultMap }}
configMapName: {{ template "doriscluster.default.cnConfigMap.name" . }}
resolveKey: {{ template "doriscluster.default.cnConfig.resolveKey" . }}
{{- end }}
{{- if .Values.cnSpec.configMap.mountConfigMaps }}
configMaps:
{{- template "doriscluster.cnConfig.configMaps" . }}
{{- end }}
{{- end }}
{{- if .Values.cnSpec.resource }}
{{- toYaml .Values.cnSpec.resource | nindent 4 }}
{{- else }}
{{- include "doriscluster.default.resource" .}}
{{- end }}
{{- if .Values.cnSpec.nodeSelector }}
nodeSelector:
{{- toYaml .Values.cnSpec.nodeSelector | nindent 6 }}
{{- end }}
{{- if .Values.cnSpec.env }}
envVars:
{{- toYaml .Values.cnSpec.env | nindent 4 }}
{{- end }}
{{- if .Values.cnSpec.affinity }}
affinity:
{{- toYaml .Values.cnSpec.affinity | nindent 6 }}
{{- end }}
{{- if .Values.cnSpec.tolerations }}
tolerations:
{{- toYaml .Values.cnSpec.tolerations | nindent 4 }}
{{- end }}
{{- if .Values.cnSpec.hostAliases }}
hostAliases:
{{- toYaml .Values.cnSpec.hostAliases | nindent 4 }}
{{- end }}
{{- if .Values.cnSpec.persistentVolumeClaim }}
persistentVolumes:
{{- template "doriscluster.cn.pvc" . }}
{{- end }}
{{- if .Values.cnSpec.systemInitialization }}
systemInitialization:
{{- if .Values.cnSpec.systemInitialization.initImage }}
initImage: {{ .Values.cnSpec.systemInitialization.initImage }}
{{- end }}
{{- if .Values.cnSpec.systemInitialization.command }}
command: {{ .Values.cnSpec.systemInitialization.command }}
{{- end }}
{{- end }}
{{- if .Values.cnSpec.autoScalingPolicy.enable }}
autoScalingPolicy:
version: {{default ( include "doriscluster.default.autoScalerVersion" . ) .Values.cnSpec.autoScalingPolicy.version }}
minReplicas: {{ .Values.cnSpec.autoScalingPolicy.minReplicas}}
maxReplicas: {{ .Values.cnSpec.autoScalingPolicy.maxReplicas}}
hpaPolicy:
{{- toYaml .Values.cnSpec.autoScalingPolicy.hpaPolicy | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.dorisCluster.enabledBroker }}
brokerSpec:
replicas: {{ .Values.brokerSpec.replicas }}
{{- if .Values.brokerSpec.labels }}
podLabels:
{{- toYaml .Values.brokerSpec.labels | nindent 6 }}
{{- end }}
image: {{ .Values.brokerSpec.image.repository }}:{{ .Values.brokerSpec.image.tag }}
{{- if .Values.brokerSpec.image.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.brokerSpec.image.imagePullSecrets | nindent 4 }}
{{- end }}
{{- if .Values.brokerSpec.configMap }}
configMapInfo:
{{- $originalMap := .Values.brokerSpec.configMap }}
{{- $defaultMap := omit $originalMap "mountConfigMaps" }}
{{- if $defaultMap }}
configMapName: {{ template "doriscluster.default.brokerConfigMap.name" . }}
resolveKey: {{ template "doriscluster.default.brokerConfig.resolveKey" . }}
{{- end }}
{{- if .Values.brokerSpec.configMap.mountConfigMaps }}
configMaps:
{{- template "doriscluster.brokerConfig.configMaps" . }}
{{- end }}
{{- end }}
{{- if .Values.brokerSpec.resource }}
{{- toYaml .Values.brokerSpec.resource | nindent 4 }}
{{- else }}
{{- include "doriscluster.default.resource" .}}
{{- end }}
{{- if .Values.brokerSpec.nodeSelector }}
nodeSelector:
{{- toYaml .Values.brokerSpec.nodeSelector | nindent 6 }}
{{- end }}
{{- if .Values.brokerSpec.env }}
envVars:
{{- toYaml .Values.brokerSpec.env | nindent 4 }}
{{- end }}
{{- if .Values.brokerSpec.affinity }}
affinity:
{{- toYaml .Values.brokerSpec.affinity | nindent 6 }}
{{- end }}
{{- if .Values.brokerSpec.tolerations }}
tolerations:
{{- toYaml .Values.brokerSpec.tolerations | nindent 4 }}
{{- end }}
{{- if .Values.brokerSpec.hostAliases }}
hostAliases:
{{- toYaml .Values.brokerSpec.hostAliases | nindent 4 }}
{{- end }}
{{- if .Values.brokerSpec.persistentVolumeClaim }}
persistentVolumes:
{{- template "doriscluster.broker.pvc" . }}
{{- end }}
{{- if .Values.brokerSpec.systemInitialization }}
systemInitialization:
{{- if .Values.brokerSpec.systemInitialization.initImage }}
initImage: {{ .Values.brokerSpec.systemInitialization.initImage }}
{{- end }}
{{- if .Values.brokerSpec.systemInitialization.command }}
command: {{ .Values.brokerSpec.systemInitialization.command }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,31 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
{{- if .Values.dorisCluster.authSecret }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "doriscluster.secret.name" . }}
namespace: {{ template "doriscluster.namespace" . }}
labels:
app.kubernetes.io/name: doriscluster
app.kubernetes.io/instance: {{ template "doriscluster.name" . }}
app.kubernetes.io/part-of: {{ template "kube-control.name" . }}
type: kubernetes.io/basic-auth
data:
{{- toYaml .Values.dorisCluster.authSecret | nindent 2}}
{{- end }}

View File

@@ -0,0 +1,697 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
# deploy a doris cluster
dorisCluster:
# the name of doriscluster, if not set, the chart name will be used.
name: "doriscluster-helm"
# annotations for doris cluster.
annotations: {}
# specify the cn deploy or not.
enabledCn: false
# specify the broker deploy or not.
enabledBroker: false
# specify the doriscluster adminuser or not.
# set adminUser will record the password in clear text. This method has been abandoned and is not recommended.
# When adding adminuser. should follow the steps:
# 1. Start dorisclusert without adminUser
# 2. Run 'CREATE USER ...' or 'SET PASSWORD ...' in mysql client
# 3. Add the name and password added in the previous step to adminUser and execute helm
adminUser: {}
# name: root
# password: "12345"
# use authSecret can encrypt and save passwords, recommend this method
# 1. run shell: echo -n '{your_password}' | base64 to get password base64 string
# 2. run shell: echo -n '{your_user}' | base64 to get user base64 string
# 3. Fill the encrypted string into the corresponding position
# as follow, username is 'root' , password is 't0p-Secret'
authSecret: {}
# username: cm9vdA==
# password: dDBwLVNlY3JldA==
feSpec:
replicas: 3
# electionNumber represents `FOLLOWER` number, replicas - electionNumber as `OBSERVER`
# electionNumber: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: fe-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for fe service.
# if you want to use a dedicated port for fe service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the fe service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30001
# targetPort: 9030
# - nodePort: 30002
# targetPort: 8030
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# type: "LoadBalancer"
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations:
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'fe.conf' is the startup config file of fe, and the name must be 'fe.conf'.
# fe.conf: |
# http_port = 8030
# rpc_port = 9020
# query_port = 9030
# edit_log_port = 9010
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelectordisplayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# meta volume, mountPath is /opt/apache-doris/fe/doris-meta
# metaPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/fe/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
beSpec:
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: be-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for be service.
# if you want to use a dedicated port for be service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the be service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30003
# targetPort: 9040
# - nodePort: 30004
# targetPort: 8040
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# type: "LoadBalancer"
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'be.conf' is the startup config file of be, and the name must be 'be.conf'.
# be.conf: |
# be_port = 9060
# webserver_port = 8040
# heartbeat_service_port = 9050
# brpc_port = 8060
# storage_root_path = /data/doris/be/storage
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelectordisplayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# data volume, mountPath is /opt/apache-doris/be/storage
# dataPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/be/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
cnSpec:
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: be-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# config the service port for cn service.
# if you want to use a dedicated port for cn service, you can config the port.
# see https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports for more details.
service:
# the cn service type, only supported ClusterIP, NodePort, LoadBalancer
type: ClusterIP
# type: NodePort
# servicePorts:
# - nodePort: 30005
# targetPort: 9040
# - nodePort: 30006
# targetPort: 8040
# type: "LoadBalancer"
# the loadBalancerIP for static ip config when the type=LoadBalancer and loadbalancerIp is not empty.
# loadbalancerIP: "127.0.0.1"
# use LoadBalancer on cloud platform, try to configure it using annotations
annotations: {}
# service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'be.conf' is the startup config file of cn, and the name must be 'be.conf'.
# be.conf: |
# be_port = 9060
# webserver_port = 8040
# heartbeat_service_port = 9050
# brpc_port = 8060
# storage_root_path = /data/doris/be/storage
# be_node_role=computation
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelectordisplayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# data volume, mountPath is /opt/apache-doris/be/storage
# dataPersistentVolume:
# storage: 200Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
# logs volume, mountPath is /opt/apache-doris/be/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]
# specific cn auto scale policy
autoScalingPolicy:
enable: true
# version: v2
minReplicas: 1
maxReplicas: 4
# hpaPolicy response to horizontlaPodAutoscaler's HorizontalPodAutoscalerSpec
hpaPolicy: {}
# metrics:
# - type: Resource
# resource:
# name: cpu
# target:
# type: Utilization
# averageUtilization: 30
brokerSpec:
replicas: 3
# the pod labels for user select or classify pods.
labels: {}
# selectdb.app.classify: "classify-1"
image:
repository: apache/doris
tag: broker-2.1.7
# imagePullSecrets:
# - name: imagePullSecret
# specify the configMap, as a dictionary.
# Its 'key' is the config file name in the doris 'doris_root_path/fe/conf/' file path,
# Its 'value' is the text content of the corresponding file (it should be relatively long, actually).
configMap: {}
# 'apache_hdfs_broker.conf' is the startup config file of broker, and the name must be 'apache_hdfs_broker.conf'.
# apache_hdfs_broker.conf: |
# broker_ipc_port: 8000
# client_expire_seconds: 3600
# Other config files can also be specified here
# hdfs-site.xml: |
# <?xml version="1.0" encoding="UTF-8"?>
#
# <configuration>
# <property>
# <name>dfs.nameservices</name>
# <value>ns</value>
# </property>
#
# mountConfigMaps supports configmap mounting in the form of specifying the mounting directory
# but please note that the mounting path cannot be repeated.
# if the elements within mountConfigMaps contain data, it means that the configmap does not need to be created manually by the user, and vice versa.
# in the following example, the user needs to manually create configmap 'cm-1'
# mountConfigMaps: {}
# - configMapName: cm-1
# mountPath: /etc/cm1
# - configMapName: cm-2
# mountPath: /etc/cm2
# data:
# copy_file1: |
# text *** content
# copy_file2: |
# text *** content
# If configured separately here, it will overwrite the total resources configuration default.
# but the default configuration of other types will still take effect.
resource: {}
# requests:
# cpu: 8
# memory: 16Gi
# limits:
# cpu: 16
# memory: 32Gi
# If specified, the pod's nodeSelectordisplayName="Map of nodeSelectors to match when scheduling pods on nodes"
nodeSelector: {}
# kubernetes.io/arch: amd64
# kubernetes.io/os: linux
# app.kubernetes.node.name: "k8s-node1"
# env represents an environment variable present in a Container.
# 'name' of the environment variable. Must be a C_IDENTIFIER.
# no more than one of the following may be specified: 'value' or 'valueFrom',
# 'value' is the value of environment.
# 'valueFrom' is source for the environment variable's value. Cannot be used if 'value' is not empty.
env: []
# - name: "HOME"
# value: "/opt/selectdb"
# - name: HOST_IP
# valueFrom:
# fieldRef:
# apiVersion: v1
# fieldPath: status.hostIP
# affinity is the constraints of pod scheduling
# nodeAffinity: Describes node affinity scheduling rules for the pod.
# podAffinity: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
# PodAntiAffinity: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
# reference: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
affinity: {}
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "k8s-node1"
# "k8s-node2"
# podAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "In"
# values:
# - "fe1"
# "fe2"
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# key: "app.kubernetes.node.name"
# operator: "NotIn"
# values:
# - "fe1"
# "fe2"
# the pod this Toleration is attached to tolerates any taint that matches. Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# the triple <key,value,effect> using the matching operator <operator>.
# 'key' is the taint key that the toleration applies to. Empty means match all taint keys. if the 'key' is empty, 'operator' must be Exists; this combination means to match all values and all keys.
# 'operator' represents a key's relationship to the 'value'. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
# 'value' is the taint value the toleration matches to. If the 'operator' is Exists, the 'value' should be empty, otherwise just a regular string.
# 'effect' indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
tolerations: []
# - key: "toleration"
# operator: "Equal"
# value: "master"
# - key: "node-role.kubernetes.io/master"
# operator: "Exists"
# effect: "NoSchedule"
# - operator: "Exists"
# hostAliases allows adding entries to /etc/hosts inside the containers
hostAliases: []
# If doris use hdfs or catalog, config the map of namenode host here is beneficial
# - ip: "127.0.0.1"
# hostnames:
# - "hostname1"
# - ip: "127.0.0.2"
# hostnames:
# - "hostname2"
persistentVolumeClaim: {}
# logs volume, mountPath is /opt/apache-doris/apache_hdfs_broker/log
# logsPersistentVolume:
# storage: 100Gi
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
# storageClassName: ""
systemInitialization: {}
# initImage: "selectdb/alpine:latest"
# command: [ "/sbin/sysctl", "-w", "vm.max_map_count=2000000" ]

View File

@@ -0,0 +1,94 @@
apiVersion: doris.selectdb.com/v1
kind: DorisCluster
metadata:
labels:
app.kubernetes.io/name: doriscluster
name: doriscluster-helm
namespace: doriscluster
spec:
feSpec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: uavcloud.env
operator: In
values:
- doris
replicas: 3
image: 172.16.100.55:8033/cmii/doris.fe-ubuntu:2.1.6
limits:
cpu: 8
memory: 16Gi
requests:
cpu: 2
memory: 6Gi
configMapInfo:
# use kubectl create configmap fe-configmap --from-file=fe.conf
configMapName: fe-configmap
resolveKey: fe.conf
persistentVolumes:
- mountPath: /opt/apache-doris/fe/doris-meta
name: doris-fe-2000g
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: doris-nfs-sc-56
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2000Gi
- mountPath: /opt/apache-doris/fe/jdbc_drivers
name: doriscluster-storage-fe-jdbc-drivers
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: doris-nfs-sc-58
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
beSpec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: uavcloud.env
operator: In
values:
- doris
replicas: 3
image: 172.16.100.55:8033/cmii/doris.be-ubuntu:2.1.6
limits:
cpu: 8
memory: 24Gi
requests:
cpu: 2
memory: 6Gi
configMapInfo:
# use kubectl create configmap be-configmap --from-file=be.conf
configMapName: be-configmap
resolveKey: be.conf
persistentVolumes:
- mountPath: /opt/apache-doris/be/storage
name: doris-1-9000g-pvc
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: doris-nfs-sc-57
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 9000Gi
- mountPath: /opt/apache-doris/be/jdbc_drivers
name: doriscluster-storage-be-jdbc-drivers
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: doris-nfs-sc-58
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1000Gi

View File

@@ -7,8 +7,17 @@ metadata:
namespace: doriscluster namespace: doriscluster
spec: spec:
feSpec: feSpec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: doris-deploy
operator: In
values:
- "true"
replicas: 1 replicas: 1
image: harbor.cdcyy.com.cn/cmii/doris.fe-ubuntu:2.1.6 image: 172.16.100.55:8033/cmii/doris.fe-ubuntu:2.1.6
limits: limits:
cpu: 8 cpu: 8
memory: 16Gi memory: 16Gi
@@ -26,36 +35,35 @@ spec:
name: doriscluster-storage0 name: doriscluster-storage0
persistentVolumeClaimSpec: persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation. # when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute storageClassName: doris-static-storage
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
# notice: if the storage size less 5G, fe will not start normal. # notice: if the storage size less 5G, fe will not start normal.
requests: requests:
storage: 300Gi storage: 500Gi
- mountPath: /opt/apache-doris/fe/log
name: doriscluster-storage1
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
- mountPath: /opt/apache-doris/fe/jdbc_drivers - mountPath: /opt/apache-doris/fe/jdbc_drivers
name: doriscluster-storage-fe-jdbc-drivers name: doriscluster-storage-fe-jdbc-drivers
persistentVolumeClaimSpec: persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation. # when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute storageClassName: cmlc-nfs-storage
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 100Gi storage: 10Gi
beSpec: beSpec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: doris-deploy
operator: In
values:
- "true"
replicas: 3 replicas: 3
image: harbor.cdcyy.com.cn/cmii/doris.be-ubuntu:2.1.6 image: 172.16.100.55:8033/cmii/doris.be-ubuntu:2.1.6
limits: limits:
cpu: 8 cpu: 8
memory: 24Gi memory: 24Gi
@@ -70,32 +78,42 @@ spec:
uavcloud.env: demo uavcloud.env: demo
persistentVolumes: persistentVolumes:
- mountPath: /opt/apache-doris/be/storage - mountPath: /opt/apache-doris/be/storage
name: doriscluster-storage2 name: doriscluster-storage1
persistentVolumeClaimSpec: persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation. # when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute storageClassName: doris-static-storage
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 300Gi storage: 9000Gi
- mountPath: /opt/apache-doris/be/storage
name: doriscluster-storage2
persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: doris-static-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 9000Gi
- mountPath: /opt/apache-doris/be/log - mountPath: /opt/apache-doris/be/log
name: doriscluster-storage3 name: doriscluster-storage3
persistentVolumeClaimSpec: persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation. # when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute storageClassName: doris-static-storage
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 100Gi storage: 9000Gi
- mountPath: /opt/apache-doris/be/jdbc_drivers - mountPath: /opt/apache-doris/be/jdbc_drivers
name: doriscluster-storage-be-jdbc-drivers name: doriscluster-storage-be-jdbc-drivers
persistentVolumeClaimSpec: persistentVolumeClaimSpec:
# when use specific storageclass, the storageClassName should reConfig, example as annotation. # when use specific storageclass, the storageClassName should reConfig, example as annotation.
storageClassName: nfs-prod-distribute storageClassName: cmlc-nfs-storage
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 100Gi storage: 10Gi

View File

@@ -284,22 +284,15 @@ spec:
# according to the platforms which are supported by your solution. # according to the platforms which are supported by your solution.
# It is considered best practice to support multiple architectures. You can # It is considered best practice to support multiple architectures. You can
# build your manager image using the makefile target docker-buildx. # build your manager image using the makefile target docker-buildx.
# affinity: affinity:
# nodeAffinity: nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution: requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms: nodeSelectorTerms:
# - matchExpressions: - matchExpressions:
# - key: kubernetes.io/arch - key: doris-deploy
# operator: In operator: In
# values: values:
# - amd64 - "true"
# - arm64
# - ppc64le
# - s390x
# - key: kubernetes.io/os
# operator: In
# values:
# - linux
securityContext: securityContext:
runAsNonRoot: true runAsNonRoot: true
# TODO(user): For common cases that do not require escalating privileges # TODO(user): For common cases that do not require escalating privileges
@@ -314,7 +307,7 @@ spec:
- /dorisoperator - /dorisoperator
args: args:
- --leader-elect - --leader-elect
image: harbor.cdcyy.com.cn/cmii/doris.k8s-operator:1.3.1 image: 172.16.100.55:8033/cmii/doris.k8s-operator:1.3.1
name: dorisoperator name: dorisoperator
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false

View File

@@ -0,0 +1,148 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cmii-uav-watchdog-agent
namespace: uavcloud-devflight
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog-agent
octopus/control: backend-app-1.0.0
app.kubernetes.io/managed-by: octopus
app.kubernetes.io/app-version: 6.2.0
spec:
replicas: 1
strategy:
rollingUpdate:
maxUnavailable: 1
selector:
matchLabels:
cmii.type: backend
cmii.app: cmii-uav-watchdog-agent
template:
metadata:
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog-agent
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: uavcloud.env
operator: In
values:
- devflight
imagePullSecrets:
- name: harborsecret
containers:
- name: cmii-uav-watchdog-agent
image: harbor.cdcyy.com.cn/cmii/cmii-uav-watchdog-agent-java:2025-03-26-17-09-09
imagePullPolicy: Always
env:
- name: K8S_NAMESPACE
value: uavcloud-devflight
- name: APPLICATION_NAME
value: cmii-uav-watchdog-agent
- name: CUST_JAVA_OPTS
value: "-Xms200m -Xmx1500m -Dlog4j2.formatMsgNoLookups=true"
- name: NACOS_REGISTRY
value: "helm-nacos:8848"
- name: NACOS_DISCOVERY_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NACOS_DISCOVERY_PORT
value: "8080"
- name: BIZ_CONFIG_GROUP
value: 6.2.0
- name: SYS_CONFIG_GROUP
value: 6.2.0
- name: IMAGE_VERSION
value: 6.2.0
- name: NACOS_USERNAME
value: "developer"
- name: NACOS_PASSWORD
value: "Deve@9128201"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: LIMIT_CPU
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog-agent
resource: limits.cpu
- name: LIMIT_MEMORY
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog-agent
resource: limits.memory
- name: REQUEST_CPU
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog-agent
resource: requests.cpu
- name: REQUEST_MEMORY
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog-agent
resource: requests.memory
- name: WATCHDOG_HEARTBEAT_URL
value: http://cmii-uav-watchdog:8080/api/heartbeat
ports:
- name: pod-port
containerPort: 8080
protocol: TCP
resources:
limits:
memory: 2Gi
cpu: "2"
requests:
memory: 200Mi
cpu: 200m
volumeMounts:
- name: nfs-backend-log-volume
mountPath: /cmii/logs
readOnly: false
subPath: uavcloud-devflight/cmii-uav-watchdog-agent
volumes:
- name: nfs-backend-log-volume
persistentVolumeClaim:
claimName: nfs-backend-log-pvc
---
apiVersion: v1
kind: Service
metadata:
name: cmii-uav-watchdog-agent
namespace: uavcloud-devflight
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog-agent
octopus/control: backend-app-1.0.0
app.kubernetes.io/managed-by: octopus
app.kubernetes.io/app-version: 6.2.0
spec:
type: ClusterIP
selector:
cmii.type: backend
cmii.app: cmii-uav-watchdog-agent
ports:
- name: backend-tcp
port: 8080
protocol: TCP
targetPort: 8080
---

View File

@@ -0,0 +1,178 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cmii-uav-watchdog
namespace: uavcloud-devflight
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog
octopus/control: backend-app-1.0.0
app.kubernetes.io/managed-by: octopus
app.kubernetes.io/app-version: 6.2.0
spec:
replicas: 1
strategy:
rollingUpdate:
maxUnavailable: 1
selector:
matchLabels:
cmii.type: backend
cmii.app: cmii-uav-watchdog
template:
metadata:
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: uavcloud.env
operator: In
values:
- devflight
imagePullSecrets:
- name: harborsecret
containers:
- name: cmii-uav-watchdog
image: harbor.cdcyy.com.cn/cmii/cmii-uav-watchdog:2025-03-26-17-33-09
imagePullPolicy: Always
env:
- name: K8S_NAMESPACE
value: uavcloud-devflight
- name: APPLICATION_NAME
value: cmii-uav-watchdog
- name: CUST_JAVA_OPTS
value: "-Xms200m -Xmx1500m -Dlog4j2.formatMsgNoLookups=true"
- name: NACOS_REGISTRY
value: "helm-nacos:8848"
- name: NACOS_DISCOVERY_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: NACOS_DISCOVERY_PORT
value: "8080"
- name: BIZ_CONFIG_GROUP
value: 6.2.0
- name: SYS_CONFIG_GROUP
value: 6.2.0
- name: IMAGE_VERSION
value: 6.2.0
- name: NACOS_USERNAME
value: "developer"
- name: NACOS_PASSWORD
value: "Deve@9128201"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: LIMIT_CPU
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog
resource: limits.cpu
- name: LIMIT_MEMORY
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog
resource: limits.memory
- name: REQUEST_CPU
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog
resource: requests.cpu
- name: REQUEST_MEMORY
valueFrom:
resourceFieldRef:
containerName: cmii-uav-watchdog
resource: requests.memory
ports:
- name: pod-port
containerPort: 8080
protocol: TCP
resources:
limits:
memory: 2Gi
cpu: "2"
requests:
memory: 200Mi
cpu: 200m
volumeMounts:
- name: nfs-backend-log-volume
mountPath: /cmii/cmii-uav-watchdog/
readOnly: false
subPath: uavcloud-devflight/cmii-uav-watchdog
- name: cmii-uav-watchdog-conf
mountPath: /cmii/cmii-uav-watchdog/config.yaml
subPath: config.yaml
volumes:
- name: nfs-backend-log-volume
persistentVolumeClaim:
claimName: nfs-backend-log-pvc
- name: cmii-uav-watchdog-conf
configMap:
name: cmii-uav-watchdog-configmap
items:
- key: config.yaml
path: config.yaml
---
apiVersion: v1
kind: Service
metadata:
name: cmii-uav-watchdog
namespace: uavcloud-devflight
labels:
cmii.type: backend
cmii.app: cmii-uav-watchdog
octopus/control: backend-app-1.0.0
app.kubernetes.io/managed-by: octopus
app.kubernetes.io/app-version: 6.2.0
spec:
type: NodePort
selector:
cmii.type: backend
cmii.app: cmii-uav-watchdog
ports:
- name: backend-tcp
port: 8080
protocol: TCP
targetPort: 8080
nodePort: 34567
---
kind: ConfigMap
apiVersion: v1
metadata:
name: cmii-uav-watchdog-configmap
namespace: uavcloud-devflight
data:
config.yaml: |-
server:
port: "8080" # 服务器端口
tier_one_auth:
tier_one_secret: "NK537TIWSUOFIS7SYCUJ6A7FPOGFVM3UH67TJRX3IYQAHKZXK2X7SBAA6JOXZVSV3U6K5YZUX7Q6TWOPK6YCRU6MIML33ZJFBN55I2Q" # TOTP密钥
time_offset_allowed: 30 # 允许的时间偏移(秒)
watchdog_center:
url: "https://watchdog-center.example.com" # 一级授权中心地址
project:
project_namespace: "uavcloud-devflight" # 项目命名空间
tier_two_auth:
tier_two_secret: "your_tier_two_secret_here" # 二级授权密钥

View File

@@ -8,6 +8,7 @@ metadata:
cmii.app: live-srs cmii.app: live-srs
cmii.type: live cmii.type: live
octopus.control: wdd octopus.control: wdd
app.kubernetes.io/managed-by: octopus app.kubernetes.io/managed-by: octopus
helm.sh/chart: cmlc-live-srs-rtc-2.0.0 helm.sh/chart: cmlc-live-srs-rtc-2.0.0
data: data:
@@ -230,7 +231,7 @@ spec:
protocol: UDP protocol: UDP
env: env:
- name: CANDIDATE - name: CANDIDATE
value: 36.135.17.162 value: lingyun.jlsxwkj.com:8888
resources: resources:
limits: limits:
cpu: 2000m cpu: 2000m

File diff suppressed because it is too large Load Diff

View File

@@ -2,15 +2,43 @@
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-splice name: tenant-prefix-supervisionh5
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "splice", ApplicationShortName: "supervisionh5",
AppClientId: "APP_zE0M3sTRXrCIJS8Y" AppClientId: "APP_qqSu82THfexI8PLM"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-pangu
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-flight-control
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "flight-control",
AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
@@ -30,28 +58,14 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-hljtt name: tenant-prefix-pilot2cloud
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hljtt", ApplicationShortName: "pilot2cloud",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-uasms
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uasms",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -72,42 +86,224 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-secenter name: tenant-prefix-base
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "secenter", ApplicationShortName: "base",
AppClientId: "APP_9LY41OaKSqk2btY0"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-multiterminal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "multiterminal",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-oms
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "oms",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-pangu name: tenant-prefix-open
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "", ApplicationShortName: "open",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-cmsportal name: tenant-prefix-seniclive
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "cmsportal", ApplicationShortName: "seniclive",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-share
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "share",
AppClientId: "APP_4lVSVI0ZGxTssir8"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-smsecret
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smsecret",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-mianyangbackend
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "mianyangbackend",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-supervision
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "supervision",
AppClientId: "APP_qqSu82THfexI8PLM"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-logistics
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "logistics",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-mws
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "mws",
AppClientId: "APP_uKniXPELlRERBBwK"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-splice
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "splice",
AppClientId: "APP_zE0M3sTRXrCIJS8Y"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-threedsimulation
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "threedsimulation",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-uasms
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uasms",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-classification
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "classification",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-eventsh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "eventsh5",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -142,33 +338,159 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-oms name: tenant-prefix-media
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "oms", ApplicationShortName: "media",
AppClientId: "APP_4AU8lbifESQO4FD6"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-securityh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "securityh5",
AppClientId: "APP_N3ImO0Ubfu9peRHD"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-qingdao
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "qingdao",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-open name: tenant-prefix-blockchain
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "open", ApplicationShortName: "blockchain",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-ai-brain
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "ai-brain",
AppClientId: "APP_rafnuCAmBESIVYMH"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-cmsportal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "cmsportal",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-security
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "security",
AppClientId: "APP_JUSEMc7afyWXxvE7"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-traffic
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "traffic",
AppClientId: "APP_Jc8i2wOQ1t73QEJS"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-dikongzhixingh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dikongzhixingh5",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-renyike
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "renyike",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-armypeople
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "armypeople",
AppClientId: "APP_UIegse6Lfou9pO1U"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-qinghaitourism name: tenant-prefix-qinghaitourism
namespace: uavcloud-devflight namespace: uavcloud-devflight
@@ -183,6 +505,20 @@ data:
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-hljtt
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hljtt",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-visualization name: tenant-prefix-visualization
namespace: uavcloud-devflight namespace: uavcloud-devflight
@@ -211,202 +547,6 @@ data:
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-pilot2cloud
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "pilot2cloud",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-classification
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "classification",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-ai-brain
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "ai-brain",
AppClientId: "APP_rafnuCAmBESIVYMH"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-smsecret
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smsecret",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-mianyangbackend
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "mianyangbackend",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-dikongzhixingh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dikongzhixingh5",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-renyike
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "renyike",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-seniclive
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "seniclive",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-traffic
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "traffic",
AppClientId: "APP_Jc8i2wOQ1t73QEJS"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-hyper
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hyper",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-blockchain
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "blockchain",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-supervision
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "supervision",
AppClientId: "APP_qqSu82THfexI8PLM"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-multiterminal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "multiterminal",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-mws
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "mws",
AppClientId: "APP_uKniXPELlRERBBwK"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-dispatchh5 name: tenant-prefix-dispatchh5
namespace: uavcloud-devflight namespace: uavcloud-devflight
@@ -422,42 +562,14 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-logistics name: tenant-prefix-hyper
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "logistics", ApplicationShortName: "hyper",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-threedsimulation
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "threedsimulation",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-qingdao
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "qingdao",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -478,131 +590,19 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-eventsh5 name: tenant-prefix-secenter
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "eventsh5", ApplicationShortName: "secenter",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-flight-control
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "flight-control",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-security
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "security",
AppClientId: "APP_JUSEMc7afyWXxvE7"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-securityh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "securityh5",
AppClientId: "APP_N3ImO0Ubfu9peRHD"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-supervisionh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "supervisionh5",
AppClientId: "APP_qqSu82THfexI8PLM"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-armypeople
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "armypeople",
AppClientId: "APP_UIegse6Lfou9pO1U"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-base
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "base",
AppClientId: "APP_9LY41OaKSqk2btY0"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-media
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "media",
AppClientId: "APP_4AU8lbifESQO4FD6"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-share
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "share",
AppClientId: "APP_4lVSVI0ZGxTssir8"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-uavmsmanager name: tenant-prefix-uavmsmanager
namespace: uavcloud-devflight namespace: uavcloud-devflight

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ metadata:
type: frontend type: frontend
octopus.control: all-ingress-config-wdd octopus.control: all-ingress-config-wdd
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -304,7 +304,7 @@ metadata:
type: backend type: backend
octopus.control: all-ingress-config-wdd octopus.control: all-ingress-config-wdd
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -366,6 +366,14 @@ spec:
backend: backend:
serviceName: cmii-suav-supervision serviceName: cmii-suav-supervision
servicePort: 8080 servicePort: 8080
- host: cmii-uas-datahub.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-datahub
servicePort: 8080
- host: cmii-uas-gateway.uavcloud-devflight.io - host: cmii-uas-gateway.uavcloud-devflight.io
http: http:
paths: paths:
@@ -566,6 +574,14 @@ spec:
backend: backend:
serviceName: cmii-uav-iot-dispatcher serviceName: cmii-uav-iot-dispatcher
servicePort: 8080 servicePort: 8080
- host: cmii-uav-iot-manager.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uav-iot-manager
servicePort: 8080
- host: cmii-uav-kpi-monitor.uavcloud-devflight.io - host: cmii-uav-kpi-monitor.uavcloud-devflight.io
http: http:
paths: paths:
@@ -702,6 +718,14 @@ spec:
backend: backend:
serviceName: cmii-uav-user serviceName: cmii-uav-user
servicePort: 8080 servicePort: 8080
- host: cmii-uav-watchdog.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uav-watchdog
servicePort: 8080
- host: cmii-uav-waypoint.uavcloud-devflight.io - host: cmii-uav-waypoint.uavcloud-devflight.io
http: http:
paths: paths:
@@ -710,6 +734,14 @@ spec:
backend: backend:
serviceName: cmii-uav-waypoint serviceName: cmii-uav-waypoint
servicePort: 8080 servicePort: 8080
- host: cmii-uavms-pyfusion.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uavms-pyfusion
servicePort: 8080
- host: cmii-uavms-security-center.uavcloud-devflight.io - host: cmii-uavms-security-center.uavcloud-devflight.io
http: http:
paths: paths:
@@ -728,7 +760,7 @@ metadata:
type: api-gateway type: api-gateway
octopus.control: all-ingress-config-1.1.0 octopus.control: all-ingress-config-1.1.0
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -756,3 +788,8 @@ spec:
backend: backend:
serviceName: cmii-uav-gateway serviceName: cmii-uav-gateway
servicePort: 8080 servicePort: 8080
- path: /devflight/uas/api/?(.*)
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-gateway
servicePort: 8080

View File

@@ -458,7 +458,7 @@ data:
info: info:
name: cmii-live-operator name: cmii-live-operator
description: cmii-live-operator description: cmii-live-operator
version: 6.0.0 version: 6.2.0
scanPackage: com.cmii.live.op scanPackage: com.cmii.live.op
cloud: cloud:
nacos: nacos:
@@ -468,11 +468,11 @@ data:
server-addr: helm-nacos:8848 server-addr: helm-nacos:8848
extension-configs: extension-configs:
- data-id: cmii-live-operator.yml - data-id: cmii-live-operator.yml
group: 6.0.0 group: 6.2.0
refresh: true refresh: true
shared-configs: shared-configs:
- data-id: cmii-backend-system.yml - data-id: cmii-backend-system.yml
group: 6.0.0 group: 6.2.0
refresh: true refresh: true
discovery: discovery:
enabled: false enabled: false

View File

@@ -2,187 +2,19 @@
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-traffic name: tenant-prefix-seniclive
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "traffic", ApplicationShortName: "seniclive",
AppClientId: "APP_Jc8i2wOQ1t73QEJS"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-smsecret
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smsecret",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-armypeople
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "armypeople",
AppClientId: "APP_UIegse6Lfou9pO1U"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-multiterminal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "multiterminal",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-share
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "share",
AppClientId: "APP_4lVSVI0ZGxTssir8"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-qingdao
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "qingdao",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-hyper
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hyper",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-blockchain
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "blockchain",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-secenter
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "secenter",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-cmsportal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "cmsportal",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-logistics
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "logistics",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-qinghaitourism
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "qinghaitourism",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-securityh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "securityh5",
AppClientId: "APP_N3ImO0Ubfu9peRHD"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-threedsimulation name: tenant-prefix-threedsimulation
namespace: uavcloud-devflight namespace: uavcloud-devflight
@@ -198,154 +30,42 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-uas name: tenant-prefix-qinghaitourism
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uas", ApplicationShortName: "qinghaitourism",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-dispatchh5 name: tenant-prefix-qingdao
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dispatchh5", ApplicationShortName: "qingdao",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-base name: tenant-prefix-scanner
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "base", ApplicationShortName: "scanner",
AppClientId: "APP_9LY41OaKSqk2btY0"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-media
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "media",
AppClientId: "APP_4AU8lbifESQO4FD6"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-open
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "open",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-pilot2cloud
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "pilot2cloud",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-awareness
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "awareness",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-pangu
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-oms
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "oms",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-jiangsuwenlv
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "jiangsuwenlv",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-uavmsmanager
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uavmsmanager",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -379,6 +99,104 @@ data:
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata:
name: tenant-prefix-multiterminal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "multiterminal",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-jiangsuwenlv
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "jiangsuwenlv",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-uas
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uas",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-classification
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "classification",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-dikongzhixingh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dikongzhixingh5",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-cmsportal
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "cmsportal",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-oms
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "oms",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata: metadata:
name: tenant-prefix-splice name: tenant-prefix-splice
namespace: uavcloud-devflight namespace: uavcloud-devflight
@@ -394,14 +212,70 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-smauth name: tenant-prefix-blockchain
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smauth", ApplicationShortName: "blockchain",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-flight-control
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "flight-control",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-logistics
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "logistics",
AppClientId: "APP_PvdfRRRBPL8xbIwl"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-media
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "media",
AppClientId: "APP_4AU8lbifESQO4FD6"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-open
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "open",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -436,14 +310,70 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-classification name: tenant-prefix-pilot2cloud
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "classification", ApplicationShortName: "pilot2cloud",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-smauth
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smauth",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-armypeople
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "armypeople",
AppClientId: "APP_UIegse6Lfou9pO1U"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-hljtt
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hljtt",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-secenter
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "secenter",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -464,14 +394,112 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-dikongzhixingh5 name: tenant-prefix-pangu
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dikongzhixingh5", ApplicationShortName: "",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-emergency
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "emergency",
AppClientId: "APP_aGsTAY1uMZrpKdfk"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-security
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "security",
AppClientId: "APP_JUSEMc7afyWXxvE7"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-traffic
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "traffic",
AppClientId: "APP_Jc8i2wOQ1t73QEJS"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-smsecret
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "smsecret",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-awareness
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "awareness",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-securityh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "securityh5",
AppClientId: "APP_N3ImO0Ubfu9peRHD"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-uavmsmanager
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "uavmsmanager",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -492,42 +520,70 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-mws name: tenant-prefix-supervisionh5
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "mws", ApplicationShortName: "supervisionh5",
AppClientId: "APP_uKniXPELlRERBBwK" AppClientId: "APP_qqSu82THfexI8PLM"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-security name: tenant-prefix-base
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "security", ApplicationShortName: "base",
AppClientId: "APP_JUSEMc7afyWXxvE7" AppClientId: "APP_9LY41OaKSqk2btY0"
} }
--- ---
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-scanner name: tenant-prefix-share
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "scanner", ApplicationShortName: "share",
AppClientId: "APP_4lVSVI0ZGxTssir8"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-dispatchh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "dispatchh5",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-hyper
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hyper",
AppClientId: "empty" AppClientId: "empty"
} }
--- ---
@@ -562,55 +618,13 @@ data:
kind: ConfigMap kind: ConfigMap
apiVersion: v1 apiVersion: v1
metadata: metadata:
name: tenant-prefix-emergency name: tenant-prefix-mws
namespace: uavcloud-devflight namespace: uavcloud-devflight
data: data:
ingress-config.js: |- ingress-config.js: |-
var __GlobalIngressConfig = { var __GlobalIngressConfig = {
TenantEnvironment: "devflight", TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com", CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "emergency", ApplicationShortName: "mws",
AppClientId: "APP_aGsTAY1uMZrpKdfk" AppClientId: "APP_uKniXPELlRERBBwK"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-seniclive
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "seniclive",
AppClientId: "empty"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-supervisionh5
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "supervisionh5",
AppClientId: "APP_qqSu82THfexI8PLM"
}
---
kind: ConfigMap
apiVersion: v1
metadata:
name: tenant-prefix-hljtt
namespace: uavcloud-devflight
data:
ingress-config.js: |-
var __GlobalIngressConfig = {
TenantEnvironment: "devflight",
CloudHOST: "lab.uavcmlc.com",
ApplicationShortName: "hljtt",
AppClientId: "empty"
} }

View File

@@ -8,7 +8,7 @@ metadata:
type: frontend type: frontend
octopus.control: all-ingress-config-wdd octopus.control: all-ingress-config-wdd
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -29,6 +29,7 @@ metadata:
rewrite ^(/dispatchh5)$ $1/ redirect; rewrite ^(/dispatchh5)$ $1/ redirect;
rewrite ^(/emergency)$ $1/ redirect; rewrite ^(/emergency)$ $1/ redirect;
rewrite ^(/eventsh5)$ $1/ redirect; rewrite ^(/eventsh5)$ $1/ redirect;
rewrite ^(/flight-control)$ $1/ redirect;
rewrite ^(/hljtt)$ $1/ redirect; rewrite ^(/hljtt)$ $1/ redirect;
rewrite ^(/hyper)$ $1/ redirect; rewrite ^(/hyper)$ $1/ redirect;
rewrite ^(/jiangsuwenlv)$ $1/ redirect; rewrite ^(/jiangsuwenlv)$ $1/ redirect;
@@ -143,6 +144,11 @@ spec:
backend: backend:
serviceName: cmii-uav-platform-eventsh5 serviceName: cmii-uav-platform-eventsh5
servicePort: 9528 servicePort: 9528
- path: /devflight/flight-control/?(.*)
pathType: ImplementationSpecific
backend:
serviceName: cmii-uav-platform-flight-control
servicePort: 9528
- path: /devflight/hljtt/?(.*) - path: /devflight/hljtt/?(.*)
pathType: ImplementationSpecific pathType: ImplementationSpecific
backend: backend:
@@ -298,7 +304,7 @@ metadata:
type: backend type: backend
octopus.control: all-ingress-config-wdd octopus.control: all-ingress-config-wdd
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -360,6 +366,14 @@ spec:
backend: backend:
serviceName: cmii-suav-supervision serviceName: cmii-suav-supervision
servicePort: 8080 servicePort: 8080
- host: cmii-uas-datahub.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-datahub
servicePort: 8080
- host: cmii-uas-gateway.uavcloud-devflight.io - host: cmii-uas-gateway.uavcloud-devflight.io
http: http:
paths: paths:
@@ -560,6 +574,14 @@ spec:
backend: backend:
serviceName: cmii-uav-iot-dispatcher serviceName: cmii-uav-iot-dispatcher
servicePort: 8080 servicePort: 8080
- host: cmii-uav-iot-manager.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uav-iot-manager
servicePort: 8080
- host: cmii-uav-kpi-monitor.uavcloud-devflight.io - host: cmii-uav-kpi-monitor.uavcloud-devflight.io
http: http:
paths: paths:
@@ -696,6 +718,14 @@ spec:
backend: backend:
serviceName: cmii-uav-user serviceName: cmii-uav-user
servicePort: 8080 servicePort: 8080
- host: cmii-uav-watchdog.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uav-watchdog
servicePort: 8080
- host: cmii-uav-waypoint.uavcloud-devflight.io - host: cmii-uav-waypoint.uavcloud-devflight.io
http: http:
paths: paths:
@@ -704,6 +734,14 @@ spec:
backend: backend:
serviceName: cmii-uav-waypoint serviceName: cmii-uav-waypoint
servicePort: 8080 servicePort: 8080
- host: cmii-uavms-pyfusion.uavcloud-devflight.io
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
serviceName: cmii-uavms-pyfusion
servicePort: 8080
- host: cmii-uavms-security-center.uavcloud-devflight.io - host: cmii-uavms-security-center.uavcloud-devflight.io
http: http:
paths: paths:
@@ -722,7 +760,7 @@ metadata:
type: api-gateway type: api-gateway
octopus.control: all-ingress-config-1.1.0 octopus.control: all-ingress-config-1.1.0
app.kubernetes.io/managed-by: octopus-control app.kubernetes.io/managed-by: octopus-control
app.kubernetes.io/version: 6.0.0 app.kubernetes.io/version: 6.2.0
annotations: annotations:
kubernetes.io/ingress.class: "nginx" kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true" nginx.ingress.kubernetes.io/enable-cors: "true"
@@ -750,3 +788,8 @@ spec:
backend: backend:
serviceName: cmii-uav-gateway serviceName: cmii-uav-gateway
servicePort: 8080 servicePort: 8080
- path: /devflight/uas/api/?(.*)
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-gateway
servicePort: 8080

View File

@@ -458,7 +458,7 @@ data:
info: info:
name: cmii-live-operator name: cmii-live-operator
description: cmii-live-operator description: cmii-live-operator
version: 6.0.0 version: 6.2.0
scanPackage: com.cmii.live.op scanPackage: com.cmii.live.op
cloud: cloud:
nacos: nacos:
@@ -468,11 +468,11 @@ data:
server-addr: helm-nacos:8848 server-addr: helm-nacos:8848
extension-configs: extension-configs:
- data-id: cmii-live-operator.yml - data-id: cmii-live-operator.yml
group: 6.0.0 group: 6.2.0
refresh: true refresh: true
shared-configs: shared-configs:
- data-id: cmii-backend-system.yml - data-id: cmii-backend-system.yml
group: 6.0.0 group: 6.2.0
refresh: true refresh: true
discovery: discovery:
enabled: false enabled: false

View File

@@ -53,6 +53,9 @@ var CmiiBackendAppMap = map[string]string{
"cmii-uav-sec-awareness": "5.7.0", "cmii-uav-sec-awareness": "5.7.0",
"cmii-uav-security-trace": "5.7.0", "cmii-uav-security-trace": "5.7.0",
"cmii-uavms-pyfusion": "5.7.0", "cmii-uavms-pyfusion": "5.7.0",
"cmii-uav-iot-manager": "5.7.0",
"cmii-uas-datahub": "5.7.0",
"cmii-uav-watchdog": "5.7.0",
} }
var CmiiFrontendAppMap = map[string]string{ var CmiiFrontendAppMap = map[string]string{
@@ -115,6 +118,8 @@ var IgnoreCmiiBackendAppName = map[string]string{
"cmii-uav-fwdd": "0", "cmii-uav-fwdd": "0",
"cmii-uav-sync": "0", "cmii-uav-sync": "0",
"cmii-uavms-security-center": "0", "cmii-uavms-security-center": "0",
"cmii-uav-iot-manager": "0",
"cmii-uas-datahub": "0",
} }
var IgnoreCmiiFrontendAppName = map[string]string{ var IgnoreCmiiFrontendAppName = map[string]string{
@@ -149,102 +154,104 @@ var CmiiGISAppMap = map[string]string{
} }
var MiddlewareAmd64 = []string{ var MiddlewareAmd64 = []string{
"docker.107421.xyz/bitnami/redis:6.2.6-debian-10-r0", "bitnami/redis:6.2.6-debian-10-r0",
"docker.107421.xyz/bitnami/redis:6.2.14-debian-11-r1", "bitnami/redis:6.2.14-debian-11-r1",
"docker.107421.xyz/bitnami/mysql:8.0.35-debian-11-r1", "bitnami/mysql:8.0.35-debian-11-r1",
"docker.107421.xyz/bitnami/mysql:8.1.0-debian-11-r42", "bitnami/mysql:8.1.0-debian-11-r42",
"docker.107421.xyz/simonrupf/chronyd:0.4.3", "simonrupf/chronyd:0.4.3",
"docker.107421.xyz/bitnami/bitnami-shell:10-debian-10-r140", "bitnami/bitnami-shell:10-debian-10-r140",
"docker.107421.xyz/bitnami/bitnami-shell:11-debian-11-r136", "bitnami/bitnami-shell:11-debian-11-r136",
"docker.107421.xyz/bitnami/rabbitmq:3.9.12-debian-10-r3", "bitnami/rabbitmq:3.9.12-debian-10-r3",
"docker.107421.xyz/bitnami/rabbitmq:3.11.26-debian-11-r2", "bitnami/rabbitmq:3.11.26-debian-11-r2",
"docker.107421.xyz/ossrs/srs:v4.0.136", "ossrs/srs:v4.0.136",
"docker.107421.xyz/ossrs/srs:v5.0.195", "ossrs/srs:v5.0.195",
"docker.107421.xyz/ossrs/srs:v4.0-r3", "ossrs/srs:v4.0-r3",
"docker.107421.xyz/emqx/emqx:4.4.19", "emqx/emqx:4.4.19",
"docker.107421.xyz/emqx/emqx:5.5.1", "emqx/emqx:5.5.1",
"docker.107421.xyz/nacos/nacos-server:v2.1.2", "nacos/nacos-server:v2.1.2",
"docker.107421.xyz/nacos/nacos-server:v2.1.2-slim", "nacos/nacos-server:v2.1.2-slim",
"docker.107421.xyz/library/mongo:5.0", "library/mongo:5.0",
"docker.107421.xyz/library/rabbitmq:3.9-management", "library/rabbitmq:3.9-management",
"docker.107421.xyz/bitnami/minio:2022.5.4", "bitnami/minio:2022.5.4",
"docker.107421.xyz/bitnami/minio:2023.5.4", "bitnami/minio:2023.5.4",
"docker.107421.xyz/kubernetesui/dashboard:v2.0.1", "minio/minio:RELEASE.2023-06-02T23-17-26Z",
"docker.107421.xyz/kubernetesui/metrics-scraper:v1.0.4", "kubernetesui/dashboard:v2.0.1",
"docker.107421.xyz/library/nginx:1.21.3", "kubernetesui/metrics-scraper:v1.0.4",
"docker.107421.xyz/library/redis:6.0.20-alpine", "library/nginx:1.21.3",
"docker.107421.xyz/dyrnq/nfs-subdir-external-provisioner:v4.0.2", "library/redis:6.0.20-alpine",
"docker.107421.xyz/jerrychina2020/rke-tools:v0.175-linux", "dyrnq/nfs-subdir-external-provisioner:v4.0.2",
"docker.107421.xyz/jerrychina2020/rke-tools:v0.175", "jerrychina2020/rke-tools:v0.175-linux",
"docker.107421.xyz/library/busybox:latest", "jerrychina2020/rke-tools:v0.175",
"harbor.cdcyy.com.cn/cmii/doris.be-ubuntu:2.1.6", "library/busybox:latest",
"harbor.cdcyy.com.cn/cmii/doris.be-ubuntu:2.1.6", "harbor.cdcyy.com.cn/cmii/doris.be-ubuntu:2.1.6",
"harbor.cdcyy.com.cn/cmii/doris.fe-ubuntu:2.1.6",
"harbor.cdcyy.com.cn/cmii/doris.k8s-operator:1.3.1", "harbor.cdcyy.com.cn/cmii/doris.k8s-operator:1.3.1",
"harbor.cdcyy.com.cn/cmii/alpine:latest", "harbor.cdcyy.com.cn/cmii/alpine:latest",
"harbor.cdcyy.com.cn/cmii/nginx:1.27.0",
} }
var Rancher1204Amd64 = []string{ var Rancher1204Amd64 = []string{
"docker.107421.xyz/rancher/backup-restore-operator:v1.0.3", "rancher/backup-restore-operator:v1.0.3",
"docker.107421.xyz/rancher/calico-cni:v3.17.2", "rancher/calico-cni:v3.17.2",
"docker.107421.xyz/rancher/calico-ctl:v3.17.2", "rancher/calico-ctl:v3.17.2",
"docker.107421.xyz/rancher/calico-kube-controllers:v3.17.2", "rancher/calico-kube-controllers:v3.17.2",
"docker.107421.xyz/rancher/calico-node:v3.17.2", "rancher/calico-node:v3.17.2",
"docker.107421.xyz/rancher/calico-pod2daemon-flexvol:v3.17.2", "rancher/calico-pod2daemon-flexvol:v3.17.2",
"docker.107421.xyz/rancher/cis-operator:v1.0.3", "rancher/cis-operator:v1.0.3",
"docker.107421.xyz/rancher/cluster-proportional-autoscaler:1.7.1", "rancher/cluster-proportional-autoscaler:1.7.1",
"docker.107421.xyz/rancher/coredns-coredns:1.8.0", "rancher/coredns-coredns:1.8.0",
"docker.107421.xyz/rancher/coreos-etcd:v3.4.14-rancher1", "rancher/coreos-etcd:v3.4.14-rancher1",
"docker.107421.xyz/rancher/coreos-kube-state-metrics:v1.9.7", "rancher/coreos-kube-state-metrics:v1.9.7",
"docker.107421.xyz/rancher/coreos-prometheus-config-reloader:v0.39.0", "rancher/coreos-prometheus-config-reloader:v0.39.0",
"docker.107421.xyz/rancher/coreos-prometheus-operator:v0.39.0", "rancher/coreos-prometheus-operator:v0.39.0",
"docker.107421.xyz/rancher/externalip-webhook:v0.1.6", "rancher/externalip-webhook:v0.1.6",
"docker.107421.xyz/rancher/flannel-cni:v0.3.0-rancher6", "rancher/flannel-cni:v0.3.0-rancher6",
"docker.107421.xyz/rancher/coreos-flannel:v0.13.0-rancher1", "rancher/coreos-flannel:v0.13.0-rancher1",
"docker.107421.xyz/rancher/fleet-agent:v0.3.4", "rancher/fleet-agent:v0.3.4",
"docker.107421.xyz/rancher/fleet:v0.3.4", "rancher/fleet:v0.3.4",
"docker.107421.xyz/rancher/fluentd:v0.1.24", "rancher/fluentd:v0.1.24",
"docker.107421.xyz/rancher/grafana-grafana:7.1.5", "rancher/grafana-grafana:7.1.5",
"docker.107421.xyz/rancher/hyperkube:v1.20.4-rancher1", "rancher/hyperkube:v1.20.4-rancher1",
"docker.107421.xyz/rancher/jimmidyson-configmap-reload:v0.3.0", "rancher/jimmidyson-configmap-reload:v0.3.0",
"docker.107421.xyz/rancher/k8s-dns-dnsmasq-nanny:1.15.2", "rancher/k8s-dns-dnsmasq-nanny:1.15.2",
"docker.107421.xyz/rancher/k8s-dns-kube-dns:1.15.2", "rancher/k8s-dns-kube-dns:1.15.2",
"docker.107421.xyz/rancher/k8s-dns-node-cache:1.15.13", "rancher/k8s-dns-node-cache:1.15.13",
"docker.107421.xyz/rancher/k8s-dns-sidecar:1.15.2", "rancher/k8s-dns-sidecar:1.15.2",
"docker.107421.xyz/rancher/klipper-lb:v0.1.2", "rancher/klipper-lb:v0.1.2",
"docker.107421.xyz/rancher/kube-api-auth:v0.1.4", "rancher/kube-api-auth:v0.1.4",
"docker.107421.xyz/rancher/kubectl:v1.20.4", "rancher/kubectl:v1.20.4",
"docker.107421.xyz/rancher/kubernetes-external-dns:v0.7.3", "rancher/kubernetes-external-dns:v0.7.3",
"docker.107421.xyz/rancher/cluster-proportional-autoscaler:1.8.1", "rancher/cluster-proportional-autoscaler:1.8.1",
"docker.107421.xyz/rancher/library-busybox:1.31.1", "rancher/library-busybox:1.31.1",
"docker.107421.xyz/rancher/library-busybox:1.32.1", "rancher/library-busybox:1.32.1",
"docker.107421.xyz/rancher/library-nginx:1.19.2-alpine", "rancher/library-nginx:1.19.2-alpine",
"docker.107421.xyz/rancher/library-traefik:1.7.19", "rancher/library-traefik:1.7.19",
"docker.107421.xyz/rancher/local-path-provisioner:v0.0.11", "rancher/local-path-provisioner:v0.0.11",
"docker.107421.xyz/rancher/local-path-provisioner:v0.0.14", "rancher/local-path-provisioner:v0.0.14",
"docker.107421.xyz/rancher/local-path-provisioner:v0.0.19", "rancher/local-path-provisioner:v0.0.19",
"docker.107421.xyz/rancher/log-aggregator:v0.1.7", "rancher/log-aggregator:v0.1.7",
"docker.107421.xyz/rancher/istio-kubectl:1.5.10", "rancher/istio-kubectl:1.5.10",
"docker.107421.xyz/rancher/metrics-server:v0.4.1", "rancher/metrics-server:v0.4.1",
"docker.107421.xyz/rancher/configmap-reload:v0.3.0-rancher4", "rancher/configmap-reload:v0.3.0-rancher4",
"docker.107421.xyz/rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1", "rancher/nginx-ingress-controller-defaultbackend:1.5-rancher1",
"docker.107421.xyz/rancher/nginx-ingress-controller:nginx-0.43.0-rancher1", "rancher/nginx-ingress-controller:nginx-0.43.0-rancher1",
"docker.107421.xyz/rancher/opa-gatekeeper:v3.1.0-beta.7", "rancher/opa-gatekeeper:v3.1.0-beta.7",
"docker.107421.xyz/rancher/openzipkin-zipkin:2.14.2", "rancher/openzipkin-zipkin:2.14.2",
"docker.107421.xyz/rancher/pause:3.2", "rancher/pause:3.2",
"docker.107421.xyz/rancher/plugins-docker:18.09", "rancher/plugins-docker:18.09",
"docker.107421.xyz/rancher/prom-alertmanager:v0.21.0", "rancher/prom-alertmanager:v0.21.0",
"docker.107421.xyz/rancher/prom-node-exporter:v1.0.1", "rancher/prom-node-exporter:v1.0.1",
"docker.107421.xyz/rancher/prom-prometheus:v2.18.2", "rancher/prom-prometheus:v2.18.2",
"docker.107421.xyz/rancher/prometheus-auth:v0.2.1", "rancher/prometheus-auth:v0.2.1",
"docker.107421.xyz/rancher/rancher-agent:v2.5.7", "rancher/rancher-agent:v2.5.7",
"docker.107421.xyz/rancher/rancher-webhook:v0.1.0-beta9", "rancher/rancher-webhook:v0.1.0-beta9",
"docker.107421.xyz/rancher/rancher:v2.5.7", "rancher/rancher:v2.5.7",
"docker.107421.xyz/rancher/rke-tools:v0.1.72", "rancher/rke-tools:v0.1.72",
"docker.107421.xyz/rancher/security-scan:v0.1.14", "rancher/security-scan:v0.1.14",
"docker.107421.xyz/rancher/security-scan:v0.2.2", "rancher/security-scan:v0.2.2",
"docker.107421.xyz/rancher/shell:v0.1.6", "rancher/shell:v0.1.6",
"docker.107421.xyz/rancher/sonobuoy-sonobuoy:v0.16.3", "rancher/sonobuoy-sonobuoy:v0.16.3",
"docker.107421.xyz/rancher/system-upgrade-controller:v0.6.2", "rancher/system-upgrade-controller:v0.6.2",
} }
var CmiiSRSImageList = []string{ var CmiiSRSImageList = []string{

View File

@@ -75,6 +75,42 @@ spec:
value: "developer" value: "developer"
- name: NACOS_PASSWORD - name: NACOS_PASSWORD
value: "Deve@9128201" value: "Deve@9128201"
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NODE_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: LIMIT_CPU
valueFrom:
resourceFieldRef:
containerName: {{ .AppName }}
resource: limits.cpu
- name: LIMIT_MEMORY
valueFrom:
resourceFieldRef:
containerName: {{ .AppName }}
resource: limits.memory
- name: REQUEST_CPU
valueFrom:
resourceFieldRef:
containerName: {{ .AppName }}
resource: requests.cpu
- name: REQUEST_MEMORY
valueFrom:
resourceFieldRef:
containerName: {{ .AppName }}
resource: requests.memory
ports: ports:
- name: pod-port - name: pod-port
containerPort: 8080 containerPort: 8080

View File

@@ -188,6 +188,11 @@ spec:
backend: backend:
serviceName: cmii-uav-gateway serviceName: cmii-uav-gateway
servicePort: 8080 servicePort: 8080
- path: /{{ $tenantEnv }}/uas/api/?(.*)
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-gateway
servicePort: 8080
{{- else }} {{- else }}
- path: /oms/api/?(.*) - path: /oms/api/?(.*)
pathType: ImplementationSpecific pathType: ImplementationSpecific
@@ -204,5 +209,10 @@ spec:
backend: backend:
serviceName: cmii-uav-gateway serviceName: cmii-uav-gateway
servicePort: 8080 servicePort: 8080
- path: /uas/api/?(.*)
pathType: ImplementationSpecific
backend:
serviceName: cmii-uas-gateway
servicePort: 8080
{{- end }} {{- end }}
` `

View File

@@ -24,7 +24,7 @@ func init() {
case "linux": case "linux":
DeployFilePrefix = "/root/wddproject/ProjectOctopus/agent-common/real_project/" DeployFilePrefix = "/root/wddproject/ProjectOctopus/agent-common/real_project/"
case "windows": case "windows":
DeployFilePrefix = "C:\\Users\\wdd\\IdeaProjects\\ProjectOctopus\\agent-common\\real_project\\" DeployFilePrefix = "C:\\Users\\wdd\\Documents\\IdeaProjects\\ProjectOctopus\\agent-common\\real_project\\"
//DeployFilePrefix = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-common\\real_project\\" //DeployFilePrefix = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-common\\real_project\\"
} }

View File

@@ -25,7 +25,7 @@ func TestCmiiEnvDeploy(t *testing.T) {
HarborIPOrCustomImagePrefix: image2.CmiiHarborPrefix, HarborIPOrCustomImagePrefix: image2.CmiiHarborPrefix,
HarborPort: "", HarborPort: "",
Namespace: deployNamespace, Namespace: deployNamespace,
TagVersion: "6.0.0", TagVersion: "6.2.0",
TenantEnv: "devflight", TenantEnv: "devflight",
MinioPublicIP: "", MinioPublicIP: "",
MinioInnerIP: "127.0.0.1", MinioInnerIP: "127.0.0.1",
@@ -341,6 +341,27 @@ func TestCmiiEnvDeploy_LiaoNingYingJiPingTai(t *testing.T) {
} }
func TestCmiiEnvDeploy_NeiMengGuEErDuoSiJiChang(t *testing.T) {
// 内蒙古鄂尔多斯
commonEnv := &z_dep.CommonEnvironmentConfig{
WebIP: "172.16.100.55",
WebPort: "8088",
HarborIPOrCustomImagePrefix: "172.16.100.55",
HarborPort: "8033",
Namespace: "eedsjc-uavms",
TagVersion: "6.2.0",
TenantEnv: "",
MinioPublicIP: "",
MinioInnerIP: "172.16.100.61",
NFSServerIP: "172.16.100.61",
ApplyFilePrefix: "",
}
CmiiEnvDeployOffline(commonEnv, true, real_project.Cmii620ImageList)
}
func TestCmiiEnvDeploy_ZhuHaiHengQing(t *testing.T) { func TestCmiiEnvDeploy_ZhuHaiHengQing(t *testing.T) {
// 珠海横琴 // 珠海横琴

View File

@@ -146,8 +146,57 @@ func addBaseSubcommands(cmd *cobra.Command) {
// 清空路由表 // 清空路由表
log.Info("清空路由表...") log.Info("清空路由表...")
op.HardCodeCommandExecutor("iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -t raw -F")
op.HardCodeCommandExecutor("ip6tables -F && ip6tables -t nat -F && ip6tables -t mangle -F && ip6tables -t raw -F") commandExecutor := [][]string{
{
"iptables",
"-F",
},
{
"iptables",
"-t",
"nat",
"-F",
},
{
"iptables",
"-t",
"mangle",
"-F",
},
{
"iptables",
"-t",
"raw",
"-F",
},
{
"ip6tables",
"-F",
},
{
"ip6tables",
"-t",
"nat",
"-F",
},
{
"ip6tables",
"-t",
"mangle",
"-F",
},
{
"ip6tables",
"-t",
"raw",
"-F",
},
}
for _, command := range commandExecutor {
op.SingleLineCommandExecutor(command)
}
log.Info("Firewall 关闭成功!") log.Info("Firewall 关闭成功!")
}, },
@@ -220,6 +269,7 @@ func addBaseSubcommands(cmd *cobra.Command) {
cmd.AddCommand( cmd.AddCommand(
dockerCmd, dockerCmd,
dockerComposeCmd, dockerComposeCmd,
harborCmd,
swapCmd, swapCmd,
commonToolsInstall, commonToolsInstall,
selinuxCmd, selinuxCmd,
@@ -246,10 +296,13 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
} }
// 解压harbor // 解压harbor
utils.UnzipFile(harborLocalInstallPath, "/root/wdd/harbor") utils.UnzipFile(harborLocalInstallPath, "/root/wdd/")
// 获取本机的内网IPv4地址 // 获取本机的内网IPv4地址
configCache := config.ConfigCache configCache := config.ConfigCache
if len(configCache.Agent.Network.Interfaces) == 0 {
log.Error("没有获取到本机的ipv4地址无法安装harbor! 请执行 info all !")
}
ip := configCache.Agent.Network.Interfaces[0].IPv4 ip := configCache.Agent.Network.Interfaces[0].IPv4
if ip == "" { if ip == "" {
@@ -266,11 +319,9 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
return return
} }
// 进入harbor目录
os.Chdir("/root/wdd/harbor")
// 运行install.sh // 运行install.sh
ok, log1 := op.HardCodeCommandExecutor("bash install.sh") op.SingleLineCommandExecutor([]string{"cd", "/root/wdd/harbor"})
ok, log1 := op.RealTimeCommandExecutor([]string{"/bin/bash", "/root/wdd/harbor/install.sh"})
if !ok { if !ok {
log.Error("安装harbor失败: %s", log1) log.Error("安装harbor失败: %s", log1)
return return
@@ -314,18 +365,16 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
return return
} }
// 进入harbor目录
os.Chdir("/root/wdd/harbor")
// 启动harbor // 启动harbor
ok, log1 := op.HardCodeCommandExecutor("docker-compose up -d") op.SingleLineCommandExecutor([]string{"cd", "/root/wdd/harbor"})
ok, log1 := op.SingleLineCommandExecutor([]string{"docker-compose", "up", "-d"})
if !ok { if !ok {
log.Error("启动harbor失败: %s", log1) log.Error("启动harbor失败: %s", log1)
return return
} }
// 等待5 // 等待10
time.Sleep(5 * time.Second) time.Sleep(10 * time.Second)
// 检查harbor是否启动成功 // 检查harbor是否启动成功
if !checkHarborIsRunning() { if !checkHarborIsRunning() {
@@ -357,7 +406,7 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
os.Chdir("/root/wdd/harbor") os.Chdir("/root/wdd/harbor")
// 停止harbor // 停止harbor
ok, log1 := op.HardCodeCommandExecutor("docker-compose down") ok, log1 := op.SingleLineCommandExecutor([]string{"docker-compose", "down"})
if !ok { if !ok {
log.Error("停止harbor失败: %s", log1) log.Error("停止harbor失败: %s", log1)
return return
@@ -372,14 +421,30 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
harborCmd.AddCommand(harborInstallCmd, harborUninstallCmd, harborStartCmd, harborStopCmd) harborCmd.AddCommand(harborInstallCmd, harborUninstallCmd, harborStartCmd, harborStopCmd)
} }
// checkHarborIsRunning 检查harbor是否运行 // checkHarborIsRunning 检查harbor是否运行 如果存在Exit 或者 Restarting 则表示有错误!
func checkHarborIsRunning() bool { func checkHarborIsRunning() bool {
ok, log2 := op.HardCodeCommandExecutor("docker ps -a | grep goharbor/ | grep -E 'Exit|Restarting' | wc -l") _, resultLog := op.PipeLineCommandExecutor([][]string{
if !ok { {
log.Error("查看harbor容器是否存在失败: %s", log2) "docker",
return false "ps",
} "-a",
if strings.TrimSpace(log2[0]) != "0" { },
{
"grep",
"goharbor/",
},
{
"grep",
"-E",
"'Exit|Restarting'",
},
{
"wc",
"-l",
},
})
if strings.TrimSpace(resultLog[0]) != "0" {
log.Error("harbor启动失败! 请检查日志!") log.Error("harbor启动失败! 请检查日志!")
return false return false
} }
@@ -605,7 +670,21 @@ func addDockerSubcommands(cmd *cobra.Command) {
// apt-cache madison docker-ce | grep 20.10.20 | awk '{print$3}' // apt-cache madison docker-ce | grep 20.10.20 | awk '{print$3}'
// get by method // get by method
ok, log4 := op.HardCodeCommandExecutor("apt-cache madison docker-ce | grep 20.10.20 | awk '{print$3}'") ok, log4 := op.PipeLineCommandExecutor([][]string{
{
"apt-cache",
"madison",
"docker-ce",
},
{
"grep",
"20.10.20",
},
{
"awk",
"'{print$3}'",
},
})
if ok && log4 != nil && len(log4) > 0 { if ok && log4 != nil && len(log4) > 0 {
specificDockerVersion = strings.TrimSpace(log4[0]) specificDockerVersion = strings.TrimSpace(log4[0])
fmt.Println("get docker version from online => " + specificDockerVersion) fmt.Println("get docker version from online => " + specificDockerVersion)
@@ -706,14 +785,7 @@ func addDockerSubcommands(cmd *cobra.Command) {
} }
// 解压文件 // 解压文件
utils.UnzipFile(dockerLocalInstallPath, "/root/wdd") utils.UnzipFile(dockerLocalInstallPath, "/root/wdd/")
// 安装docker
err := utils.MoveFolerToAnother("/root/wdd/docker", "/usr/bin")
if err != nil {
log.Error("Failed to move Docker binaries: %s", err.Error())
return
}
// 设置权限 // 设置权限
dockerBinList := []string{ dockerBinList := []string{
@@ -728,11 +800,22 @@ func addDockerSubcommands(cmd *cobra.Command) {
"containerd-shim-runc-v2", "containerd-shim-runc-v2",
} }
// 删除旧的docker 二进制文件
for _, bin := range dockerBinList { for _, bin := range dockerBinList {
ok, resultLog := op.HardCodeCommandExecutor("chmod 777 /usr/bin/" + bin) utils.RemoveFile("/usr/bin/" + bin)
}
// 安装docker
err := utils.MoveFolerToAnother("/root/wdd/docker/", "/usr/bin")
if err != nil {
log.Error("Failed to move Docker binaries: %s", err.Error())
return
}
for _, bin := range dockerBinList {
ok, resultLog := op.SingleLineCommandExecutor([]string{"chmod", "777", "/usr/bin/" + bin})
if !ok { if !ok {
log.Error("Failed to set permissions for Docker binaries: %s", resultLog) log.Error("Failed to set permissions for Docker binaries: %s", resultLog)
return
} }
} }
@@ -910,7 +993,7 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
op.SingleLineCommandExecutor(linkCmd) op.SingleLineCommandExecutor(linkCmd)
// 验证安装 // 验证安装
verifyCmd := []string{"docker-compose", "--version"} verifyCmd := []string{"/usr/local/bin/docker-compose", "version"}
ok, resultLog = op.SingleLineCommandExecutor(verifyCmd) ok, resultLog = op.SingleLineCommandExecutor(verifyCmd)
if !ok { if !ok {
log.Error("Docker Compose 安装验证失败: %s", resultLog) log.Error("Docker Compose 安装验证失败: %s", resultLog)
@@ -950,7 +1033,7 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
} }
// move file to /usr/local/bin // move file to /usr/local/bin
err := utils.MoveFileToAnother(dockerComposeLocalInstallPath, "/usr/local/bin") err := utils.MoveFileToAnother(dockerComposeLocalInstallPath, "/usr/local/bin/docker-compose")
if err != nil { if err != nil {
log.Error("Failed to move Docker Compose binaries: %s", err.Error()) log.Error("Failed to move Docker Compose binaries: %s", err.Error())
return return
@@ -964,6 +1047,18 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
return return
} }
// 创建软链接
linkCmd := []string{"ln", "-sf", "/usr/local/bin/docker-compose", "/usr/bin/docker-compose"}
op.SingleLineCommandExecutor(linkCmd)
// 验证安装
verifyCmd := []string{"/usr/local/bin/docker-compose", "version"}
ok, resultLog = op.SingleLineCommandExecutor(verifyCmd)
if !ok {
log.Error("Docker Compose 安装验证失败: %s", resultLog)
return
}
log.Info("Docker Compose installed successfully from local file!") log.Info("Docker Compose installed successfully from local file!")
}, },
} }

View File

@@ -288,7 +288,7 @@ func installXray() {
os.Chmod("/tmp/install-release.sh", 0777) os.Chmod("/tmp/install-release.sh", 0777)
// 执行安装脚本 // 执行安装脚本
ok, resultLog := op.HardCodeCommandExecutor("/bin/bash /tmp/install-release.sh -u root install") ok, resultLog := op.SingleLineCommandExecutor([]string{"/bin/bash", "/tmp/install-release.sh", "-u", "root", "install"})
if !ok { if !ok {
log.Error("Install Xray failed ! error is %s", resultLog) log.Error("Install Xray failed ! error is %s", resultLog)
return return

View File

@@ -38,7 +38,6 @@ func addZshSubcommands(cmd *cobra.Command) {
// 清理残留 // 清理残留
utils.RemoveFolderComplete("/root/.oh-my-zsh") utils.RemoveFolderComplete("/root/.oh-my-zsh")
utils.RemoveFolderComplete("/root/wdd/zsh-install.sh") utils.RemoveFolderComplete("/root/wdd/zsh-install.sh")
utils.RemoveFolderComplete("/root/wdd/oh-my-zsh-plugins-list.txt")
ohMyZshInstallUrl := "" ohMyZshInstallUrl := ""
@@ -61,28 +60,43 @@ func addZshSubcommands(cmd *cobra.Command) {
}) })
installZshCommand := []string{ installZshCommand := []string{
"/bin/bash", "sh",
"-c",
"/root/wdd/zsh-install.sh", "/root/wdd/zsh-install.sh",
} }
if config.ConfigCache.Agent.Network.Internet == 7 { if config.ConfigCache.Agent.Network.Internet == 7 {
installZshCommand = append(installZshCommand, op.SingleLineCommandExecutor([]string{
"export",
"REMOTE=https://gitea.107421.xyz/zeaslity/ohmyzsh.git", "REMOTE=https://gitea.107421.xyz/zeaslity/ohmyzsh.git",
) })
} }
op.SingleLineCommandExecutor(installZshCommand) // 执行 oh-my-zsh 安装命令
op.RealTimeCommandExecutor(installZshCommand)
log.Info("安装zsh完成, 开始安装插件!") log.Info("安装zsh完成, 开始安装插件!")
pluginsHardCodeUrl := []string{ pluginsHardCodeUrl := [][]string{
"/usr/bin/git clone https://gitee.com/wangl-cc/zsh-autosuggestions.git /root/.oh-my-zsh/plugins/zsh-autosuggestions", {
"/usr/bin/git clone https://gitee.com/xiaoqqya/zsh-syntax-highlighting.git /root/.oh-my-zsh/plugins/zsh-syntax-highlighting", "https://gitee.com/wangl-cc/zsh-autosuggestions.git",
"/root/.oh-my-zsh/plugins/zsh-autosuggestions",
},
{
"https://gitee.com/xiaoqqya/zsh-syntax-highlighting.git",
"/root/.oh-my-zsh/plugins/zsh-syntax-highlighting",
},
} }
pluginsHardCodeOutsideUrl := []string{ pluginsHardCodeOutsideUrl := [][]string{
"/usr/bin/git clone https://github.com/zsh-users/zsh-autosuggestions /root/.oh-my-zsh/plugins/zsh-autosuggestions", {
"/usr/bin/git clone https://github.com/zsh-users/zsh-syntax-highlighting.git /root/.oh-my-zsh/plugins/zsh-syntax-highlighting", "https://github.com/zsh-users/zsh-autosuggestions",
"/root/.oh-my-zsh/plugins/zsh-autosuggestions",
},
{
"https://github.com/zsh-users/zsh-syntax-highlighting.git",
"/root/.oh-my-zsh/plugins/zsh-syntax-highlighting",
},
} }
pluginsListUrl := []string{ pluginsListUrl := []string{
@@ -91,26 +105,17 @@ func addZshSubcommands(cmd *cobra.Command) {
"https://gitea.107421.xyz/zeaslity/ohmyzsh/src/branch/master/plugins/themes/themes.plugin.zsh", "https://gitea.107421.xyz/zeaslity/ohmyzsh/src/branch/master/plugins/themes/themes.plugin.zsh",
} }
if config.ConfigCache.Agent.Network.Internet == 7 {
log.Info("使用gitea镜像安装插件!")
pluginsHardCodeUrl = append(pluginsHardCodeUrl,
"wget -c -i https://b2.107421.xyz/oh-my-zsh-plugins-list.txt -P /root/.oh-my-zsh/plugins/",
)
} else {
log.Info("使用github安装插件!")
}
// 下载插件 // 下载插件
if config.ConfigCache.Agent.Network.Internet == 7 { if config.ConfigCache.Agent.Network.Internet == 7 {
// 执行硬编码命令, 安装插件 // 执行硬编码命令, 安装插件
for _, command := range pluginsHardCodeUrl { for _, command := range pluginsHardCodeUrl {
op.HardCodeCommandExecutor(command) op.SingleLineCommandExecutor([]string{"git", "clone", command[0], command[1]})
} }
} else { } else {
// 执行硬编码命令, 安装插件 国外 // 执行硬编码命令, 安装插件 国外
for _, command := range pluginsHardCodeOutsideUrl { for _, command := range pluginsHardCodeOutsideUrl {
op.HardCodeCommandExecutor(command) op.SingleLineCommandExecutor([]string{"git", "clone", command[0], command[1]})
} }
} }
// 下载插件 // 下载插件

View File

@@ -43,7 +43,7 @@ LimitNOFILE=infinity
TasksMax=infinity TasksMax=infinity
OOMScoreAdjust=-999 OOMScoreAdjust=-999
[installPrefix] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
` `
@@ -57,7 +57,7 @@ SocketMode=0660
SocketUser=root SocketUser=root
SocketGroup=docker SocketGroup=docker
[installPrefix] [Install]
WantedBy=sockets.target WantedBy=sockets.target
` `
@@ -107,7 +107,7 @@ Delegate=yes
KillMode=process KillMode=process
OOMScoreAdjust=-500 OOMScoreAdjust=-500
[installPrefix] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
` `

View File

@@ -155,6 +155,7 @@ func judgeCanConnectInternet() int {
func (p PublicInfo) GetPublicInfo() PublicInfo { func (p PublicInfo) GetPublicInfo() PublicInfo {
// 无法联网, 假信息 // 无法联网, 假信息
fakePublicInfo := PublicInfo{ fakePublicInfo := PublicInfo{
IPv4: "1.1.1.1", IPv4: "1.1.1.1",
IPv6: "2400::1", IPv6: "2400::1",

View File

@@ -15,6 +15,7 @@ try {
Write-Host "4. Exec the command ..." -ForegroundColor Blue Write-Host "4. Exec the command ..." -ForegroundColor Blue
Write-Host "" Write-Host ""
Write-Host "" Write-Host ""
ssh root@192.168.35.71 "chmod +x agent-wdd_linux_amd64 && ./agent-wdd_linux_amd64 help" ssh root@192.168.35.71 "chmod +x agent-wdd_linux_amd64 && ./agent-wdd_linux_amd64 help"
Write-Host "" Write-Host ""

View File

@@ -5,6 +5,7 @@ import (
"bufio" "bufio"
"bytes" "bytes"
"fmt" "fmt"
"io"
"os/exec" "os/exec"
"strings" "strings"
) )
@@ -17,12 +18,12 @@ import (
// []string - 合并后的标准输出和标准错误内容(按行分割) // []string - 合并后的标准输出和标准错误内容(按行分割)
func SingleLineCommandExecutor(singleLineCommand []string) (ok bool, resultLog []string) { func SingleLineCommandExecutor(singleLineCommand []string) (ok bool, resultLog []string) {
log.Info("[Excutor] - start => %v", singleLineCommand)
if len(singleLineCommand) == 0 { if len(singleLineCommand) == 0 {
return false, nil return false, nil
} }
log.Info("start => %v", strings.Join(singleLineCommand, " "))
// 创建命令实例 // 创建命令实例
cmd := exec.Command(singleLineCommand[0], singleLineCommand[1:]...) cmd := exec.Command(singleLineCommand[0], singleLineCommand[1:]...)
@@ -79,13 +80,21 @@ func PipeLineCommandExecutor(pipeLineCommand [][]string) (ok bool, resultLog []s
return false, nil return false, nil
} }
// 转换为 管道命令的字符串格式
// [][]string{{"ps", "aux"}, {"grep", "nginx"}, {"wc", "-l"}} 转换为 ps aux | grep nginx | wc -l
pipeLineCommandStr := ""
// 预检所有子命令 // 预检所有子命令
for _, cmd := range pipeLineCommand { for _, cmd := range pipeLineCommand {
if len(cmd) == 0 { if len(cmd) == 0 {
return false, nil return false, nil
} }
pipeLineCommandStr += fmt.Sprintf("%s | ", strings.Join(cmd, " "))
} }
pipeLineCommandStr = strings.TrimSuffix(pipeLineCommandStr, " | ")
log.Info("start => %v", pipeLineCommandStr)
// 创建命令组 // 创建命令组
cmds := make([]*exec.Cmd, len(pipeLineCommand)) cmds := make([]*exec.Cmd, len(pipeLineCommand))
for i, args := range pipeLineCommand { for i, args := range pipeLineCommand {
@@ -161,37 +170,46 @@ func PipeLineCommandExecutor(pipeLineCommand [][]string) (ok bool, resultLog []s
return success, output return success, output
} }
// HardCodeCommandExecutor 执行硬编码命令,返回执行结果和输出内容 // RealTimeCommandExecutor 执行命令,需要实时打印输出执行命令的日志,并返回执行结果和输出内容
// hardCodeCommand: 硬编码命令,如 "echo hello" // realTimeCommand: 实时命令,如 "docker load -i /root/wdd/harbor/harbor-offline-installer-v2.10.1.tgz"
// 返回值: // 返回值:
// //
// bool - 命令是否执行成功true为成功false为失败 // bool - 命令是否执行成功true为成功false为失败
// []string - 合并后的标准输出和标准错误内容(按行分割) // []string - 合并后的标准输出和标准错误内容(按行分割)
func HardCodeCommandExecutor(hardCodeCommand string) (ok bool, resultLog []string) { func RealTimeCommandExecutor(realTimeCommand []string) (ok bool, resultLog []string) {
if len(realTimeCommand) == 0 {
log.Info("[HardCodeCommandExecutor] - start => %v", hardCodeCommand)
if hardCodeCommand == "" {
return false, nil return false, nil
} }
// 执行命令 log.Info("start real time command => %v", strings.Join(realTimeCommand, " "))
cmd := exec.Command(hardCodeCommand)
// 执行命令并获取错误信息 cmd := exec.Command(realTimeCommand[0], realTimeCommand[1:]...)
err := cmd.Run()
stdout, err := cmd.StdoutPipe()
if err != nil { if err != nil {
return false, []string{"HardCodeCommandExecutor " + hardCodeCommand + " 执行命令失败", err.Error()} return false, []string{err.Error()}
} }
// 合并输出结果 stderr, err := cmd.StderrPipe()
stdoutBuf := bytes.Buffer{} if err != nil {
stderrBuf := bytes.Buffer{} return false, []string{err.Error()}
cmd.Stdout = &stdoutBuf }
cmd.Stderr = &stderrBuf
output := mergeOutput(&stdoutBuf, &stderrBuf) if err := cmd.Start(); err != nil {
return false, []string{err.Error()}
}
output := make([]string, 0)
scanner := bufio.NewScanner(io.MultiReader(stdout, stderr))
for scanner.Scan() {
line := scanner.Text()
fmt.Println(line)
output = append(output, line)
}
if err := cmd.Wait(); err != nil {
return false, append(output, err.Error())
}
return true, output return true, output
} }

View File

@@ -21,12 +21,12 @@ Set-Location "C:\Users\wddsh\Documents\IdeaProjects\ProjectOctopus\agent-wdd\tes
# 删除上面存在的旧的内容 # 删除上面存在的旧的内容
mc.exe rm oracle-seoul-2/seoul-2/agent-wdd_linux_amd64 mc.exe rm oracle-seoul-2/seoul-2/agent-wdd_linux_amd64
mc.exe rm oracle-seoul-2/seoul-2/test-shell.sh # mc.exe rm oracle-seoul-2/seoul-2/test-shell.sh
# 上传文件 # 上传文件
mc.exe cp C:\Users\wddsh\Documents\IdeaProjects\ProjectOctopus\agent-wdd\build\agent-wdd_linux_amd64 oracle-seoul-2/seoul-2/ mc.exe cp C:\Users\wddsh\Documents\IdeaProjects\ProjectOctopus\agent-wdd\build\agent-wdd_linux_amd64 oracle-seoul-2/seoul-2/
mc.exe cp C:\Users\wddsh\Documents\IdeaProjects\ProjectOctopus\agent-wdd\test\test-shell.sh oracle-seoul-2/seoul-2/ # mc.exe cp C:\Users\wddsh\Documents\IdeaProjects\ProjectOctopus\agent-wdd\test\test-shell.sh oracle-seoul-2/seoul-2/

View File

@@ -8,17 +8,15 @@ wget https://pan.107421.xyz/d/oracle-seoul-2/agent-wdd_linux_amd64 -qO /usr/loca
chmod +x /usr/local/bin/agent-wdd chmod +x /usr/local/bin/agent-wdd
wget https://pan.107421.xyz/d/oracle-seoul-2/test-shell.sh -qO /usr/local/bin/test-shell.sh
chmod +x /usr/local/bin/test-shell.sh
/usr/local/bin/agent-wdd info all /usr/local/bin/agent-wdd info all
cat /usr/local/etc/wdd/agent-wdd-config.yaml cat /usr/local/etc/wdd/agent-wdd-config.yaml
/usr/local/bin/agent-wdd base firewall /usr/local/bin/agent-wdd base firewall
/usr/local/bin/agent-wdd base ssh config
/usr/local/bin/agent-wdd base ssh key
/usr/local/bin/agent-wdd proxy xray install /usr/local/bin/agent-wdd proxy xray install
/usr/local/bin/agent-wdd proxy vmess 22443 /usr/local/bin/agent-wdd proxy vmess 22443
@@ -26,8 +24,6 @@ cat /usr/local/etc/wdd/agent-wdd-config.yaml
#bash /usr/local/bin/test-shell.sh #bash /usr/local/bin/test-shell.sh
/usr/local/bin/agent-wdd info network /usr/local/bin/agent-wdd info network
/usr/local/bin/agent-wdd info cpu /usr/local/bin/agent-wdd info cpu
/usr/local/bin/agent-wdd info mem /usr/local/bin/agent-wdd info mem
@@ -36,14 +32,14 @@ cat /usr/local/etc/wdd/agent-wdd-config.yaml
/usr/local/bin/agent-wdd base docker local /usr/local/bin/agent-wdd base docker local
/usr/local/bin/agent-wdd info os /usr/local/bin/agent-wdd info os
/usr/local/bin/agent-wdd base docker online /usr/local/bin/agent-wdd base docker online
/usr/local/bin/agent-wdd info os /usr/local/bin/agent-wdd info os
/usr/local/bin/agent-wdd zsh /usr/local/bin/agent-wdd zsh
/usr/local/bin/agent-wdd base tools /usr/local/bin/agent-wdd base tools
@@ -64,3 +60,8 @@ cat /usr/local/etc/wdd/agent-wdd-config.yaml
/usr/local/bin/agent-wdd proxy vmess 22443 /usr/local/bin/agent-wdd proxy vmess 22443
wget https://pan.107421.xyz/d/oracle-seoul-2/test-shell.sh -qO /usr/local/bin/test-shell.sh
chmod +x /usr/local/bin/test-shell.sh

View File

@@ -10,8 +10,10 @@ import (
"path/filepath" "path/filepath"
) )
// UnzipFile 解压文件, 支持ziptar.gz // UnzipFile 解压文件, 支持zip tgz tar.gz tar
func UnzipFile(zipFile string, targetFolder string) { func UnzipFile(zipFile string, targetFolder string) {
log.Info("解压文件: %s, 到: %s", zipFile, targetFolder)
// 检查文件扩展名以确定解压缩方法 // 检查文件扩展名以确定解压缩方法
fileExt := filepath.Ext(zipFile) fileExt := filepath.Ext(zipFile)
switch fileExt { switch fileExt {