DevOpsBox 安装说明

01. 安装并配置 Virutal Box

Virtual Box 是免费的虚拟机工具,可以在Windows/MacOS/Linux三种主流操作系统上运行,对于搭建开发测试和实验环境非常方便。

以下安装过程同时适用于三种环境

下载地址 下载后直接安装,使用所有默认设置即可。

安装完成后,打开【主机网络管理器】检查网络设置

DevOpsBox 安装说明 - 图1

默认情况下,VirutalBox应该已经创建了 192.168.99.1/24 网段的主机网络

DevOpsBox 安装说明 - 图2

02. 安装并配置 Docker for Desktop

Docker for Desktop 是 Docker 提供的官方工具,支持在Windows和MacOS上使用 docker 和 docker compose 工具,同时会利用操作系统的虚拟化能力提供流畅的容器运行环境。

下载地址 下载后直接安装。

注意:如果你使用的是Windows环境,请先按照官方文档安装WSL2,然后使用WSL2的方式在Windows上安装Docker Desktop,你会在安装向导中看到如下选项:确保你勾选了 Install requried Windows components for WSL 2

DevOpsBox 安装说明 - 图3

安装完成后打开Docker Desktop设置应该看到如下设置,确保 Use WSL 2 based engine 已经正确勾选

DevOpsBox 安装说明 - 图4

说明:WSL2 是 Windows Subsystem for Linux 第二代系统的简称,可以允许我们在Windows上运行Linux操作系统内核,因为大多数Docker容器是为Linux操作系统设计的,所以我们需要一个可以运行Linux操作系统的环境。老版本的Docker Desktop使用Windows Hyper-V虚拟机运行Linux VM的方式来支持这个场景,但是会造成不必要的系统复杂度,而且也会造成我们无法使用Virutal Box (因为Hyper-V和VirutalBox并不兼容)。为了保持我们的DevOpsBox环境在Windows和MacOS上的一致性(因为MacOS上无法运行Hyper-V),因此我们在Windows上推荐使用WSL2的方式运行Docker Desktop以便我们可以同时使用Virutal Box。

安装完成后可以在控制栏上看到 Docker 图标

DevOpsBox 安装说明 - 图5

验证Docker环境工作正常

打开任何命令行工具,运行以下命令,如果能够看到类似的输出,则表示docker工作正常

  1. docker run hello-world
  2. Unable to find image 'hello-world:latest' locally
  3. latest: Pulling from library/hello-world
  4. b8dfde127a29: Pull complete
  5. Digest: sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c
  6. Status: Downloaded newer image for hello-world:latest
  7. Hello from Docker!
  8. This message shows that your installation appears to be working correctly.
  9. To generate this message, Docker took the following steps:
  10. 1. The Docker client contacted the Docker daemon.
  11. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
  12. (amd64)
  13. 3. The Docker daemon created a new container from that image which runs the
  14. executable that produces the output you are currently reading.
  15. 4. The Docker daemon streamed that output to the Docker client, which sent it
  16. to your terminal.
  17. To try something more ambitious, you can run an Ubuntu container with:
  18. $ docker run -it ubuntu bash
  19. Share images, automate workflows, and more with a free Docker ID:
  20. https://hub.docker.com/
  21. For more examples and ideas, visit:
  22. https://docs.docker.com/get-started/

运行以下命令确认你的工具版本不低于以下输出

  1. docker --version
  2. Docker version 20.10.6, build 370c289
  3. docker-compose --version
  4. docker-compose version 1.29.1, build c34c88b2

03. 安装并配置阿里云版MiniKube

Minikube是谷歌为Kubernetes开发者提供的本地单机版k8s环境,可以用于开发测试和实验操作,阿里云为国内的开发者提供了适配国内网络环境的版本,相关链接如下:

安装说明

创建minikube示例脚本

按照以上安装说明完成安装后就可以使用以下脚本创建你的minikube实例了,第一次运行这个脚本会比较慢,因为minikube需要从阿里云上下载minikube所需要的虚拟机iso文件以及k8s本身的组件资源。如果运行过程中出错,请参考以下【错误处理】部分尝试修复。

  1. # MacOS环境命令和输出如下
  2. minikube start --driver=virtualbox

DevOpsBox 安装说明 - 图6

  1. # Windows环境命令和输出如下
  2. # 注意此处添加了 --no-vtx-check 选项,如果不加入这个参数有时候Windows上会报无法识别虚拟化系统错误
  3. minikube start --driver=virtualbox --no-vtx-check

DevOpsBox 安装说明 - 图7

验证minikube工作正常

执行以下命令,如果看到类似的输出,则表示minikube工作正常。

  1. ## 以下命令列出minikube上运行的所有系统pod的运行状态
  2. ### 以下命令实际上使用了k8s的官方客户端工具kubectl,如果你本地没有安装这个工具,minikube会首先为你下载安装这个工具
  3. ### 以下命令执行成功后你可以直接使用 kubectl get po -A 进行操作
  4. kubectl get po -A
  5. NAMESPACE NAME READY STATUS RESTARTS AGE
  6. kube-system coredns-54d67798b7-krqgh 1/1 Running 0 17m
  7. kube-system etcd-minikube 1/1 Running 0 17m
  8. kube-system kube-apiserver-minikube 1/1 Running 0 17m
  9. kube-system kube-controller-manager-minikube 1/1 Running 0 17m
  10. kube-system kube-proxy-h5pk6 1/1 Running 0 17m
  11. kube-system kube-scheduler-minikube 1/1 Running 0 17m
  12. kube-system storage-provisioner 1/1 Running 2 17m
  13. ### 直接使用kubectl操作minikube集群
  14. kubectl get pods -n kube-system

04. 在 Virutal Box 上安装Linux虚拟机

DevOpsBox是我们用来运行DevOps核心工具链的虚拟机环境,我们在这个虚拟机上适配了DevOps工具链中的核心工具,帮助大家在自己的本地环境进行各种DevOps实践的操作。

04.1 创建Virutal Box虚拟机

首先从Boathouse资源网盘下载 ubuntu安装iso 文件

DevOpsBox 安装说明 - 图8

在VirtualBox中创建虚拟机,命名为 DevOpsBox, 选择 Linux 和 Ubuntu (64-bit)

DevOpsBox 安装说明 - 图9

内存至少给予 4096MB,如果你的本地环境有更多资源,可以多分配一些

DevOpsBox 安装说明 - 图10

选择 现在创建虚拟磁盘

DevOpsBox 安装说明 - 图11

磁盘选择默认的 VDI磁盘,并使用 动态分配 方式

DevOpsBox 安装说明 - 图12

DevOpsBox 安装说明 - 图13

调整磁盘大小为 20G(你可以根据需要调整,一般实验用途20G够用了)

DevOpsBox 安装说明 - 图14

创建好的虚拟状态如下,点击 设置按钮 进入设置

在 存储 菜单中添加我们下载的iso文件作为安装介质

DevOpsBox 安装说明 - 图15

在 网络 菜单中添加 网卡2 设置,指定到前面 minikube 所使用的 主机网络上,此处是 vboxnet0 (你的环境可能有所不同,请打开minikube虚拟机设置,找到minikube的网卡2设置,使用同样的配置即可)

DevOpsBox 安装说明 - 图16

注意:

  1. 这个设置非常重要,让DevOpsBox和MiniKube使用同样的主机网络可以确保两台虚拟机处于同一个子网,以便进行通讯,同时,因为主机网络与宿主机是相通的,我们就可以在宿主机(你的开发机)上使用各种工具访问我们的环境。
  2. 如果你使用的是windows上的virutal box环境,系统本身只有一个网段为192.168.56.0/24的主机网络网卡,通过安装minikube会自动创建另外一块192.168.99.0/24的网卡,我们后续需要使用的是这块主机网络网卡。

04.2 启动虚拟机完成操作系统安装

使用默认语言设置

DevOpsBox 安装说明 - 图17

选择 Install Ubuntu Server

DevOpsBox 安装说明 - 图18

选择 Englsh - English 作为安装语言

DevOpsBox 安装说明 - 图19

选择 Hong Kong 作为安装位置

DevOpsBox 安装说明 - 图20

选择 No 不要检测键盘设置

DevOpsBox 安装说明 - 图21

使用 English (US) 作为键盘设置

DevOpsBox 安装说明 - 图22

选择 第一个网卡 作为默认网卡,这里是 enp0s3

注意:这里选择的网卡是在设置中指定的 网卡1,网卡1 默认使用NAT网络可以访问外网,这样可以保证我们的虚拟机访问从互联网

DevOpsBox 安装说明 - 图23

将虚拟机命名为 DevOpsBox

DevOpsBox 安装说明 - 图24

使用 localadmin 作为第一个用户的用户名(你也可以使用其他用户名,但是Boathouse实验手册中会统一使用localadmin作为默认的管理员用户)

DevOpsBox 安装说明 - 图25

设置 localadmin 用户的密码为 devops@2021 (你可以设置为其他密码,但是Boathouse实验手册中会统一使用这个默认秘密啊)

DevOpsBox 安装说明 - 图26

选择 No 不要加密home目录

DevOpsBox 安装说明 - 图27

虚拟机会开始检测你的时区,使用默认设置即可

DevOpsBox 安装说明 - 图28

选择 Guided - use entire disk 作为分区设置

DevOpsBox 安装说明 - 图29

选择默认磁盘后,在确认页中选择 Yes

DevOpsBox 安装说明 - 图30

安装过程启动

DevOpsBox 安装说明 - 图31

中间如果提示设置 Proxy,则留空直接选择 Continue,此时安装程序需要从网络上下载一些更新安装包

DevOpsBox 安装说明 - 图32

在系统更新设置中选择 No automatic updates 不要自动更新

DevOpsBox 安装说明 - 图33

在软件包选择中,选择

  • standard system utilities 标准系统工具
  • OpenSSH Server SSH服务器

DevOpsBox 安装说明 - 图34

等待系统完成安装工作

DevOpsBox 安装说明 - 图35

选择 Yes 安装 GRUB boot loader 作为主引导

DevOpsBox 安装说明 - 图36

安装完成,点击 continue

DevOpsBox 安装说明 - 图37

04.3 配置虚拟机的主机网络ip地址并使用ssh登录虚拟机

在VirutalBox控制台中使用我们的默认账号登录

  • 用户名:localadmin
  • 密码:devops@2021

DevOpsBox 安装说明 - 图38

现在我们需要激活我们增加的 网卡2,并且让这块网卡使用前面配置的主机网络子网 (192.168.99.1/24网段),在虚拟机中键入如下命令:

  1. ## 查询操作系统上可用网卡状态
  2. ifconfig -a

系统反馈如下,以下列出的 enp0s8 就是我们所添加的 网卡2,我们需要为这块网卡绑定搞一个固定的IP地址,以方便我们后续的操作 DevOpsBox 安装说明 - 图39

  1. ## 编辑操作系统网络配置文件
  2. sudo vim /etc/network/interfaces

在vim编辑器中按 i 开始编辑,并在文件底部添加如下内容,编辑完成以后按 ESC 键推出编辑模式,按 :wq! 保存文件退出

  1. auto enp0s8
  2. iface enp0s8 inet static
  3. address 192.168.99.102
  4. netmask 255.255.255.0

DevOpsBox 安装说明 - 图40

使用以下命令从新启动网络系统

  1. sudo systemctl restart networking

如果以上命令正常退出,没有任何错误则表示网络配置成功。

现在你就可以从你的宿主机上开启一个命令行,测试以下是否可以链接到自己的 DevOpsBox 虚拟机了

  1. ## 测试虚拟机IP地址可以联通
  2. ping 192.168.99.102
  3. ## 使用ssh连接虚拟机
  4. ssh localadmin@192.168.99.102

DevOpsBox 安装说明 - 图41

现在你就可以直接通过宿主机的终端操作我们的 DevOpsBox 环境了,后续的操作都可以通过这种方式完成。

04.4 完成虚拟机基础环境安装

使用以下脚本配置虚拟机基础环境,包括

  • 使用华为开源镜像站作为apt-get源,以便稳定安装操作系统组件
  • 安装 docker 和 docker-compose
  • 安装 jdk 和 maven
  1. ## 使用华为镜像站 https://mirrors.huaweicloud.com/
  2. ### 1. 备份配置文件
  3. sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
  4. ### 2. 修改sources.list文件,将http://archive.ubuntu.com和http://security.ubuntu.com替换成http://repo.huaweicloud.com,可以参考如下命令:
  5. sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  6. sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  7. ## 安装 docker 和 docker-compose
  8. ## 更新包管理数据库
  9. sudo apt-get update
  10. ## 安装docker
  11. sudo apt install docker.io
  12. sudo usermod -a -G docker {你的虚拟机用户名}
  13. ## 安装docker-compose
  14. ### docker-compose 官方安装地址(如果此地址安装不成功,请使用以下国内镜像地址)
  15. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  16. ## docker-compose 国内镜像
  17. sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  18. sudo chmod +x /usr/local/bin/docker-compose
  19. ## 启动 docker 服务
  20. sudo systemctl daemon-reload
  21. sudo systemctl restart docker
  22. ## 设置 docker 用户权限
  23. sudo groupadd docker
  24. sudo gpasswd -a $USER docker
  25. newgrp docker
  26. ## 验证 docker 和 docker-compose 工作正常
  27. ### 确保你收到的输出版本不低于以下版本号
  28. docker --version
  29. ## 应该输出以下版本信息
  30. ## Docker version 18.09.7, build 2d0083d
  31. docker-compose --version
  32. ## 应该输出以下版本信息
  33. ## docker-compose version 1.29.2, build 4667896b
  34. ## 安装 jdk 和 maven
  35. sudo apt-get install openjdk-8-jdk -y
  36. sudo apt install maven -y
  37. ## 验证 java 和 maven 工作正常
  38. ### 请确保你收到的输出版本不低于以下版本
  39. java -version
  40. ## 应该输出以下版本信息
  41. ## openjdk version "1.8.0_292"
  42. ## OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
  43. ## OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
  44. mvn --version
  45. ## 应该输出以下版本信息
  46. ## Apache Maven 3.3.9
  47. ## Maven home: /usr/share/maven
  48. ## Java version: 1.8.0_292, vendor: Private Build
  49. ## Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
  50. ## Default locale: en_HK, platform encoding: UTF-8
  51. ## OS name: "linux", version: "4.4.0-186-generic", arch: "amd64", family: "unix"

至此,我们的 DevOpsBox 基础环境准备完毕

05. 配置 Visual Studio Code 通过 SSH Remote 访问 DevOpsBox 环境

Visual Studio Code 提供了一个SSH Remote插件,可以允许我们通过SSH连接到远程环境,方便我们编辑远程环境中的文件以及运行终端。

Visual Studio Code 官方安装地址 https://code.visualstudio.com/

安装好以后,找到 Remote Development 插件并将这个插件安装到你的vscode中,这个插件包括了

  • Remote WSL
  • Remote Container
  • Remote SSH

以上三个分别可以帮助我们通过vscode远程操作 WSL Container (容器) 和 SSH 远程服务器。

DevOpsBox 安装说明 - 图42

Remote Development 插件安装好之后,可以通过左侧的菜单进入,并添加我们的 DevOpsBox 环境

DevOpsBox 安装说明 - 图43

添加好之后点击 连接 按钮,选择 Linux 作为目标操作系统类型

DevOpsBox 安装说明 - 图44

输入密码后,vscode会自动在目标环境中配置所需要的软件环境,现在我们就可以直接在宿主机上通过vscode操作 DevOpsBox 虚拟机了,如下图

  • 左侧的文件浏览器中显示的是远程的 DevOpsBox 虚拟机中的文件系统,你可以复制粘贴,或者拖拽的方式将宿主机的文件直接上传远程服务器
  • 底部的 Terminal 则可以直接在 DevOpsBox 上运行命令

我们后续的操作都默认使用vscode remote的方式进行操作。

DevOpsBox 安装说明 - 图45

05. 在 DevOpsBox 上启动 Boathouse DevOpsBox 工具链环境

首先从Boathouse资源网盘下载 jenkins plugin 的打包文件文件

DevOpsBox 安装说明 - 图46

按照以上步骤通过vscode连接到 DevOpsBox 并通过 Terminal 执行以下动作获取 DevOpsBox 部署配置文件

  1. git clone https://github.com/idcf-boat-house/boat-house-devopsbox.git

DevOpsBox 安装说明 - 图47

在 devopsbox/jenkins 目录中创建一个jenkins_home目录,将解压好的 jenkins plugin 资源文件放入到 devopsbox/jenkins/jenkins_home 目录内。

复制需要一会儿,请注意底部状态栏上的进度提示

DevOpsBox 安装说明 - 图48

复制完成后,运行以下命令即可启动 DevOpsBox 环境,注意docker-compose都需要先进入各个工具的子目录后执行

  1. ## 启动 gitea
  2. cd devopsbox/gitea
  3. docker-compose up -d
  4. cd ../../
  5. ## 启动 wekan
  6. cd devopsbox/wekan
  7. docker-compose up -d
  8. cd ../../
  9. ## 启动 jenkins
  10. ### 首先修正jenkins_home目录权限
  11. cd devopsbox/jenkins
  12. sudo chown -R localadmin:localadmin jenkins_home
  13. docker-compose up -d
  14. ## 启动 SonarQube
  15. ### 首先配置一些系统参数
  16. #### 查看最大虚拟内存
  17. sysctl -a|grep vm.max_map_count
  18. #### 如果小于 262144,请执行如下命令
  19. sudo sysctl -w vm.max_map_count=262144
  20. cd devopsbox/sonarqube
  21. docker-compose up -d

以上启动完成后,通过以下地址就可以访问环境

Wekan 首页 - 可以自行注册用户,第一用户自动成为系统管理员,建议使用统一的localadmin账号

DevOpsBox 安装说明 - 图49

Gitea 首页 - 注意修改 localhost 为 192.168.99.102,将 HTTP 服务端口从 3000 修改为 8082, 并使用 localadmin 作为管理员账号

DevOpsBox 安装说明 - 图50

Jenkins 初始化首页,需要通过以下命令获取初始密钥,并输入到界面中

  1. cd devopsbox/jenkins/
  2. cat jenkins_home/secrets/initialAdminPassword

输入以上命令输出的密钥解锁 Jenkins

DevOpsBox 安装说明 - 图51

选择安装推荐的插件(因为我们已经复制了插件到jenkins_home目录,这个步骤会非常快)

DevOpsBox 安装说明 - 图52

使用 DevOpsBox 标准管理员账号 lcoaladmin 创建 Jenkins管理员账号

DevOpsBox 安装说明 - 图53

完成配置,Jenkins重启后进入登录界面,配置完成。

DevOpsBox 安装说明 - 图54

SonarQube启动后,进入后使用 admin/admin 登录并修改默认密码为我们的标准密码

DevOpsBox 安装说明 - 图55

至此,我们的DevOpsBox配置完毕,大家现在已经有一个可以运行大多数DevOps实践的工具链环境。

06. 停止 DevOpsBox 环境

我们后续的实验中会利用DevOpsBox做一些实验操作,为了避免损毁以上环境或者造成问题,可以通过以下命令停止DevOpsBox中的工具链运行。需要的时候再启动。

  1. ## 停止 gitea
  2. cd devopsbox/gitea
  3. docker-compose down
  4. ## 停止 wekan
  5. cd devopsbox/wekan
  6. docker-compose down
  7. ## 停止 jenkins
  8. cd devopsbox/jenkins
  9. docker-compose down