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安装

bash 复制代码
https://git-scm.com/ (傻瓜式安装)

GitLab安装

bash 复制代码
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脚本
groovy 复制代码
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地址/项目名/镜像名:版本 并推送:

bash 复制代码
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 文件。

相关推荐
illus10n_CHOU37 分钟前
【项目总结】易到家家政服务平台 —— 派单调度(7)
java·spring boot·后端·学习·设计模式
siy23331 小时前
VS2022中cmath.h头文件功能介绍
c语言·笔记·学习
向上的车轮2 小时前
OpenEuler学习笔记(二十三):在OpenEuler上部署开源MES系统
linux·笔记·学习·开源
一行12 小时前
docker配置国内源
运维·docker·容器
XS303 小时前
PyQt学习记录01——加法计算器
学习·pyqt
不爱学英文的码字机器3 小时前
[操作系统] 进程程序替换
linux·运维·服务器
茕离3 小时前
b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)
人工智能·笔记·学习
不会编程的程序員4 小时前
微软编程之C#如何学习,C#学习路线:从入门到精通
学习·microsoft·c#
鸵鸟爸爸4 小时前
Terraform 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案
云原生·devops·terraform