hugo-teek is loading...

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

最后更新于:

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

img

目录

[toc]

写在前面

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

实验环境

  • 老师环境

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

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

img

老师使用的是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

image-20240519152043967

devops8虚机给的配置:

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

image-20240519152134520

  • 机器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描述信息
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+。节点数没要求。

实验软件

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

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

image-20240531022927968

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

image-20240531024640266

代码库

  • 老师的代码库:

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

image-20240519152711116

image-20240519152650604

  • ==自己的代码库==

创建自己的gitee仓库:myiac-gitee

代码库地址:https://gitee.com/onlyonexl/myiac-gitee.git

image-20240526144539429

初始化仓库:

 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缓存配置。)

image-20240530155433388

  • 发布:
1terraform apply --auto-approve
2
3# uninstall
4terraform destroy --auto-approve

发布成功会屏幕输出kubeconfig内容,不用保存,这些内容已经存储到了~/.kube/config

img

  • 等待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 

image-20240519120931501

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改密码:

https://argocd.idevops.site/

1admin/5wSzTT6QqShzCwQA
2
3原密码改为
4admin/admin@123

image-20240519083803247

image-20240519121522770

基础环境配置结束。

FAQ

本期密码

192.168.1.200 argocd.idevops.site jenkins.idevops.site

名称链接用户名密码
argocdargocd.idevops.siteadmin变化的
jenkinsjenkins.idevops.siteadminadmin@123
gitlabgitlab.idevops.siteadminnLU4eXA2YjRPjKZ

销毁环境&重建

这个问题需要特别注意下。

  • 遇到的问题

image-20240618205125114

一键安装环境

  • 淦,自己环境虚机重启后,==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。

image-20230107215114763

🍀 微信公众号

《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

https://onedayxyy.cn/

image-20240502070225650

🍀 csdn

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

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

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

image-20240519160227609

推荐使用微信支付
微信支付二维码
推荐使用支付宝
支付宝二维码
最新文章

文档导航