基础设施即代码·3分钟搭建一套本地K8s集群

373a48cbdef7652bc1583b59a212a6ce.png

今天是「DevOps云学堂」与你共同进步的第 46

第⑦期DevOps实战训练营· 7月15日已开营

实践环境升级基于K8s和ArgoCD


本文是第七期DevOps训练营,开营环境准备内容。通过terraform+kind进行本地测试环境Kubernetes集群部署,部署ArgoCD来对后续DevOps工具进行交付。

跟着做,第一次配置20-30分钟左右,后续3分钟启动一个Kubernetes不成问题。第七期训练营正在进行中,如果有兴趣可以扫码了解详情!

实验环境类型= 操作系统:CentOS8  Linux ,内存资源:32GB+

工具名称Version描述信息
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
存储系统,持久化存储容器数据

66aa7dbdeebddedd8a1364f055ceea47.png
基础设施代码库:https://jihulab.com/devopsvip/myiac
kubernetes官方文档:https://kubernetes.io/docs/concepts/


常见问题:

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

  • [x] 如果对Terraform工具不熟悉,可以参考文档:https://www.yuque.com/devopsgroup/tf/ey037d

  • [x] 如果对Kind工具不熟悉,可以参考文档:https://www.yuque.com/devopsgroup/tf/kind#CcIbB

  • [x] 如果对Terraform集成Kind不熟悉,可以参考文档 https://www.yuque.com/devopsgroup/tf/kind


先决条件

1.1 安装Terraform

下载链接:https://developer.hashicorp.com/terraform/downloads?product_intent=terraform
课程中使用1.1.8版本:https://releases.hashicorp.com/terraform/1.1.7/terraform_1.1.7_linux_amd64.zip
9a8ede42a8ccfda8f2c0939e7ce127ab.png

$: unzip terraform_1.1.7_darwin_amd64.zip
Archive:  terraform_1.1.7_darwin_amd64.zip
  inflating: terraform
# ls
install.md                       terraform_1.1.7_darwin_amd64.zip
terraform
# mv terraform /usr/local/bin
# terraform version

1.2 安装Kind

wget  https://github.com/kubernetes-sigs/kind/releases/download/v0.14.0/kind-linux-amd64
mv kind-linux-amd64  /usr/bin/kind
chmod +x /usr/bin/kind

kind官网:  https://kind.sigs.k8s.io/docs/user/configuration/#getting-started
kind download: https://github.com/kubernetes-sigs/kind/releases/

1.3 安装Kubectl

https://kubernetes.io/docs/tasks/tools/#kubectl


部署Kuberenetes集群

需要用到的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

下载代码库

git clone https://jihulab.com/devopsvip/myiac.git
  • kind.tf  文件中是集群的配置信息

  • ingress.yaml 是ingress的安装文件

Terraform初始化和发布

# install
cd k8s 
terraform init 
terraform apply --auto-approve

# uninstall
terraform destroy --auto-approve

等待Terraform发布成功后,检查集群状态。

kubectl get node
NAME                         STATUS   ROLES           AGE     VERSION
devopscluster-control-plane   Ready    control-plane   2m53s   v1.24.0
devopscluster-worker          Ready    <none>          2m19s   v1.24.0
test-cluster-worker2         Ready    <none>          2m20s   v1.24.0

ingress-nginx

[root@zeyang-nuc-service k8s]# kubectl get pod -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-fbh5n        0/1     Completed   0          5m41s
ingress-nginx-admission-patch-xttkh         0/1     Completed   0          5m41s
ingress-nginx-controller-7bd87766fb-lsv89   1/1     Running     0          5m41s

部署ArgoCD

添加Hosts, 访问https://argocd.idevops.site

192.168.1.200 argocd.idevops.site
69e5422889b5374bcc4b1537a2b0b40c.png
image.png
# GetDockerImage
docker pull ccr.ccs.tencentyun.com/argocds/dex:v2.35.3
docker pull ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine
docker pull ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7

# TagDockerImage
docker tag ccr.ccs.tencentyun.com/argocds/dex:v2.35.3 ghcr.io/dexidp/dex:v2.35.3 
docker tag ccr.ccs.tencentyun.com/argocds/argocd:v2.6.7 quay.io/argoproj/argocd:v2.6.7 
docker tag ccr.ccs.tencentyun.com/argocds/redis:7.0.8-alpine redis:7.0.8-alpine 

# From local to Kind K8s Cluster
images=`grep image: install.yaml | awk -F 'image: ' '{print $NF}' | sort -n | uniq`

for image in $images
do
  kind load  docker-image $image --name devopscluster
done


# Install argocd
kubectl create ns argocd
kubectl -n argocd apply -f install.yaml
kubectl -n argocd apply -f ingress.yaml
sleep 3
kubectl -n argocd get pod 
kubectl -n argocd get secret
sleep 5
# Get password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d ; echo

pod

[root@devops-nuc-service argocd]# kubectl -n argocd get pod
NAME                                                READY   STATUS    RESTARTS   AGE
argocd-application-controller-0                     1/1     Running   0          7m25s
argocd-applicationset-controller-56bcd8d9c5-8jwq5   1/1     Running   0          7m25s
argocd-dex-server-5c7956f67-zthlg                   1/1     Running   0          7m25s
argocd-notifications-controller-d9849775f-vwbn2     1/1     Running   0          7m25s
argocd-redis-6489dcbcd5-kbjhj                       1/1     Running   0          7m25s
argocd-repo-server-6c68b85655-s8gkz                 1/1     Running   0          7m25s
argocd-server-747b8c84bd-5b9r4                      1/1     Running   0          7m25s

更多精彩

往期推荐

全国软件开发项目管理会议交流︱2023第十二届中国PMO大会将于8月在京召开

推动软件持续交付的24个关键能力点

使用ArgoCD和Tekton在OpenShift上创建端到端GitOps管道

KubeLinter:如何检查K8s清单文件和Helm图表

A/B测试: 如何使用Argo Rollouts 进行渐进式交付

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值