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

目录
[toc]
写在前面
本文档是devops8的基础实验环境文档,过程完整,已经过充分测试。
实验环境
- 老师环境
操作系统: CentOS8 Linux, 内存资源:32GB+
本地实验机器运行工具链,通过笔记本SSH到远程机器。

老师使用的是centos8系统,我使用的是centos7.6系统;
另外,记得给自己虚机扩容下/目录哦,否则后续拉取镜像会报错的。
命令汇总:
1pvcreate /dev/sdb
2vgextend centos /dev/sdb
3lvextend -L +148G /dev/centos/root
4xfs_growfs /dev/centos/root
5
6
7
8pvcreate /dev/sdf
9vgextend centos /dev/sdf
10lvextend -L +48G /dev/centos/root
11xfs_growfs /dev/centos/root
- 自己测试机器环境
自己nuc安装了win11系统,然后装了vmwareworkstation,里面装了centos7.61810作为本次devops8测试机器。
在win11机器上是可以直接ssh devops8虚机的;
nuc cpu:8c 内存:32G

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

- 机器ip
1192.168.1.200
注意:测试虚机的ip一定要是这个,否则后期的argocd部署应用会很麻烦,一直要改代码。
1Jenkins 2.415-jdk11
2GitLab gitlab-ce:16.2.2-ce.0
3
4Terraform 1.1.7
5Kind 0.14.0
6Kubernetes 1.24.0(具备nfs存储)
7Docker-CE1.19+ (Docker version 23.0.3, build 3e7cbfd)
8ArgoCD 2.6.7
9
10centos7 7.6.1810
- 本次软件版本:
| 工具名称 | Version | 描述信息 |
|---|---|---|
| centos7 | 7.6.1810 | |
| Terraform | 1.1.7 | 使用kind provider操作kind |
| Kind | 0.14.0 | 创建Kubernetes集群工具 |
| Docker-CE | 1.19+ (Docker version 23.0.3, build 3e7cbfd) | 容器运行时 |
| kubectl | version.Info{Major:"1", Minor:"24", GitVersion:"v1.24.0 | |
| Kubernetes | 1.24.0 | 容器云环境 |
| ArgoCD | 2.6.7 | 云原生应用持续部署工具 |
| NFS | 存储系统,持久化存储容器数据 |
| 应用名称 | Version | 描述信息 |
|---|---|---|
| Jenkins | 2.415-jdk11 | 持续集成服务器 |
| GitLab | gitlab-ce:16.2.2-ce.0 | 版本控制系统 |
| Maven | 3.9.1 | 后端项目构建工具 |
| Gradle | 7.6.1 | 后端项目构建工具 |
| Node | 14.16.1 | 前端项目构建工具 |
| SonarQube | 9.9.0-community | 代码质量平台 |
| Nexus | sonatype/nexus3:3.60.0 | 制品库平台 |
- 实验设计

常见问题
- 只要是K8s集群环境即可,安装方式没有限制。版本1.24+。节点数没要求。
实验软件
一键打包本次涉及所有镜像;其它软件包;代码库;
1#实例代码
2docker save `docker images | cut -f1 -d ' ' | sed -n '2,$p'` |gzip > k8s-images-v1.20.4.tar.gz
3
4#本次代码
5docker save `docker images | cut -f1 -d ' ' | sed -n '2,$p'` |gzip > devops8-basic-test-environment.tar.gz
6
7[root@devops8 ~]#docker save `docker images | cut -f1 -d ' ' | sed -n '2,$p'` |gzip > devops8-basic-test-environment.tar.gz
8[root@devops8 ~]#ll -h devops8-basic-test-environment.tar.gz
9-rw-r--r-- 1 root root 1.1G May 31 02:32 devops8-basic-test-environment.tar.gz

链接:https://pan.baidu.com/s/1NfbTWKakuV_0fsacToZWsQ?pwd=ivfd
提取码:ivfd
2024.5.30-devops8实验软件

代码库
- 老师的代码库:
基础设施代码库:https://jihulab.com/devopsvvip/myiac.git


- ==自己的代码库==
创建自己的gitee仓库:myiac-gitee
代码库地址:https://gitee.com/onlyonexl/myiac-gitee.git

初始化仓库:
1#git clone git@gitee.com:onlyonexl/myiac-gitee.git
2
3mkdir myiac-gitee
4cd myiac-gitee
5
6echo "# myiac-gitee" >> README.md
7git init
8git add README.md
9git commit -m "first commit"
10git branch -M main
11git remote add origin git@gitee.com:OnlyOnexl/myiac-gitee.git
12git push -u origin main
13
14
15git config --global user.email "devops8@example.com"
16git config --global user.name "devops8"
17
18ssh-keygen
19cat /root/.ssh/id_rsa.pub
然后提交本次设计的所有代码:
1git pull
2
3git add -A
4git commit -m "commit code"
5git push
6
7git status
1. 先决条件
1.0 centos7环境准备
1devops8 192.168.1.200(可上公网)
2CentOS Linux release 7.6.1810 (Core)
3已配置国内yum源
48c,16g,20g系统盘
- 配置基础环境:
1systemctl stop firewalld && systemctl disable firewalld
2systemctl stop NetworkManager && systemctl disable NetworkManager
3
4setenforce 0
5sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
1.1 安装Terraform
1#上传安装包文件到机器
2[root@devops8 ~]#ll -h terraform_1.1.8_linux_amd64.zip
3-rw-rw-rw- 1 root root 18M May 19 08:12 terraform_1.1.8_linux_amd64.zip
4
5#解压
6[root@devops8 ~]# unzip terraform_1.1.8_linux_amd64.zip
7Archive: terraform_1.1.8_linux_amd64.zip
8 inflating: terraform
9[root@devops8 ~]# ll -t
10total 80148
11……
12-rw-rw-rw-. 1 root root 18796132 May 19 08:12 terraform_1.1.8_linux_amd64.zip
13-rwxr-xr-x. 1 root root 63266816 Apr 8 2022 terraform
14
15
16#移动二进制文件到PATH路径
17[root@devops8 ~]# mv terraform /usr/local/bin
18
19
20#验证
21[root@devops8 ~]# terraform version
22Terraform v1.1.8
23on linux_amd64
24
25Your version of Terraform is out of date! The latest version
26is 1.8.3. You can update by downloading from https://www.terraform.io/downloads.html
1.2 安装Kind
1#上传安装包文件到机器
2[root@devops8 ~]#ll -h kind-linux-amd64
3-rw-rw-rw- 1 root root 6.4M May 19 09:35 kind-linux-amd64
4
5#下载并安装
6#wget https://github.com/kubernetes-sigs/kind/releases/download/v0.14.0/kind-linux-amd64
7mv kind-linux-amd64 /usr/bin/kind
8chmod +x /usr/bin/kind
9
10#验证
11[root@devops8 ~]#kind version
12kind v0.14.0 go1.18.2 linux/amd64
1.3 安装Kubectl
1#下载
2#[root@devops8 ~]# curl -LO https://dl.k8s.io/release/v1.24.0/bin/linux/amd64/kubectl
3
4#上传安装包文件到机器
5[root@devops8 ~]#ll -h kubectl
6-rw-rw-rw- 1 root root 44M May 19 11:38 kubectl
7
8#移动
9[root@devops8 ~]# chmod +x kubectl
10[root@devops8 ~]# mv kubectl /usr/bin/kubectl
11
12#验证
13[root@devops8 ~]#kubectl version
14WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version.
15Client Version: 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"}
16Kustomize Version: v4.5.4
17The connection to the server localhost:8080 was refused - did you specify the right host or port?
1.4 安装docker
- 一键安装脚本如下:
1systemctl stop firewalld
2systemctl disable firewalld
3
4systemctl stop NetworkManager
5systemctl disable NetworkManager
6
7setenforce 0
8sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
9
10cd /etc/yum.repos.d/
11mkdir backup-`date +%F`
12mv * !$
13
14wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
15yum clean all
16yum makecache
17
18yum install -y net-tools
19yum install -y vim
20yum install -y wget
21yum install -y lrzsz
22
23
24yum remove docker \
25 docker-client \
26 docker-client-latest \
27 docker-common \
28 docker-latest \
29 docker-latest-logrotate \
30 docker-logrotate \
31 docker-engine
32
33yum install -y yum-utils device-mapper-persistent-data lvm2
34yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
35yum makecache
36
37#yum install docker-ce -y
38yum install -y yum install docker-ce-19.03.9 docker-ce-cli-19.03.9 containerd.io #指定需要安装的版本号
39systemctl start docker && systemctl enable docker
40
41docker version
42docker info
43
44mkdir -p /etc/docker
45tee /etc/docker/daemon.json <<-'EOF'
46{
47 "registry-mirrors":["https://kvuwuws2.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://dockerhub.azk8s.cn"]
48}
49EOF
50
51cat /proc/sys/net/ipv4/ip_forward
52echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
53sysctl -p
54cat /proc/sys/net/ipv4/ip_forward
55
56systemctl daemon-reload
57systemctl restart docker
- 验证:
1[root@devops8 ~]#docker version
2Client: Docker Engine - Community
3 Version: 19.03.9
4 API version: 1.40
5 Go version: go1.13.10
6 Git commit: 9d988398e7
7 Built: Fri May 15 00:25:27 2020
8 OS/Arch: linux/amd64
9 Experimental: false
10
11Server: Docker Engine - Community
12 Engine:
13 Version: 19.03.9
14 API version: 1.40 (minimum version 1.12)
15 Go version: go1.13.10
16 Git commit: 9d988398e7
17 Built: Fri May 15 00:24:05 2020
18 OS/Arch: linux/amd64
19 Experimental: false
20 containerd:
21 Version: 1.6.31
22 GitCommit: e377cd56a71523140ca6ae87e30244719194a521
23 runc:
24 Version: 1.1.12
25 GitCommit: v1.1.12-0-g51d5e94
26 docker-init:
27 Version: 0.18.0
28 GitCommit: 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到本地然后修改镜像标签。(如果网络环境允许可以自行直接下载原始镜像)】
1docker pull ccr.ccs.tencentyun.com/devopsvip/kind:v1.24.0
2docker tag ccr.ccs.tencentyun.com/devopsvip/kind:v1.24.0 kindest/node:v1.24.0
3
4docker pull ccr.ccs.tencentyun.com/devopsvip/ingress-nginx-controller:v1.2.0
5docker tag ccr.ccs.tencentyun.com/devopsvip/ingress-nginx-controller:v1.2.0 k8s.gcr.io/ingress-nginx/controller:v1.2.0
6
7
8docker pull ccr.ccs.tencentyun.com/devopsvip/ingress-nginx-webhok:v1.1.1
9docker tag ccr.ccs.tencentyun.com/devopsvip/ingress-nginx-webhok:v1.1.1 k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
2.2. 下载代码库
1git clone git@gitee.com:onlyonexl/myiac-gitee.git
2
3
4[root@devops8 ~]#cd myiac-gitee/
5[root@devops8 myiac-gitee]#ls
6devops k8s README.md terraform-plugin-cache
7[root@devops8 myiac-gitee]#cd k8s/
8[root@devops8 k8s]#ls
9ingress.yaml kind.tf README.md
- kind.tf 文件中是集群的配置信息
- ingress.yaml 是ingress的安装文件
2.3. 配置Terraform缓存
- 编写/root/.terraformrc文件内容,指定缓存路径。
1#vim /root/.terraformrc
2plugin_cache_dir = "/root/.terraform.d/terraform-plugin-cache"
3disable_checkpoint = true
4
5
6provider_installation {
7 filesystem_mirror {
8 path = "/root/myiac-gitee/terraform-plugin-cache"
9 include = ["registry.terraform.io/*/*"]
10 }
11}
12
13
14mkdir -p /root/.terraform.d/terraform-plugin-cache
- 下载main分支中的terraform-plugin-cache目录到宿主机。
1[root@devops8 myiac-gitee]#pwd
2/root/myiac-gitee
3[root@devops8 myiac-gitee]#ls
4devops k8s README.md terraform-plugin-cache
5[root@devops8 myiac-gitee]#tree terraform-plugin-cache/
6terraform-plugin-cache/
7└── registry.terraform.io
8 ├── hashicorp
9 │ ├── kubernetes
10 │ │ └── 2.16.1
11 │ │ └── linux_amd64
12 │ │ └── terraform-provider-kubernetes_v2.16.1_x5
13 │ └── null
14 │ ├── 3.1.1
15 │ │ ├── darwin_amd64
16 │ │ │ └── terraform-provider-null_v3.1.1_x5
17 │ │ ├── darwin_arm64
18 │ │ │ └── terraform-provider-null_v3.1.1_x5
19 │ │ ├── linux_amd64
20 │ │ │ └── terraform-provider-null_v3.1.1_x5
21 │ │ └── windows_amd64
22 │ │ └── terraform-provider-null_v3.1.1_x5.exe
23 │ └── 3.2.1
24 │ └── linux_amd64
25 │ └── terraform-provider-null_v3.2.1_x5
26 └── tehcyx
27 └── kind
28 └── 0.0.12
29 └── linux_amd64
30 ├── LICENSE
31 ├── README.md
32 └── terraform-provider-kind
33
3417 directories, 9 files
- 查看
kind.tf内容:
1[root@devops8 k8s]#cat kind.tf
2# terraform用到的providers
3terraform {
4 required_providers {
5 kind = {
6 source = "tehcyx/kind"
7 version = "0.0.12"
8 }
9 null = {
10 source = "hashicorp/null"
11 version = "3.1.1"
12 }
13 }
14}
15
16provider "kind" {}
17
18# 此变量指定kubeconfig的文件输出路径
19variable "kind_cluster_config_path" {
20 type = string
21 default = "~/.kube/config"
22}
23
24# 此输出会在控制台打印kubeconfig内容
25output "kubeconfig" {
26 value = kind_cluster.default.kubeconfig
27}
28
29# 定义k8s集群
30resource "kind_cluster" "default" {
31 name = "devopscluster" # 集群名称
32 node_image = "kindest/node:v1.24.0" # kind镜像
33 kubeconfig_path = pathexpand(var.kind_cluster_config_path) # kubeconfig路径
34 wait_for_ready = true # 等待集群节点ready
35
36 # kind配置文件
37 kind_config {
38 kind = "Cluster"
39 api_version = "kind.x-k8s.io/v1alpha4"
40
41 # Control节点配置
42 node {
43 role = "control-plane"
44 kubeadm_config_patches = [
45 <<-EOT
46 kind: InitConfiguration
47 imageRepository: registry.aliyuncs.com/google_containers
48 networking:
49 serviceSubnet: 10.0.0.0/16
50 apiServerAddress: "0.0.0.0"
51 nodeRegistration:
52 kubeletExtraArgs:
53 node-labels: "ingress-ready=true"
54 ---
55 kind: KubeletConfiguration
56 cgroupDriver: systemd
57 cgroupRoot: /kubelet
58 failSwapOn: false
59 EOT
60 ]
61
62 extra_port_mappings {
63 container_port = 80
64 host_port = 80
65 }
66 extra_port_mappings {
67 container_port = 443
68 host_port = 443
69 }
70 extra_port_mappings {
71 container_port = 6443
72 host_port = 6443
73 }
74 }
75
76 # worker 节点1
77 node {
78 role = "worker"
79 }
80
81 # worker 节点2
82 node {
83 role = "worker"
84 }
85 }
86}
87
88# null_resource 用于执行shell命令
89# 此步骤用于加载ingress镜像并部署ingress
90resource "null_resource" "wait_for_instatll_ingress" {
91 triggers = {
92 key = uuid()
93 }
94
95 provisioner "local-exec" {
96 command = <<EOF
97 sleep 5
98 kind load docker-image k8s.gcr.io/ingress-nginx/controller:v1.2.0 --name devopscluster
99 kind load docker-image k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1 --name devopscluster
100 kubectl create ns ingress-nginx
101 kubectl apply -f ingress.yaml -n ingress-nginx
102 printf "\nWaiting for the nginx ingress controller...\n"
103 kubectl wait --namespace ingress-nginx \
104 --for=condition=ready pod \
105 --selector=app.kubernetes.io/component=controller \
106 --timeout=90s #这里等待了90s
107 EOF
108 }
109
110 depends_on = [kind_cluster.default]
111}
- Terraform初始化
1cd /root/myiac-gitee/k8s
2# install
3terraform init
出现下面的提示信息说明初始化成功,缓存配置生效。(如果未出现提示或者其他错误检查上个步骤中的terrafor缓存配置。)

- 发布:
1terraform apply --auto-approve
2
3# uninstall
4terraform destroy --auto-approve
发布成功会屏幕输出kubeconfig内容,不用保存,这些内容已经存储到了~/.kube/config

- 等待Terraform发布成功后,检查集群状态。
1[root@devops8 k8s]#kubectl get node
2NAME STATUS ROLES AGE VERSION
3devopscluster-control-plane Ready control-plane 110s v1.24.0
4devopscluster-worker Ready <none> 89s v1.24.0
5devopscluster-worker2 Ready <none> 76s v1.24.0
ingress-nginx pod:
1[root@devops8 k8s]#kubectl get pod -n ingress-nginx
2NAME READY STATUS RESTARTS AGE
3ingress-nginx-admission-create-49trm 0/1 Completed 0 59s
4ingress-nginx-admission-patch-rgqtk 0/1 Completed 0 59s
5ingress-nginx-controller-59c96b9cb7-zh4hr 1/1 Running 0 59s
2.4 k8s集群配置nfs存储
- 将devops8机器复用为nfs server:
1yum -y install nfs-utils rpcbind
2mkdir -p /data/storage/kubernetes
3echo "/data/storage/kubernetes *(rw,insecure,sync,no_root_squash)" > /etc/exports
4systemctl enable rpcbind nfs-utils nfs --now
验证:
1[root@devops8 ~]#showmount -e 192.168.1.200
2Export list for 192.168.1.200:
3/data/storage/kubernetes *
4
5[root@devops8 ~]#systemctl status nfs-server
6● nfs-server.service - NFS server and services
7 Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
8 Drop-In: /run/systemd/generator/nfs-server.service.d
9 └─order-with-mounts.conf
10 Active: active (exited) since Sun 2024-05-19 16:40:39 CST; 58s ago
11 Process: 34636 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
12 Process: 34618 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
13 Process: 34616 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
14 Main PID: 34618 (code=exited, status=0/SUCCESS)
15 Tasks: 0
16 Memory: 0B
17 CGroup: /system.slice/nfs-server.service
18
19May 19 16:40:39 devops8 systemd[1]: Starting NFS server and services...
20May 19 16:40:39 devops8 systemd[1]: Started NFS server and services.
21[root@devops8 ~]#cat /etc/exports
22/data/storage/kubernetes *(rw,insecure,sync,no_root_squash)
- nfs动态供给安装(helm方式)
(1)先安装helm:
1#上传软件到机器
2[root@devops8 ~]#ll -h helm-v3.7.2-linux-amd64.tar.gz
3-rw-rw-rw- 1 root root 14M May 19 16:46 helm-v3.7.2-linux-amd64.tar.gz
4
5tar xf helm-v3.7.2-linux-amd64.tar.gz
6cd linux-amd64/
7cp helm /usr/bin/
8chmod +x /usr/bin/helm
9helm version
10helm repo add stable http://mirror.azure.cn/kubernetes/charts/
11helm repo update
12#helm补全
13echo "source <(helm completion bash)" >> ~/.bashrc
14source ~/.bashrc
15
16
17[root@devops8 linux-amd64]#helm version
18version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", GitTreeState:"clean", GoVersion:"go1.16.10"}
(2)安装nfs存储:
注意:这里重新拉取下代码(因为dockerhub仓库被q了)
1docker pull uhub.service.ucloud.cn/onedayxyy/nfs-subdir-external-provisioner:v4.0.2
2
3docker tag uhub.service.ucloud.cn/onedayxyy/nfs-subdir-external-provisioner:v4.0.2 cnych/nfs-subdir-external-provisioner:v4.0.2
4
5kind load docker-image cnych/nfs-subdir-external-provisioner:v4.0.2 --name devopscluster
1#上传附件到机器并解压
2[root@devops8 ~]#ll -h nfs-subdir-external-provisioner-4.0.17.tgz
3-rw-rw-rw- 1 root root 5.7K May 19 16:49 nfs-subdir-external-provisioner-4.0.17.tgz
4[root@devops8 ~]#tar xf nfs-subdir-external-provisioner-4.0.17.tgz
5
6[root@devops8 ~]#helm upgrade --install nfs-subdir-external-provisioner ./nfs-subdir-external-provisioner --set nfs.server=192.168.1.200 --set nfs.path=/data/storage/kubernetes --set image.repository=cnych/nfs-subdir-external-provisioner -n kube-system
7Release "nfs-subdir-external-provisioner" does not exist. Installing it now.
8NAME: nfs-subdir-external-provisioner
9LAST DEPLOYED: Sun May 19 16:53:56 2024
10NAMESPACE: kube-system
11STATUS: deployed
12REVISION: 1
13TEST SUITE: None
14
15[root@devops8 jenkins]#helm ls -A
16NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
17nfs-subdir-external-provisioner kube-system 1 2024-05-26 14:21:56.976270952 +0800 CST deployed nfs-subdir-external-provisioner-4.0.17 4.0.2
18
19[root@devops8 jenkins]#kubectl get po -nkube-system
20NAME READY STATUS RESTARTS AGE
21……
22nfs-subdir-external-provisioner-5846f745b4-d6htb 1/1 Running 0 6m2s
3. 部署ArgoCD
- 添加Hosts
1192.168.1.200 argocd.idevops.site
- 先拉取镜像并导入kind集群:
1# GetDockerImage
2docker pull ccr.ccs.tencentyun.com/argocds/dex:v2.35.3
3docker pull ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine
4docker pull ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7
5
6# TagDockerImage
7docker tag ccr.ccs.tencentyun.com/argocds/dex:v2.35.3 ghcr.io/dexidp/dex:v2.35.3
8docker tag ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7 quay.io/argoproj/argocd:v2.6.7
9docker tag ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine redis:7.0.8-alpine
10
11#导入镜像到kind集群
12kind load docker-image ghcr.io/dexidp/dex:v2.35.3 --name devopscluster
13kind load docker-image quay.io/argoproj/argocd:v2.6.7 --name devopscluster
14kind load docker-image redis:7.0.8-alpine --name devopscluster
- 查看run.sh:
1[root@devops8 ~]#cd myiac-gitee/
2[root@devops8 myiac-gitee]#ls
3devops k8s README.md terraform-plugin-cache
4[root@devops8 myiac-gitee]#cd devops/
5[root@devops8 devops]#ls
6argocd jenkins
7[root@devops8 devops]#cd argocd/
8[root@devops8 argocd]#ls
9ingress.yaml install.yaml run.sh
10[root@devops8 argocd]#cat run.sh
11# # GetDockerImage
12# docker pull ccr.ccs.tencentyun.com/argocds/dex:v2.35.3
13# docker pull ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine
14# docker pull ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7
15
16# # TagDockerImage
17# docker tag ccr.ccs.tencentyun.com/argocds/dex:v2.35.3 ghcr.io/dexidp/dex:v2.35.3
18# docker tag ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7 quay.io/argoproj/argocd:v2.6.7
19# docker tag ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine redis:7.0.8-alpine
20
21# From local to Kind K8s Cluster
22images=`grep image: install.yaml | awk -F 'image: ' '{print $NF}' | sort -n | uniq`
23
24for image in $images
25do
26 kind load docker-image $image --name devopscluster
27done
28
29
30# Install argocd
31kubectl create ns argocd
32kubectl -n argocd apply -f install.yaml
33kubectl -n argocd apply -f ingress.yaml
34sleep 3
35kubectl -n argocd get pod
36kubectl -n argocd get secret
37sleep 5
38# Get password
39kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d ; echo
- 执行安装脚本:
1cd /root/myiac-gitee/devops/argocd
2
3[root@devops8 argocd]#pwd
4/root/myiac-gitee/devops/argocd
5[root@devops8 argocd]#ls
6ingress.yaml install.yaml run.sh
7[root@devops8 argocd]#sh -x run.sh

1#也可以手动查看密码
2+ kubectl -n argocd get secret argocd-initial-admin-secret -o 'jsonpath={.data.password}'
3+ base64 -d
45wSzTT6QqShzCwQA+ echo #注意不包含这个+号
5
65wSzTT6QqShzCwQA
argocd pod信息:
1[root@devops8 argocd]#kubectl -n argocd get pod
2NAME READY STATUS RESTARTS AGE
3argocd-application-controller-0 1/1 Running 0 48s
4argocd-applicationset-controller-56bcd8d9c5-cqlvd 1/1 Running 0 48s
5argocd-dex-server-5c7956f67-wq6xr 1/1 Running 0 48s
6argocd-notifications-controller-d9849775f-l9kcx 1/1 Running 0 48s
7argocd-redis-6489dcbcd5-wndzb 1/1 Running 0 48s
8argocd-repo-server-6c68b85655-mcjj9 1/1 Running 0 48s
9argocd-server-747b8c84bd-d9hlx 1/1 Running 0 48s
10[root@devops8 argocd]#
- 登录web改密码:
1admin/5wSzTT6QqShzCwQA
2
3原密码改为
4admin/admin@123


基础环境配置结束。
FAQ
本期密码
192.168.1.200 argocd.idevops.site jenkins.idevops.site
| 名称 | 链接 | 用户名 | 密码 |
|---|---|---|---|
| argocd | argocd.idevops.site | admin | 变化的 |
| jenkins | jenkins.idevops.site | admin | admin@123 |
| gitlab | gitlab.idevops.site | admin | nLU4eXA2YjRPjKZ |
销毁环境&重建
这个问题需要特别注意下。
- 遇到的问题

一键安装环境
- 淦,自己环境虚机重启后,==argocd一直无法登录==,但jenkins有问题,自己最后重新销毁了k8s集群,再次创建了,**此时发现原来的all数据(jenkins、gitlab)jenkins数据都是在的**哦。
1.销毁k8s集群命令
1cd /root/myiac-gitee/k8s/
2terraform init
3terraform destroy --auto-approve
4
5kind delete cluster --name devopscluster
2.重新创建k8s集群命令
1#拉取最新代码
2# cd /root/myiac-gitee
3# git pull
4# git status
5#####################################################
6
7#创建k8s集群
8cd /root/myiac-gitee/k8s/
9rm -rf terraform.tfstate terraform.tfstate.backup
10terraform init
11terraform apply --auto-approve
12#####################################################
13
14
15#开始导入镜像
16cd /root
17kind load docker-image cnych/nfs-subdir-external-provisioner:v4.0.2 --name devopscluster
18
19kind load docker-image ghcr.io/dexidp/dex:v2.35.3 --name devopscluster
20kind load docker-image quay.io/argoproj/argocd:v2.6.7 --name devopscluster
21kind load docker-image redis:7.0.8-alpine --name devopscluster
22
23kind load docker-image jenkins/jenkins:2.415-jdk11 --name devopscluster
24kind load docker-image jenkins/inbound-agent:latest --name devopscluster
25
26kind load docker-image gitlab/gitlab-ce:16.2.2-ce.0 --name devopscluster
27
28kind load docker-image uhub.service.ucloud.cn/onedayxyy/metrics-server:v0.7.0 --name devopscluster
29
30kind load docker-image ccr.ccs.tencentyun.com/devopsvip/custom-build-agent:v2 --name devopscluster
31#####################################################
32
33
34
35
36##安装metrics-server
37cd ~
38kubectl apply -f components.yaml
39
40#helm安装nfs存储
41helm upgrade --install nfs-subdir-external-provisioner ./nfs-subdir-external-provisioner --set nfs.server=192.168.1.200 --set nfs.path=/data/storage/kubernetes --set image.repository=cnych/nfs-subdir-external-provisioner -n kube-system
42kubectl get po -A
43#####################################################
44
45
46
47#安装argocd
48cd myiac-gitee/devops/argocd/
49kind load docker-image ghcr.io/dexidp/dex:v2.35.3 --name devopscluster
50kind load docker-image quay.io/argoproj/argocd:v2.6.7 --name devopscluster
51kind load docker-image redis:7.0.8-alpine --name devopscluster
52sh -x run.sh
53#拷贝argocd登录密码,手动登录argocd
54
55
56
57
58#安装jenkins
59cd /root/myiac-gitee/devops/jenkins/
60#kind load docker-image jenkins/jenkins:2.415-jdk11 --name devopscluster
61#kind load docker-image jenkins/inbound-agent:latest --name devopscluster
62sh -x run.sh
63
64#安装jenkins-agent
65cd /root/myiac-gitee/devops/jenkins/
66kubectl -n argocd apply -f jenkins-agent-argoapp.yaml
67
68
69
70
71#部署gitlab
72#mkdir -p /data/storage/kubernetes/gitlab/{config,logs,data}
73#chmod 777 -R /data/storage/kubernetes/gitlab/
74#kind load docker-image gitlab/gitlab-ce:16.2.2-ce.0 --name devopscluster
75kubectl -n argocd apply -f /root/myiac-gitee/devops/gitlab/gitlab-argoapp.yaml
76#####################################################
77
78
79
80
81#查看那argocd密码
82kubectl -n argocd get secret argocd-initial-admin-secret -o 'jsonpath={.data.password}'|base64 -d;echo
83
84#查看gitlab密码
85#cd /data/storage/kubernetes/gitlab/config
86#cat initial_root_password
87##The end
88#####################################################
1
参考文档
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

🍀 微信公众号
《云原生架构师实战》

🍀 个人博客站点


🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

🍀 知乎
https://www.zhihu.com/people/foryouone

最后
好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!


