【云原生实战】DevOps基础与实战项目

简介: 【云原生实战】DevOps基础与实战项目

DevOps简介

DevOps 是一系列做法和工具,可以使 IT 和软件开发团队之间的流程实现自动化。其中,随着敏捷软件开发日趋流行,持续集成 (CI) 和持续交付 (CD) 已经成为该领域一个理想的解决方案。在CI/CD 工作流中,每次集成都通过自动化构建来验证,包括编码、发布和测试,从而帮助开发者提前发现集成错误,团队也可以快速、安全、可靠地将内部软件交付到生产环境。

a487f6b7e07248ba890ac3c78df7a6f9.pngimage.png

DevOps落地

概述

1、内置的Agent

选择 Jenkins Agent

项目架构

f60311af8d1a4741bc03ffed829be499.png

yygh-parent
|---common                                  //通用模块
|---hospital-manage                         //医院后台        [9999]   
|---model                                   //数据模型
|---server-gateway                          //网关            [80]
|---service                                 //微服务层
|-------service-cmn                         //公共服务        [8202]
|-------service-hosp                        //医院数据服务    [8201]
|-------service-order                       //预约下单服务    [8206]
|-------service-oss                         //对象存储服务    [8205]
|-------service-sms                         //短信服务        [8204]
|-------service-statistics                  //统计服务        [8208]
|-------service-task                        //定时服务        [8207]
|-------service-user                        //会员服务        [8203]
====================================================================
yygh-admin                                  //医院管理后台    [9528]
yygh-site                                   //挂号平台        [3000]

中间件

中间件

集群内地址

外部访问地址

Nacos

his-nacos.his:8848


http://139.198.165.238:30349/
nacos

MySQL

his-mysql.his:3306


139.198.165.238
:31840

Redis

his-redis.his:6379

139.198.165.238:31968

Sentinel

his-redis.his:6379


http://139.198.165.238:31523/

MongoDB

mongodb.his:27017

139.198.165.238:32693

RabbitMQ

rabbitm-yp1tx4-rabbitmq.his:5672

139.198.165.238:30375

ElasticSearch

his-es.his:9200


139.198.165.238
:31300

devops实战

1、项目地址

https://gitee.com/leifengyang/yygh-parent


https://gitee.com/leifengyang/yygh-admin


https://gitee.com/leifengyang/yygh-site


2、项目默认规则

每个微服务项目,在生产环境时,会自动获取 微服务名-prod.yml 作为自己的核心配置文件

每个微服务项目,在生产环境时,默认都是使用 8080 端口

3、生产与开发配置隔离

4、deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: service-cart
  name: service-cart
  namespace: his   #一定要写名称空间
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: service-cart
  strategy:
    rollingUpdate:
      maxSurge: 50%
      maxUnavailable: 50%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: service-cart
    spec:
      imagePullSecrets:
        - name: aliyun-docker-hub  #提前在项目下配置访问阿里云的账号密码
      containers:
        - image: $REGISTRY/$ALIYUNHUB_NAMESPACE/service-cart
          readinessProbe:
            httpGet:
              path: /actuator/health
              port: 8080
            timeoutSeconds: 10
            failureThreshold: 30
            periodSeconds: 5
          imagePullPolicy: Always
          name: app
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: 300m
              memory: 600Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: service-cart
  name: service-cart
  namespace: his
spec:
  ports:
    - name: http
      port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: service-cart
  sessionAffinity: None
  type: ClusterIP

4、devops实战

1、修改maven让他从阿里云下载镜像

使用admin登陆ks

进入集群管理

进入配置中心

找到配置

ks-devops-agent

修改这个配置。加入maven阿里云镜像加速地址

2、缓存机制

已经下载过的jar包,下一次流水线的启动,不会重复下载


3、部署到k8s集群

给每一个微服务准备一个 deploy.yaml(k8s的部署配置文件)

执行以下步骤

image.png

传入 deploy.yaml 的位置就能部署

kubectl apply -f xxxx

一定在项目里面(his,不是流水线项目),找到配置--密钥,配置一个阿里云的访问账号密码

 1a856086a9894d9ab89e982cafcd640c.png

4、前端项目

1、yygh-admin

npm run build 会生成dist目录,放到nginx的html下,即可运行

2、yygh-site

npm install --registry=https://registry.npm.taobao.org 安装项目依赖

npm run build 对项目打包,

打包完成后把 .nuxt ,static, nuxt.config.js, package.json 这四个关键文件复制到 node 环境。先npm install再使用npm run start 即可运行

3、思考

admin的镜像和site的镜像大小为何差距那么大?

如何对镜像进行瘦身?

5、webhook

1、每个项目,都有流水线文件

2、每次修改完项目,手动点击运行

3、希望,每次修改完项目,代码推送,流水线能自动运行

写代码并提交------> gitee ---------> 给指定的地方发请求(webhook)------> kubesphere平台感知到 -----> 自动启动流水线继续运行


http://139.198.165.238:30880/devops_webhook/git/?url=https://gitee.com/leifengyang/yygh-admin.git


相关文章
|
16天前
|
运维 监控 Devops
如何快速提升项目质量?云效DevOps的秘诀在这里!
【6月更文挑战第11天】云效DevOps是一款集成代码管理、自动化构建、持续集成/部署、测试管理和监控的云原生研发平台,它通过打破开发、测试和运维间的障碍,提升软件质量和效率。关键功能包括:代码质量检查,自动化构建与测试(如Git、Maven集成),持续部署与监控,以及团队协作工具。通过这些,云效DevOps促进高效协同,确保项目质量快速提升。
|
16天前
|
运维 监控 Devops
为什么你的项目总是延期?云效DevOps来拯救你!
【6月更文挑战第11天】项目延期由繁琐流程、沟通不畅和需求变更引起。云效DevOps通过自动化流程、智能化监控和协同工作解决这些问题。自动化流水线减少错误,提升效率;智能监控快速响应故障;协同工具优化资源管理。示例代码展示自动化构建过程。采用云效DevOps,能有效避免项目延期,增强企业竞争力。
|
1月前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
92 8
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
129 1
|
1月前
|
Kubernetes Cloud Native Devops
【阿里云云原生专栏】DevOps与云原生的融合:阿里云CI/CD流水线最佳实践
【5月更文挑战第23天】阿里云融合DevOps与云原生技术,提供高效CI/CD解决方案,助力企业提升研发效能。通过云效平台,集成代码管理、构建服务、容器服务、持续部署及监控日志组件,实现自动化研发流程。案例中,应用从GitHub构建到Kubernetes部署,全程无缝衔接。借助阿里云,企业能快速构建适应云原生的DevOps体系,以应对复杂需求和提升市场竞争力。
82 1
|
1月前
|
存储 弹性计算 Kubernetes
【阿里云云原生专栏】深入解析阿里云Kubernetes服务ACK:企业级容器编排实战
【5月更文挑战第20天】阿里云ACK是高性能的Kubernetes服务,基于开源Kubernetes并融合VPC、SLB等云资源。它提供强大的集群管理、无缝兼容Kubernetes API、弹性伸缩、安全隔离及监控日志功能。用户可通过控制台或kubectl轻松创建和部署应用,如Nginx。此外,ACK支持自动扩缩容、服务发现、负载均衡和持久化存储。多重安全保障和集成监控使其成为企业云原生环境的理想选择。
233 3
|
1月前
|
监控 安全 Cloud Native
【云原生之Docker实战】使用Docker部署Ward服务器监控工具
【5月更文挑战第11天】使用Docker部署Ward服务器监控工具
69 4
|
1月前
|
Cloud Native 安全 Linux
【云原生之Docker实战】使用Docker部署mBlog微博系统
【5月更文挑战第10天】使用Docker部署mBlog微博系统
36 2
|
1月前
|
运维 Cloud Native 持续交付
【阿里云云原生专栏】从零到一搭建云原生应用:阿里云云原生应用平台实战教程
【5月更文挑战第24天】本文档是一份阿里云云原生应用平台的实战教程,介绍了如何从零开始搭建云原生应用。内容涵盖云原生应用的特点(容器化、微服务、CI/CD和自动化运维)以及阿里云提供的服务,如容器服务、服务网格和CI/CD工具。教程详细讲解了创建容器集群、编写Dockerfile、构建镜像、部署应用、配置服务网格和设置CI/CD的步骤。通过本文,读者将学会利用阿里云平台开发和管理云原生应用。
303 0
|
1月前
|
人工智能 运维 Devops
云效流水线智能排查功能实测:AI赋能DevOps,精准定位与高效修复实战评测
云效持续集成流水线Flow是阿里云提供的企业级CICD工具,免费且注册即用。它具备高可用性、免运维、深度集成阿里云服务、多样化发布策略及丰富的企业级特性。产品亮点包括智能排查功能,能快速定位问题,提高问题解决效率。云效Flow支持一站式DevOps流程,适用于各种规模的企业,助力实现高效、高质量的软件交付。现在即可免费试用,体验智能CICD解决方案。

热门文章

最新文章