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

DevOps 学习笔记(一) | DevOps 简介及环境搭建

1. 环境配置

本次实验需要三台服务器CI/CD 服务器应用服务器Harbor 服务器

DevOps 步骤

  1. 程序员将代码 push 到代码仓库
  2. Jenkins 根据触发条件拉取代码到CI/CD 服务器
  3. Jenkins 使用 Maven 将代码 build 成 jar 包
  4. Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml 文件制作自定义镜像
  5. Jenkins 将自定义镜像推送到Harbor 服务器
  6. Jenkins 调用应用服务器拉取自定义镜像
  7. 应用服务器运行镜像

在这里插入图片描述

CI/CD服务器需要安装:

  • JDK
  • Jenkins
  • Git
  • Maven
  • Docker

应用服务器需要安装:

  • Docker or Kubernetes 集群

Harbor服务器需要安装

  • Docker
  • Harbor 镜像仓库

2. 配置 CI/CD 服务器

2.1 安装 Jenkins

Jenkins 安装官方文档

CI/CD服务器环境为 CentOS 7,使用 yum 方式进行安装

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

如果机器没有安装 Java 的话需要使用以下命令安装 Java 11

yum install -y fontconfig java-11-openjdk

之后使用命令安装 Jenkins

yum install -y jenkins

下载安装后执行下面命令启动 Jenkins

systemctl start jenkins

使用下面命令获取初始密码

cat /var/lib/jenkins/secrets/initialAdminPassword

浏览器中输入 localhost:8080 打开 Jenkins 管理界面输入初始密码,选择安装推荐的插件,创建新的用户,之后开始使用 Jenkins。

2.2 配置 Jenkins

2.2.1 配置远程服务器

在插件管理页面安装好 Publish Over SSH 插件

进入全局配置界面,配置好远程服务器的信息,Remote Directory 是把文件传送到远程服务器的位置

在这里插入图片描述

此时点击 Test Configuration 可能会报错

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to change to remote directory [/usr/local/test]]

在远程服务器上创建 /usr/local/test 目录即可

2.2.2 配置 Maven

在插件管理页面安装好 Maven Integration 插件

CI/CD服务器上下载并安装 Maven,步骤如下

  1. 访问 Maven 官方网站

  2. 复制红框里 Maven 的下载链接

    在这里插入图片描述

  3. 使用命令下载解压并将其移动到对应目录下

    wget https://dlcdn.apache.org/maven/maven-3/3.9.0/binaries/apache-maven-3.9.0-bin.tar.gz
    tar -xvf  apache-maven-3.9.0-bin.tar.gz
    mv -f apache-maven-3.9.0 /usr/local/
    

安装 Maven 成功后,打开 Jenkins,进入 Global Tool Configuration 页面,按照下图进行配置并保存,没有报错则 Maven 配置成功
图片.png

3. 配置应用服务器

3.1 安装 Docker

可访问 CentOS环境下使用Docker 一文进行安装 Docker 的操作

3.2 安装 Docker-compose

curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

4. 配置 Harbor 服务器

进入 Harbor releases page,下载 Harbor offline 压缩文件 harbor-offline-installer-v2.5.6.tgz 并将其传到Harbor 服务器上并解压到指定位置

tar -zxvf harbor-offline-installer-v2.5.6.tgz -C /usr/local

对 Harbor 进行配置

cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml

将 hostname 一行内容改为Harbor 服务器的 IP 地址,并将 https 内容全部注释掉

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: 192.168.80.128# https related config
# https:# https port for harbor, default is 443# port: 443# The path of cert and key files for nginx# certificate: /your/certificate/path# private_key: /your/private/key/path

安装 Harbor

./install.sh

如果启动时报错

[Step 5]: starting Harbor ...
[+] Running 0/1⠿ Network harbor_harbor  Error                                                                                                     0.1s
failed to create network harbor_harbor: Error response from daemon: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-79dd02c9a738 -j RETURN: iptables: No chain/target/match by that name.(exit status 1))

只需要重启 Docker 后再次执行安装即可

systemctl restart docker
./install.sh

访问Harbor 服务器的 80 端口,默认账号为 admin,密码为 Harbor12345

相关文章:

DevOps 学习笔记(一) | DevOps 简介及环境搭建

1. 环境配置 本次实验需要三台服务器CI/CD 服务器、应用服务器和Harbor 服务器 DevOps 步骤 程序员将代码 push 到代码仓库Jenkins 根据触发条件拉取代码到CI/CD 服务器Jenkins 使用 Maven 将代码 build 成 jar 包Jenkins 使用 jar 包通过 Dockerfile 和 docker-compose.yml…...

日志收集笔记(Filebeat 日志收集、Logstash 日志过滤)

1 FileBeat Filebeat 是使用 Golang 实现的轻量型日志采集器,也是 Elasticsearch stack 里面的一员。本质上是一个 agent ,可以安装在各个节点上,根据配置读取对应位置的日志,并上报到相应的地方去。 1.1 FileBeat 安装与使用 …...

字节二面,原来是我对自动化测试的理解太浅薄了..

如何使用Python实现自动化测试 如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢?资深测试架构师沉醉将告诉你如何落地自动kan化测试,本次话题主要…...

2023雅虎邮箱不能注册?别急,这份教程教你成功注册雅虎邮箱

这几年,跨境电商的迅猛发展,越来越多人加入这片蓝海,跨境人拥有一个专业的邮箱账户显得尤为重要,它是商业交流和日常工作的必备工具。因此,雅虎邮箱成为了许多人的首选,全球范围内使用雅虎邮箱的人数是非常…...

Elasticsearch 自动补全 completion type

Elasticsearch 自带一种自动补全类型 completion 这种类型不在mapping文档里面有点坑。 先直接上例子。 建立 index,把我们要自动补全的字段设置为 completion 类型 或者直接设置为子类型 PUT /blogs_completion/ {"mappings": {"tech": {"properties…...

GB28181协议实现源码Android源码

一、GB28181规范 尽管在国标GB28181中并没有对“平台”进行明确的定义,但在规范中却多次提到“系统平台”、“管理平台”等词汇,在具体项目中、网络上的交流学习中,平台概念也是无处不在。笔者认为,GB28181平台就是视频联网系统中的上级平台、中间平台或下级平台,用于实现…...

HNU工训中心: 三人表决器及八人抢答器实验报告

工训中心的牛马实验 三人表决器: 实验目的 1) 辨识数字IC功能说明。 2) 测试数字集成门电路,掌握输出故障排除、使用注意事项。 3) 掌握逻辑函数搭建三人表决器。 2.实验资源 HBE硬件基础电路实验箱、万用表 74LS00与非门、74LS10 三个3输入与非门…...

split()用法注意事项

split()用法注意事项 这个要注意有些特殊的分割符,比如.,这个表示匹配任何字符,如果在split()中调用的话,会将任何字符都分隔开,比如: String[] split "se.lll".split("."); System…...

centos7配置静态网络常见问题归纳

系列相似配置与安装软件问题整理与归纳文章目录 安装pymysql库_pymysql库安装_张小鱼༒的博客-CSDN博客 解决pip更新的代码_pip更新代码_张小鱼༒的博客-CSDN博客 python当中的第三方wxPython库的安装解答_pip install wx_张小鱼༒的博客-CSDN博客 spark里面配置jdk后的编程…...

产品经理修炼指南【01】

最近看了点产品经理的书,觉得产品经理这个位置和程序员不太一样,程序员唯一考核的标准就是能不能完成工作任务、是否能完成工作代码,但是产品经理貌似不一样,就像我给刘曼说的,产品经理上可以接领导,下可以…...

NCRE计算机等级考试Python真题(十一)

第十一套试题1、以下选项对于import保留字描述错误的是:A.import可以用于导入函数库或者库中的函数B.可以使用from jieba import lcut 引入 jieba库C.使用import jieba as jb,引入函数库jieba,取别名jbD.使用import jieba 引入jieba库正确答案…...

cglib代理解析

工作原理 使用 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version></dependency>对类和接口分别进行代理 DemoService package com.fanqiechaodan.user.service;/*** author fa…...

GFD563A101 3BHE046836R0101

GFD563A101 3BHE046836R0101关于高端涂布机张力控制系统方案的介绍高端涂布机张力控制系统方案涂布机是将具有某种功效的胶&#xff0c;或者油墨类物质均匀粘连在塑料薄膜、铝箔、纺织品等表面的机械设备。本系统从放卷到收卷共采用七台变频器&#xff0c;其中收放卷采用闭环张…...

SAP 采购定价过程字段解析

下面我们针对每一个字段进行解释和用途分析 &#xff1a; 1、 步骤&#xff1a;代表了创建PO时&#xff0c;哪个条件类型放到前面&#xff0c;哪个放到后面&#xff0c;如果步骤号相同&#xff0c;那就以谁先选择出来谁就在前面。 2、 计数&#xff1a;没有任何实际意义&a…...

一篇搞懂tcp,http,socket,socket连接池之间的关系

前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼&#xff0c;然而它们之间的关系、区别及原理并不是所有人都能理解清楚&#xff0c;这篇文章就从网络协议基础开始到Socket连接池&#xff0c;一步一步解释他们之…...

【JavaSE】对象的比较

哈喽&#xff0c;大家好&#xff01;我是保护小周ღ&#xff0c;本期为大家带来的是Java中自定义类型&#xff08;对象&#xff09;的三种比较方式&#xff0c;equals 方法, Comparable 泛型接口, Comparator 泛型接口 。在日常编程中&#xff0c;我们常常会需要比较的问题&…...

Leetcode DAY 49~50:买卖股票的最佳时机 1 2 3 4

121. 买卖股票的最佳时机 1、贪心算法 class Solution { public:int maxProfit(vector<int>& prices) {//贪心int low INT_MAX;int res 0;for(int i 0; i < prices.size(); i) {low min(low, prices[i]); //左最小价格res max(res, prices[i] - low); //当前…...

Android Handler机制(二) Handler 实现原理

一. 前言 接上一篇文章为什么设计Handler , 我们来继续讲解一下Handler的实现原理, 俗话说一个好汉三个帮, 接下来一步一步引入各个主角,并说明它们在Handler机制中扮演的角色和作用. 二. Handler实现原理 首先我们先确定一个结论: 使用 Handler 是希望它被实例化在哪个线程&a…...

Elasticsearch教程(19) 详解mapping之keyword

Elasticsearch已升级&#xff0c;新版Elasticsearch keyword博客参考下面这篇【Elasticsearch教程8】Mapping字段类型之keyword_elasticsearch的keyword_亚瑟弹琴的博客-CSDN博客 1 前言 本文基于ES7.6&#xff0c;如果是之前版本&#xff0c;是有区别的。 ES支持的字段类型很…...

LeetCode算法复杂度分析(时间复杂度空间复杂度)

文章目录前言时间复杂度1.概述2.大O记法3.常见类型空间复杂度1.概述2.常见类型典型算法的复杂度分析1.递归算法2.哈希表前言 我们知道&#xff0c;研究算法的最终目的就是如何花更少的时间&#xff0c;如何占用更少的内存去完成相同的需求。 时间复杂度 1.概述 我们要计算算…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...