当前位置: 首页 > article >正文

DevOps的个人学习

一、DevOps介绍

软件开发最初是由两个团队组成:

  • 开发团队:负责设计和构建系统。
  • 运维团队:负责测试代码后部署上线,确保系统稳定安全运行。

这两个看似目标不同的团队需要协同完成一个软件的开发。DevOps整合了开发与运维团队,旨在提高效率并持续工作。

软件开发过程及涉及工具

  1. PLAN:制定开发计划
  2. CODE:根据计划开始编码
  3. BUILD:构建并运行代码
  4. TEST:测试代码是否存在BUG或错误
  5. DEPLOY:手动和自动化测试后,认定代码准备好部署
  6. OPERATE:运维团队将代码部署到生产环境
  7. MONITOR:监控产品
  8. INTEGRATE:将监控阶段收到的反馈发送回PLAN阶段,形成闭环

二、Code阶段工具

在code阶段,使用Git作为版本控制工具,GitLab作为远程仓库。

Git安装

https://git-scm.com/ (傻瓜式安装)

GitLab安装

yum -y install git
docker search gitlab
docker pull gitlab/gitlab-ce
version: '3.1'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://10.1.106.68:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:2224'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
docker-compose up -d
http://10.1.106.70:8929/

Jenkins入门配置

由于Jenkins需要从Git拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。

构建任务

示例Pipeline脚本
environment {
  harborUser='admin'
  harborPasswd='Harbor12345'
  harborAddress='192.168.11.102:80'
  harborRepo='repo'
}
stages {
  stage('拉取git仓库代码') {
    steps {
      checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[url: 'http://192.168.11.101:8929/root/mytest.git']]])
    }
  }
  stage('通过maven构建项目') {
    steps {
      sh '/var/jenkins_home/maven/bin/mvn clean package -DskipTests'
    }
  }
  stage('通过SonarQube做代码质量检测') {
    steps {
      sh '/var/jenkins_home/sonar-scanner/bin/sonar-scanner -Dsonar.source=./ -Dsonar.projectname=${JOB_NAME} -Dsonar.projectKey=${JOB_NAME} -Dsonar.java.binaries=./target/ -Dsonar.login=40306ae8ea69a4792df2ceb4d9d25fe8a6ab1701'
    }
  }
  // 其他stage...
}
post {
  success {
    dingtalk(
      robot: 'Jenkins-DingDing',
      type: 'MARKDOWN',
      title: "success:${JOB_NAME}",
      text: ["- 成功构建:${JOB_NAME}!\n- 版本:latest\n- 持续时间: ${currentBuild.durationString}"]
    )
  }
  failure {
    dingtalk(
      robot: 'Jenkins-DingDing',
      type: 'MARKDOWN',
      title: "fail:${JOB_NAME}",
      text: ["- 构建失败:${JOB_NAME}!\n- 版本:latest\n- 持续时间: ${currentBuild.durationString}"]
    )
  }
}

Kubernetes编排工具

10.1 Kubernetes介绍

Kubernetes是一个开源的用于管理云平台中多个主机上的容器化应用,其目标是让部署容器化的应用简单并且高效。

主要功能包括:

  • 服务发现和负载均衡
  • 存储编排
  • 自动部署和回滚
  • 自动完成装箱计算
  • 自我修复
  • 秘钥与配置管理

10.2 Kubernetes架构

Kubernetes搭建至少需要两个节点,一个Master负责管理,一个Slave搭建在工作服务器上负责分配。

组件及其功能:

  • API Server:核心通讯组件
  • controller-manager:资源调度
  • etcd:存储集群状态信息
  • scheduler:负责调度每个工作节点
  • cloud-controller-manager:负责调度其他云服务产品
  • kubelet:管理Pods上的容器
  • kube-proxy:处理其他Slave或客户端的请求
  • Pod:运行的容器

Harbor使用方式

Harbor作为镜像仓库,主要的交互方式就是将镜像上传到Harbor上,以及从Harbor上下载指定镜像。

添加用户构建项目

创建用户并设置项目为私有,对不同用户设置不同角色。

发布镜像到Harbor

修改镜像名称为 harbor地址/项目名/镜像名:版本 并推送:

docker login -u 用户名 -p 密码 Harbor地址
docker tag demo:v1.0 10.1.106.68/repository/demo:v1.0
docker push 10.1.106.68/repository/demo:v1.0

从Harbor拉取镜像

需要先配置 /etc/docker/daemon.json 文件。


http://www.kler.cn/a/539819.html

相关文章:

  • C++20新特性
  • 【SQL server】关于SQL server彻底的卸载删除。
  • MongoDB 有哪些特性
  • 2025/2/10 心得
  • 在离线的服务器上部署Python的安装库
  • go-elasticsearch创建ik索引并进行查询操作
  • matplotlib绘制三维曲面图时遇到的问题及解决方法
  • Ubuntu 20.04配置网络
  • 【东莞常平】戴尔R710服务器不开机维修分享
  • 数据库基础练习4(有关索引,视图完整解答)
  • 25/2/8 <机器人基础> 轨迹控制基本知识点,传动系统
  • 基于生成式语言模型岗位的就业指导
  • 云原生微服务
  • 深入解析 Sojson.v7 混淆加密技术(对比 Sojson.v6)
  • 免费PDF 转换成 Word、PPT、Excel 格式的工具
  • 蓝桥杯K倍区间(前缀和与差分,取模化简)
  • Ollama + AnythingLLM + Deepseek r1 实现本地知识库
  • iOS主要知识点梳理回顾-2-多线程
  • docker常用命令及案例
  • 【R语言】相关系数
  • Ubuntu禁止内核自动更新
  • 【Java八股】JVM
  • 为什么推荐使用 LabVIEW 开发
  • 日志2025.2.9
  • Java面试题整理一(反射)
  • c++初始