【云原生实战】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


相关文章
|
1月前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
1月前
|
Prometheus 监控 Cloud Native
实战经验:成功的DevOps实施案例解析
实战经验:成功的DevOps实施案例解析
62 6
|
4月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19378 30
|
3月前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
2月前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
231 3
|
3月前
|
运维 Cloud Native Devops
云原生时代的DevOps实践:自动化、持续集成与持续部署
【9月更文挑战第3天】未来,随着人工智能、大数据等技术的不断融入,DevOps实践将更加智能化和自动化。我们将看到更多创新的技术和工具涌现出来,为软件开发和运维带来更多便利和效益。同时,跨团队协作和集成也将得到进一步加强,推动软件开发向更加高效、可靠和灵活的方向发展。
|
4月前
|
Kubernetes 监控 Devops
【独家揭秘】.NET项目中的DevOps实践:从代码提交到生产部署,你不知道的那些事!
【8月更文挑战第28天】.NET 项目中的 DevOps 实践贯穿代码提交到生产部署全流程,涵盖健壮的源代码管理、GitFlow 工作流、持续集成与部署、容器化及监控日志记录。通过 Git、CI/CD 工具、Kubernetes 及日志框架的最佳实践应用,显著提升软件开发效率与质量。本文通过具体示例,助力开发者构建高效可靠的 DevOps 流程,确保项目成功交付。
95 0
|
4月前
|
Kubernetes Cloud Native Docker
云原生入门:Docker容器化部署实战
【8月更文挑战第31天】在数字化浪潮中,云原生技术成为企业转型的助推器。本文通过Docker容器化部署的实践案例,引导读者从零基础到掌握基础的云原生应用部署技能。我们将一起探索Docker的魅力,学习如何将一个应用容器化,并在云平台上运行起来,为深入云原生世界打下坚实基础。
|
4月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。