From a35e4176f93994cafc2115314b6e0271b9702775 Mon Sep 17 00:00:00 2001 From: xianyanglin <42458688+xianyanglin@users.noreply.github.com> Date: Tue, 6 Jun 2023 19:44:13 +0800 Subject: [PATCH] feat: Add the merge switch of gportal and api-plane components (#59) Signed-off-by: xianyanglin --- .../hango-gateway/hango-gateway-deploy.yaml | 110 +++++++----------- .../hango-gateway/hango-gateway-service.yaml | 4 +- .../charts/hango-gateway/values.yaml | 2 +- install/install.sh | 39 +++++-- 4 files changed, 76 insertions(+), 79 deletions(-) diff --git a/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-deploy.yaml b/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-deploy.yaml index 58c1e1d..556fcda 100644 --- a/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-deploy.yaml +++ b/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-deploy.yaml @@ -3,26 +3,45 @@ apiVersion: apps/v1 kind: Deployment metadata: labels: - app: hango-api-plane - name: hango-api-plane + portal-container: hango-portal + api-plane-container: hango-api-plane + name: hango-portal namespace: {{ .Values.namespace }} spec: replicas: {{ .Values.replicas }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 selector: matchLabels: - app: hango-api-plane + portal-container: hango-portal + api-plane-container: hango-api-plane template: metadata: labels: - app: hango-api-plane + portal-container: hango-portal + api-plane-container: hango-api-plane spec: - serviceAccount: hango-apiplane containers: - - env: + - name: hango-portal + env: + - name: NCE_PORT + value: "11113" + image: "{{ .Values.images.hango_portal_image }}" + resources: + requests: + memory: 800Mi + limits: + memory: 1024Mi + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /usr/local/tomcat/logs + name: portal-log + - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/gdashboard-jdbc.properties + subPath: gdashboard-jdbc.properties + name: hango-portal-config + - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/data.sql + subPath: data.sql + name: hango-portal-config + - name: api-plane + env: - name: NCE_PORT value: "10880" - name: NCE_JAVA_OPTS @@ -33,11 +52,10 @@ spec: memory: 800Mi limits: memory: 1024Mi - name: tomcat imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /usr/local/tomcat/logs - name: log + name: plane-log - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/k8s.yaml name: k8s-conf subPath: k8s.yaml @@ -50,9 +68,20 @@ spec: - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/template/plugin/route name: hango-plugin volumes: + - hostPath: + path: {{ .Values.data_dir }}/log/hango-portal + name: portal-log + - configMap: + name: hango-portal-config + items: + - key: gdashboard-jdbc.properties + path: gdashboard-jdbc.properties + - key: data.sql + path: data.sql + name: hango-portal-config - hostPath: path: {{ .Values.data_dir }}/log/hango-api-plane - name: log + name: plane-log - configMap: defaultMode: 420 items: @@ -80,60 +109,7 @@ spec: name: hango-plugin restartPolicy: Always dnsPolicy: ClusterFirstWithHostNet ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - nce-app: hango-portal - name: hango-portal - namespace: {{ .Values.namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: hango-portal - template: - metadata: - labels: - app: hango-portal - spec: - containers: - - name: tomcat - env: - - name: NCE_PORT - value: "11113" - image: "{{ .Values.images.hango_portal_image }}" - resources: - requests: - memory: 800Mi - limits: - memory: 1024Mi - imagePullPolicy: IfNotPresent - volumeMounts: - - mountPath: /usr/local/tomcat/logs - name: log - - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/gdashboard-jdbc.properties - subPath: gdashboard-jdbc.properties - name: hango-portal-config - - mountPath: /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/data.sql - subPath: data.sql - name: hango-portal-config - volumes: - - hostPath: - path: {{ .Values.data_dir }}/log/hango-portal - name: log - - configMap: - name: hango-portal-config - items: - - key: gdashboard-jdbc.properties - path: gdashboard-jdbc.properties - - key: data.sql - path: data.sql - name: hango-portal-config - restartPolicy: Always - dnsPolicy: ClusterFirstWithHostNet - + serviceAccount: hango-apiplane --- apiVersion: apps/v1 kind: Deployment diff --git a/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-service.yaml b/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-service.yaml index 99977b0..cc00ffc 100644 --- a/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-service.yaml +++ b/install/helm/hango-gateway/charts/hango-gateway/templates/base/hango-gateway/hango-gateway-service.yaml @@ -13,7 +13,7 @@ spec: targetPort: 10880 name: http selector: - app: hango-api-plane + api-plane-container: hango-api-plane --- apiVersion: v1 @@ -29,7 +29,7 @@ spec: - port: 80 targetPort: 11113 selector: - app: hango-portal + portal-container: hango-portal --- apiVersion: v1 diff --git a/install/helm/hango-gateway/charts/hango-gateway/values.yaml b/install/helm/hango-gateway/charts/hango-gateway/values.yaml index 13ae830..752063c 100644 --- a/install/helm/hango-gateway/charts/hango-gateway/values.yaml +++ b/install/helm/hango-gateway/charts/hango-gateway/values.yaml @@ -49,4 +49,4 @@ registry: ## 刷新zookeeper服务缓存的时间周期,默认15s,格式为: [正整数]s refresh_period: 15s ## 注册中心实例地址;格式:整体以英文单引号包裹,单个地址以英文双引号包裹,多个地址用英文逗号分隔 - address: '"zookeeper.apigw-demo.svc.cluster.local:2181"' \ No newline at end of file + address: '"zookeeper.apigw-demo.svc.cluster.local:2181"' diff --git a/install/install.sh b/install/install.sh index 6f5bbc7..fff7815 100644 --- a/install/install.sh +++ b/install/install.sh @@ -70,15 +70,36 @@ function helm_install_for_hango_component() { } function verify_hango_install() { - while true - do - sleep 10s - pod_number=`kubectl -n $HANGO_NAMESPACE get pods | grep Running | wc -l` - if [[ $pod_number -ge 7 ]]; then - echo "hango pod running" - break - fi - done + sleep 10 + while true; do + # 获取命名空间中所有的 Deployment 名称 + DEPLOYMENTS="$(kubectl get deploy -n ${HANGO_NAMESPACE} -o jsonpath='{.items[*].metadata.name}')" + + # 遍历所有的 Deployment + for DEPLOYMENT_NAME in ${DEPLOYMENTS}; do + # 获取 Deployment 的当前状态 + DEPLOYMENT_STATUS="$(kubectl get deployment ${DEPLOYMENT_NAME} -n ${HANGO_NAMESPACE} -o jsonpath='{.status}')" + + # 解析 Deployment 可用 Pod 的数量和总数 + AVAILABLE="$(echo ${DEPLOYMENT_STATUS} | jq -r '.availableReplicas')" + DESIRED="$(echo ${DEPLOYMENT_STATUS} | jq -r '.replicas')" + + # 判断 Deployment 是否就绪 + if [[ ${AVAILABLE} -eq ${DESIRED} ]]; then + echo "Deployment ${DEPLOYMENT_NAME} is ready." + else + echo "Deployment ${DEPLOYMENT_NAME} is not ready yet. Waiting..." + # 如果有任何一个 Deployment 不就绪,则退出循环 + continue 2 + fi + done + + # 所有的 Deployment 都就绪,退出循环 + echo "All deployments are ready." + break + + sleep 5 + done } function init_for_namespaces() {