kuboard-v3 ingress 实现k8s服务暴露

安装k8s 参考  Kubernetes 环境搭建—containerd/calico_calico kubernetes-优快云博客

Rocky Linux release 9.6 (Blue Onyx)

安装kuboard-v3

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

安装ingress 类 输入名称确定

出现安装后提示 外部的80请求代理到集群任意k8s集群节点的30684 端口

创建负载、服务 后开如服务暴露  nginx-dp nginx-svc

---
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    k8s.kuboard.cn/displayName: ng-web
  labels:
    k8s.kuboard.cn/layer: web
    k8s.kuboard.cn/name: ng-dp
  name: ng-dp
  namespace: eco
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s.kuboard.cn/layer: web
      k8s.kuboard.cn/name: ng-dp
  template:
    spec:
      containers:
        - image: docker.1ms.run/nginx
          imagePullPolicy: IfNotPresent
          name: nginx

---
apiVersion: v1
kind: Service
metadata:
  name: ng-svc
  namespace: eco
spec:
  ports:
    - name: as3te8
      port: 8123
      protocol: TCP
      targetPort: 80
  selector:
    k8s.kuboard.cn/layer: web
    k8s.kuboard.cn/name: ng-dp
  type: ClusterIP

kubectl apply -f nginx.yaml

1、服务暴露ingress配置 http://test.abc.com 

2、服务暴露ingress配置 http://demo.abc.com

 在k8s集群外内网的任意一台进行访问测试

curl -H 'Host:test.abc.com' http://192.168.1.91:30684 

在k8s-infra机器上安装nginx 实现对k8s集群内部的访问

upstream k8s_backend {
   server 192.168.1.91:30684;
   server 192.168.1.92:30684;
   server 192.168.1.93:30684;
}

server {
   listen 80;
   server_name _;

   location / {
     proxy_set_header Host 'test.abc.com';
     proxy_pass http://k8s_backend;
   }

   location /demo {
    rewrite /demo/(.*) /$1 break;
    proxy_set_header Host 'demo.abc.com';
    proxy_pass http://k8s_backend;
   }
}

访问测试

ingress配置结束

<think>我们正在处理一个系统级部署任务,需要为多个微服务和组件在华为云上编写自动化部署脚本,并评估高级运维所需时间。根据用户需求,部署对象包括: - MIG微服务 - 群营销微服务 - Elasticsearch - 橙杏反馈项目 - 其他组件(kuboard, nginx, jenkins等) 目标:实现容器配置、服务注册、日志监控等功能。 ### 步骤分解 1. **环境准备**:华为云资源初始化(VPC、EIP、CCE集群等) 2. **基础组件部署**:kuboardK8s管理面板)、nginx(入口网关)、jenkins(CI/CD流水线) 3. **中间件部署**:Elasticsearch(日志存储)、Kibana(日志可视化) 4. **微服务部署**:MIG微服务、群营销微服务、橙杏反馈项目 5. **辅助功能实现**:服务注册(对接华为云ServiceStage)、日志监控(ELK集成) ### 1. 自动化部署脚本设计 采用分层架构设计: ```mermaid graph TB A[华为云基础设施] --> B[基础组件层] B --> C[中间件层] C --> D[微服务层] D --> E[监控告警层] ``` #### 脚本模块划分 | 模块 | 技术栈 | 核心功能 | |---------------------|--------------------------------|--------------------------------------------------------------------------| | **基础设施层** | Terraform + Huawei Cloud SDK | 自动创建VPC、子网、安全组、CCE集群[^1] | | **基础组件层** | Helm Charts + Shell | 部署kuboard/nginx/jenkins,并配置服务暴露(LoadBalancer) | | **中间件层** | StatefulSet + ConfigMap | 部署Elasticsearch集群(3节点)+ Kibana,挂载云硬盘 | | **微服务层** | Kustomize + Deployment | 容器化微服务(Docker镜像),注入环境变量,挂载配置文件 | | **辅助功能层** | Shell/Python | 服务注册(调用ServiceStage API),日志采集(Filebeat Sidecar) | #### 关键脚本示例:Elasticsearch部署(helm_values.yaml) ```yaml # 华为云ES集群配置(参考引用[1]优化) clusterName: "prod-es-cluster" nodeGroup: master: replicas: 3 resources: requests: memory: "4Gi" cpu: "2" data: replicas: 3 resources: requests: memory: "8Gi" cpu: "4" volumeClaimTemplate: accessModes: [ "ReadWriteOnce" ] storageClassName: "csi-disk" resources: requests: storage: "100Gi" ``` #### 日志监控集成(Filebeat配置片段) ```yaml # filebeat-configmap.yaml filebeat.inputs: - type: container paths: - /var/log/containers/*.log output.elasticsearch: hosts: ["prod-es-cluster:9200"] username: "${ES_USERNAME}" password: "${ES_PASSWORD}" ``` ### 2. 时间评估(高级运维) 采用并行任务分解法: ```mermaid gantt title 华为云自动化部署时间评估(高级运维) dateFormat YYYY-MM-DD section 基础设施 VPC/CCE集群创建 :done, des1, 2024-01-01, 1d EIP绑定 : des2, after des1, 0.5d section 基础组件 kuboard部署 : des3, after des1, 0.5d nginx部署 : des4, after des1, 0.5d jenkins部署 : des5, after des1, 1d section 中间件 ES集群部署 : des6, after des1, 2d Kibana集成 : des7, after des6, 0.5d section 微服务 MIG微服务部署 : des8, after des3, 1d 群营销微服务部署 : des9, after des3, 1d 橙杏反馈部署 : des10, after des3, 1d section 辅助功能 服务注册 : des11, after des8, 0.5d 日志监控配置 : des12, after des6, 1d ``` **关键路径耗时**: - 最长路径:基础设施(1d) → ES集群(2d) → 日志监控(1d) = **4天** -服务部署依赖基础组件(kuboard),耗时1d,但可与ES并行 **总工时计算**: $$T_{\text{总}} = T_{\text{基础}} + \max(T_{\text{中间件}}, T_{\text{微服务}}) + T_{\text{辅助}}$$ - $T_{\text{基础}}$ = 1.5天(VPC+CCE+EIP) - $T_{\text{中间件}}$ = 2.5天(ES+Kibana) - $T_{\text{微服务}}$ = 1天(并行部署) - $T_{\text{辅助}}$ = 1天(服务注册+日志监控) $$T_{\text{总}} = 1.5 + \max(2.5, 1) + 1 = 1.5 + 2.5 + 1 = \text{5天}$$ > ⚠️ **风险缓冲**:增加1天用于调试(华为云API调用限流、网络策略配置等) > **最终评估**:**5-6天**(高级运维1人) ### 3. 效率优化建议 1. **模板化部署**:使用Terraform Module复用华为云资源模板,节省 **0.5天** 2. **预置镜像仓库**:将Docker镜像提前推送至SWR(华为云容器镜像服务),节省 **0.5天** 3. **自动化测试**:集成Postman测试集,自动验证接口,节省 **1天** 手动验证时间 ### 4. 部署验证清单 | 项目 | 验证点 | 方法 | |---------------------|--------------------------------|--------------------------| | 网络连通性 | 微服务→ES集群通信 | `curl -XGET es:9200` | | 服务注册 | ServiceStage显示服务状态 | 控制台查看 | | 日志监控 | Kibana检索微服务日志 | 关键词搜索 | | 高可用 | 宕机一个ES节点 | 观察日志自动恢复 | --- ### §§相关问题§§ 1. 如何在华为云上实现 **跨AZ高可用** 的Elasticsearch集群部署? 2. 如何通过 **Jenkins Pipeline** 实现服务的蓝绿发布? 3. 在ServiceStage中如何进行 **微服务灰度发布** 的配置? 4. 如何优化 **Filebeat配置** 以减少日志采集对K8s集群的性能影响? 5. Terraform管理华为云资源时如何避免 **状态文件冲突**?</think>### 华为云多组件自动化部署方案及时间评估 #### **1. 部署架构设计** ```mermaid graph LR A[华为云CCE集群] --> B[基础组件层] B --> C[中间件层] C --> D[业务微服务层] D --> E[监控体系] B --> F[kuboard] B --> G[Jenkins] B --> H[Nginx] C --> I[Elasticsearch] C --> J[Kibana] D --> K[MIG微服务] D --> L[群营销微服务] D --> M[橙杏反馈] ``` #### **2. 自动化部署脚本模块** **(完整脚本见附录)** ##### **2.1 基础组件部署(Helm实现)** ```bash # kuboard部署(v3.0) helm install kuboard kuboard-stable/kuboard \ --namespace kube-system \ --set image.repository=registry.cn-hangzhou.aliyuncs.com/kuboard-images/kuboard-v3 \ --set service.type=LoadBalancer # Jenkins流水线 helm install jenkins jenkins/jenkins \ --set controller.serviceType=LoadBalancer \ --set controller.installPlugins="kubernetes:1.31.1 workflow-aggregator:2.6" ``` ##### **2.2 Elasticsearch集群部署(StatefulSet)** ```yaml # es-statefulset.yaml(关键配置) spec: serviceName: elasticsearch replicas: 3 volumeClaimTemplates: - metadata: name: data spec: storageClassName: csi-disk accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 100Gi containers: - name: elasticsearch env: - name: ES_JAVA_OPTS value: "-Xms4g -Xmx4g" # 华为云ECS内存优化配置 - name: discovery.seed_hosts value: "es-0.elasticsearch,es-1.elasticsearch" ``` ##### **2.3服务部署(Kustomize模板)** ```bash # MIG微服务部署(含服务注册) kustomize build overlays/prod | kubectl apply -f - # 橙杏反馈项目健康检查 readinessProbe: httpGet: path: /actuator/health port: 8080 initialDelaySeconds: 20 ``` ##### **2.4 日志监控集成** ```bash # Filebeat DaemonSet配置(华为云LTS对接) output.elasticsearch: hosts: ["http://elasticsearch:9200"] username: "$${ELASTIC_USERNAME}" password: "$${ELASTIC_PASSWORD}" # 通过华为云密钥管理注入 ``` #### **3. 时间评估(高级运维)** **采用并行任务分解法:** $$T_{\text{总}} = T_{\text{基础}} + \max(T_{\text{中间件}}, T_{\text{微服务}}) + T_{\text{监控}} + T_{\text{缓冲}}$$ | 模块 | 内容 | 耗时 | 并行性 | |---------------------|-------------------------------|--------|--------| | **基础组件层** | CCE集群初始化 + kuboard/Jenkins | 1.5天 | 可并行 | | **中间件层** | ES集群 + Kibana + 数据卷挂载 | 2天 | 关键路径 | | **微服务层** | 3个微服务容器化部署 | 1.5天 | 可并行 | | **监控体系** | 日志采集 + 告警规则配置 | 1天 | 依赖中间件 | | **缓冲时间** | 华为云API调试/网络策略调整 | 1天 | - | **总耗时**: $$T_{\text{总}} = 1.5 + \max(2, 1.5) + 1 + 1 = 1.5 + 2 + 1 + 1 = \text{5.5天}$$ **实际范围**:5-7天(按华为云API调用频率限制预留风险时间) > ✅ **效率优化点**: > - 使用华为云 **SWR镜像仓库** 预缓存镜像,节省 **0.5天** > - 采用 **Terraform模块化** 管理基础设施,节省 **1天**[^1] #### **4. 部署验证清单** | 项目 | 验证方法 | 预期结果 | |---------------------|------------------------------|-----------------------| | 服务注册 | `curl Nginx入口IP/service-registry` | 返回所有微服务状态 | | ES集群健康 | `GET /_cluster/health` | status=green | | 日志链路 | Kibana检索微服务日志 | 实时显示业务日志 | | 流水线触发 | Jenkins构建MIG微服务 | 自动部署到CCE集群 | #### **附录:核心部署脚本结构** ``` ├── terraform/ # 华为云资源编排 │ ├── main.tf # CCE集群/VPC定义 │ └── variables.tf # 华为云AK/SK配置 ├── helm-charts/ # 组件包 │ ├── kuboard/ │ ├── jenkins/ │ └── nginx-ingress/ ├── kustomize/ # 微服务部署 │ ├── base/ # 通用配置 │ └── overlays/prod # 生产环境定制 └── monitoring/ # 监控配置 ├── filebeat-daemonset.yaml └── alert-rules.yaml # 华为云告警规则 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒云客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值