Skip to content

1、devops8基础环境配置(重要)(部署成功)

0-devops8基础环境配置(重要)

img

目录

[toc]

写在前面

本文档是devops8的基础实验环境文档,过程完整,已经过充分测试。

实验环境

  • 老师环境

操作系统: CentOS8 Linux, 内存资源:32GB+

本地实验机器运行工具链,通过笔记本SSH到远程机器。

img

老师使用的是centos8系统,我使用的是centos7.6系统;

另外,记得给自己虚机扩容下/目录哦,否则后续拉取镜像会报错的。

命令汇总:

bash
pvcreate/dev/sdbvgextendcentos/dev/sdblvextend-L+148G/dev/centos/rootxfs_growfs/dev/centos/rootpvcreate/dev/sdfvgextendcentos/dev/sdflvextend-L+48G/dev/centos/rootxfs_growfs/dev/centos/root
  • 自己测试机器环境

自己nuc安装了win11系统,然后装了vmwareworkstation,里面装了centos7.61810作为本次devops8测试机器。

在win11机器上是可以直接ssh devops8虚机的;

nuc cpu:8c 内存:32G

image-20240519152043967

devops8虚机给的配置:

8c,16g,暂时先给这么大的配置。

image-20240519152134520

  • 机器ip
bash
192.168.1.200

注意:测试虚机的ip一定要是这个,否则后期的argocd部署应用会很麻烦,一直要改代码。

bash
Jenkins2.415-jdk11GitLabgitlab-ce:16.2.2-ce.0Terraform1.1.7Kind0.14.0Kubernetes1.24.0(具备nfs存储)Docker-CE1.19+(Docker version23.0.3,build3e7cbfd)ArgoCD2.6.7centos77.6.1810
  • 本次软件版本:
工具名称Version描述信息
centos77.6.1810
Terraform1.1.7使用kind provider操作kind
Kind0.14.0创建Kubernetes集群工具
Docker-CE1.19+ (Docker version 23.0.3,build 3e7cbfd)容器运行时
kubectlversion.Info{Major:"1",Minor:"24",GitVersion:"v1.24.0
Kubernetes1.24.0容器云环境
ArgoCD2.6.7云原生应用持续部署工具
NFS存储系统,持久化存储容器数据
应用名称Version描述信息
Jenkins2.415-jdk11持续集成服务器
GitLabgitlab-ce:16.2.2-ce.0版本控制系统
Maven3.9.1后端项目构建工具
Gradle7.6.1后端项目构建工具
Node14.16.1前端项目构建工具
SonarQube9.9.0-community代码质量平台
Nexussonatype/nexus3:3.60.0制品库平台
  • 实验设计

img

常见问题

  • 只要是K8s集群环境即可,安装方式没有限制。版本1.24+。节点数没要求。

实验软件

一键打包本次涉及所有镜像;其它软件包;代码库;

bash
#实例代码dockersave`docker images | cut -f1 -d ' ' | sed -n '2,$p'`|gzip>k8s-images-v1.20.4.tar.gz#本次代码dockersave`docker images | cut -f1 -d ' ' | sed -n '2,$p'`|gzip>devops8-basic-test-environment.tar.gz[root@devops8 ~]#docker save `docker images | cut -f1 -d ' ' | sed -n '2,$p'`|gzip>devops8-basic-test-environment.tar.gz[root@devops8 ~]#ll -h devops8-basic-test-environment.tar.gz -rw-r--r--1rootroot1.1GMay3102:32devops8-basic-test-environment.tar.gz

image-20240531022927968

链接:https:mkdirmyiac-giteecdmyiac-giteeecho"# myiac-gitee">>README.mdgitinitgitaddREADME.mdgitcommit-m"first commit"gitbranch-Mmaingitremoteaddorigingit@gitee.com:OnlyOnexl/myiac-gitee.gitgitpush-uoriginmaingitconfig--globaluser.email"devops8@example.com"gitconfig--globaluser.name"devops8"ssh-keygencat/root/.ssh/id_rsa.pub

然后提交本次设计的所有代码:

1. 先决条件

1.0 centos7环境准备

bash
devops8192.168.1.200(可上公网)CentOSLinuxrelease7.6.1810(Core)已配置国内yum源8c,16g,20g系统盘
  • 配置基础环境:
bash
systemctlstopfirewalld&&systemctldisablefirewalldsystemctlstopNetworkManager&&systemctldisableNetworkManagersetenforce0sed-is/SELINUX=enforcing/SELINUX=disabled//etc/selinux/config

1.1 安装Terraform

bash
#上传安装包文件到机器[root@devops8 ~]#ll -h terraform_1.1.8_linux_amd64.zip -rw-rw-rw-1rootroot18MMay1908:12terraform_1.1.8_linux_amd64.zip#解压[root@devops8 ~]# unzip terraform_1.1.8_linux_amd64.zip Archive:terraform_1.1.8_linux_amd64.zipinflating:terraform[root@devops8 ~]# ll -ttotal80148……-rw-rw-rw-.1rootroot18796132May1908:12terraform_1.1.8_linux_amd64.zip-rwxr-xr-x.1rootroot63266816Apr82022terraform#移动二进制文件到PATH路径[root@devops8 ~]# mv terraform /usr/local/bin#验证[root@devops8 ~]# terraform versionTerraformv1.1.8onlinux_amd64YourversionofTerraformisoutofdate!Thelatestversionis1.8.3.Youcanupdatebydownloadingfromhttps:[root@devops8 ~]#ll -h kind-linux-amd64 -rw-rw-rw-1rootroot6.4MMay1909:35kind-linux-amd64#下载并安装#wget https:mvkind-linux-amd64/usr/bin/kindchmod+x/usr/bin/kind#验证[root@devops8 ~]#kind versionkindv0.14.0go1.18.2linux/amd64

1.3 安装Kubectl

bash
#下载#[root@devops8 ~]# curl -LO https:#上传安装包文件到机器[root@devops8 ~]#ll -h kubectl -rw-rw-rw-1rootroot44MMay1911:38kubectl#移动[root@devops8 ~]# chmod +x kubectl[root@devops8 ~]# mv kubectl /usr/bin/kubectl#验证[root@devops8 ~]#kubectl versionWARNING:Thisversioninformationisdeprecatedandwillbereplacedwiththeoutputfromkubectlversion--short.Use--output=yaml|jsontogetthefullversion.ClientVersion:version.Info{Major:"1",Minor:"24",GitVersion:"v1.24.0",GitCommit:"4ce5a8954017644c5420bae81d72b09b735c21f0",GitTreeState:"clean",BuildDate:"2022-05-03T13:46:05Z",GoVersion:"go1.18.1",Compiler:"gc",Platform:"linux/amd64"}KustomizeVersion:v4.5.4Theconnectiontotheserverlocalhost:8080wasrefused-didyouspecifytherighthostorport?

1.4 安装docker

  • 一键安装脚本如下:
bash
systemctlstopfirewalldsystemctldisablefirewalldsystemctlstopNetworkManagersystemctldisableNetworkManagersetenforce0sed-is/SELINUX=enforcing/SELINUX=disabled//etc/selinux/configcd/etc/yum.repos.d/mkdirbackup-`date +%F`mv*!$wget-O/etc/yum.repos.d/CentOS-Base.repohttp:yumcleanallyummakecacheyuminstall-ynet-toolsyuminstall-yvimyuminstall-ywgetyuminstall-ylrzszyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engineyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttp:yummakecache#yum install docker-ce -yyuminstall-yyuminstalldocker-ce-19.03.9docker-ce-cli-19.03.9containerd.io#指定需要安装的版本号systemctlstartdocker&&systemctlenabledockerdockerversiondockerinfomkdir-p/etc/dockertee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https:}EOFcat/proc/sys/net/ipv4/ip_forwardecho"net.ipv4.ip_forward =1">>/etc/sysctl.confsysctl-pcat/proc/sys/net/ipv4/ip_forwardsystemctldaemon-reloadsystemctlrestartdocker
  • 验证:
bash
[root@devops8 ~]#docker versionClient:DockerEngine-CommunityVersion:19.03.9APIversion:1.40Goversion:go1.13.10Gitcommit:9d988398e7Built:FriMay1500:25:272020OS/Arch:linux/amd64Experimental:falseServer:DockerEngine-CommunityEngine:Version:19.03.9APIversion:1.40(minimum version1.12)Goversion:go1.13.10Gitcommit:9d988398e7Built:FriMay1500:24:052020OS/Arch:linux/amd64Experimental:falsecontainerd:Version:1.6.31GitCommit:e377cd56a71523140ca6ae87e30244719194a521runc:Version:1.1.12GitCommit:v1.1.12-0-g51d5e94docker-init:Version:0.18.0GitCommit:fec3683

2. 部署Kuberenetes集群

2.1. 准备镜像

需要用到的docker images 【提前pull下来】:

  • kindest/node:v1.24.0
  • k8s.gcr.io/ingress-nginx/controller:v1.2.0
  • k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1

镜像已上传到腾讯云,手动pull到本地然后修改镜像标签。(如果网络环境允许可以自行直接下载原始镜像)

bash
dockerpullccr.ccs.tencentyun.com/devopsvip/kind:v1.24.0dockertagccr.ccs.tencentyun.com/devopsvip/kind:v1.24.0kindest/node:v1.24.0dockerpullccr.ccs.tencentyun.com/devopsvip/ingress-nginx-controller:v1.2.0dockertagccr.ccs.tencentyun.com/devopsvip/ingress-nginx-controller:v1.2.0k8s.gcr.io/ingress-nginx/controller:v1.2.0dockerpullccr.ccs.tencentyun.com/devopsvip/ingress-nginx-webhok:v1.1.1dockertagccr.ccs.tencentyun.com/devopsvip/ingress-nginx-webhok:v1.1.1k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1

2.2. 下载代码库

bash
gitclonegit@gitee.com:onlyonexl/myiac-gitee.git[root@devops8 ~]#cd myiac-gitee/[root@devops8 myiac-gitee]#lsdevopsk8sREADME.mdterraform-plugin-cache[root@devops8 myiac-gitee]#cd k8s/[root@devops8 k8s]#lsingress.yamlkind.tfREADME.md
  • kind.tf 文件中是集群的配置信息
  • ingress.yaml 是ingress的安装文件

2.3. 配置Terraform缓存

  • 编写/root/.terraformrc文件内容,指定缓存路径。
bash
#vim /root/.terraformrcplugin_cache_dir="/root/.terraform.d/terraform-plugin-cache"disable_checkpoint=trueprovider_installation{filesystem_mirror{path="/root/myiac-gitee/terraform-plugin-cache"include=["registry.terraform.io