【云原生】DevOps 环境搭建

本文使用 Gitlab,Jenkins,Docker,K8s,Harbor 实现CICD环境搭建

一、Gitlab环境部署
说明:内存尽量给多点(2G以上),后面会安装一些软件,会占用内存
1.1、安装依赖软件

yum install curl openssh-server postfix

1.2、下载gitlab包并安装
1.2.1、安装方法1:

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce

1.2.2、安装方法2:

下载地址:https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms&page=34
下载gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm安装包到本地
上传gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm软件包的到服务器,然后执行以下操作
安装软件包
[root@CentOS7 ~]# yum localinstall gitlab-ce-8.9.6-ce.0.el7.x86_64.rpm

1.3、配置并启动

gitlab-ctl reconfigure        #初始化

gitlab-ctl status             #查看状态

gitlab-ctl stop               #停止gitlab

gitlab-ctl start              #启动gitlab

1.4、初始化后检查

[root@CentOS7 ~]# gitlab-ctl status           #出现以下信息说明正确
run: gitlab-workhorse: (pid 2213) 68s; run: log: (pid 2058) 110s
run: logrotate: (pid 2077) 102s; run: log: (pid 2076) 102s
run: nginx: (pid 2064) 108s; run: log: (pid 2063) 108s
run: postgresql: (pid 1933) 130s; run: log: (pid 1932) 130s
run: redis: (pid 1850) 136s; run: log: (pid 1849) 136s
run: sidekiq: (pid 2048) 112s; run: log: (pid 2047) 112s
run: unicorn: (pid 2239) 55s; run: log: (pid 2015) 114s

1.5、网页登陆配置gitlab
在浏览器输入当前服务器的ip地址即可打开网页
1.5.1、设置初始登陆的密码:
在这里插入图片描述
1.5.2、登陆gitlab(默认用户:root 密码:自定义)
在这里插入图片描述
1.5.3、登陆后的界面如下:
在这里插入图片描述
二、Jenkins环境部署
2.1、下载存储库

  sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
  sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key

2.2、安装jdk及jenkins

  yum install fontconfig tzdata-java java-17-openjdk
  yum install jenkins

2.3、启动jenkins

systemctl status jenkins

2.4、启动完成后安装必要插件

Git、Git Parameter、GitLab、Localization Support、Localization: Chinese (Simplified)、Pipeline、Publish Over SSH、SonarQube Scanner、

3、安装Docker

[root@localhost ~]# cat install-docker.sh 
#! /bin/bash
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-18.06.2.ce-3.el7
设置docker的加速镜像
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

3.1、检查是否安装成功

[root@gitlab-jenkins ~]# docker info
Containers: 4
 Running: 0
 Paused: 0
 Stopped: 4
Images: 253
Server Version: 18.06.2-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 8.623GiB
Name: gitlab-jenkins
ID: JHXP:OQFK:7F7P:LJMR:M723:PUIO:ZGDA:7MEK:L7RS:6SLT:USI6:IUSV
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 harbor.hcloud.com:81
 192.168.122.150
 8.219.115.180
 127.0.0.0/8
Registry Mirrors:
 https://kgdsiwq8.mirror.aliyuncs.com/
Live Restore Enabled: false

4、安装k8s集群见如下文档
k8s安装文档
5、安装Harnor仓库见如下文档
Harbor仓库安装
6、配置Jenkins Pipeline

pipeline {
    agent any
	environment {
        image_name = "192.168.122.150/per-test/auth-service:${date}"
        server_name = "per-auth-service"
        namespace = "per"
     }
    stages {
        stage('pull code') {
            steps {
              checkout([$class: 'GitSCM', 
              branches: [[name: "${params.TAG}"]], 
              extensions: [], 
              userRemoteConfigs: [[credentialsId: 'test', 
              url: 'https://codeup.aliyun.com/63ee8eeba823fsf32dffwe/user-auth.git']]])
                updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR
                   }
            }
        }
        stage('Code Build'){ 
	        steps {
                retry(2) { sh "/opt/maven/bin/mvn  clean package -U -Dmaven.test.skip=true" }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }
        stage('Docker Build'){ 
	        steps {
                retry(2) { 
sh '''    # 以下参数根据实际情况修改即可
HOSTS_LIST=""
APOLLO_APP_ID="per-auth-service"
APOLLO_KEY=""
APOLLO_META="http://192.168.122.229:8080"
APOLLO_CLUSTER="test"
SPRING_PROFILES="test_docker"
LINUX_TIME_ZONE="America/Lima"
JVM_TIME_ZONE="GMT-5"
JAR_FILE="auth-service-1.0.0-SNAPSHOT.jar"
cd ./auth-service
docker build  --build-arg APOLLO_APP_ID="${APOLLO_APP_ID}" --build-arg APOLLO_KEY="${APOLLO_KEY}" --build-arg APOLLO_META="${APOLLO_META}" --build-arg APOLLO_CLUSTER="${APOLLO_CLUSTER}" --build-arg SPRING_PROFILES="${SPRING_PROFILES}" --build-arg LINUX_TIME_ZONE="${LINUX_TIME_ZONE}" --build-arg JAR_FILE="${JAR_FILE}" --build-arg JVM_TIME_ZONE="${JVM_TIME_ZONE}" -t "${image_name}"  .
docker login -uadmin -pHarbor12345 192.168.122.150
docker push ${image_name} && docker rmi ${image_name}
''' 
    }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }
        stage('Application Deploy'){ 
	        steps {
                retry(2) { sh 'kubectl --kubeconfig /opt/kubernetes/config set image -n ${namespace} deploy/${server_name} ${server_name}=${image_name}' }
                //retry(2) { echo 'test' }
			    updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success')
                   script{
                       env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR
                }
             }  
         }

    }
}

6.1、验证是否可以执行成功
在这里插入图片描述
6.2、k8s查看pod是否正常

[root@kubernetes-master ~]# kubectl get pod -n hc-per
NAME                                  READY   STATUS    RESTARTS      AGE
per-app-service-689756cb69-lcx9x      1/1     Running   0             10m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DevOps环境是一种将开发和运维工作结合起来的方法,可以帮助团队更快地交付高质量的软件。在本文中,我们将介绍如何使用Kubernetes(K8s)搭建DevOps环境。 步骤1:安装Kubernetes 首先,您需要安装Kubernetes。您可以选择使用Minikube或Kubernetes集群。Minikube是一个轻量级的Kubernetes发行版,可以在本地机器上运行。如果您想在云上运行Kubernetes,您可以使用云提供商的托管Kubernetes集群。 步骤2:安装CI / CD工具 接下来,您需要安装CI / CD工具。有许多开源工具可用,如Jenkins,GitLab CI,CircleCI等。您可以选择您最喜欢的工具来为您的环境设置CI / CD流程。 步骤3:创建Kubernetes清单 创建Kubernetes清单来定义您的应用程序和服务。您可以使用YAML文件定义Pod,Deployment,Service等资源。在创建清单时,请确保将CI / CD流程集成到您的清单中。 步骤4:部署应用程序 使用kubectl命令将您的应用程序部署到Kubernetes集群中。您可以使用kubectl create命令来创建新的Pod,Deployment和Service。您还可以使用kubectl apply命令来更新现有资源。 步骤5:设置CI / CD流程 最后,您需要设置CI / CD流程。您可以使用CI / CD工具来构建,测试和部署您的应用程序。在设置流程时,请确保将其与您的Kubernetes清单集成,以便自动化部署。 总结 使用Kubernetes搭建DevOps环境可以帮助您更快地交付高质量的软件。通过将开发和运维工作结合起来,您可以更轻松地管理您的应用程序,并在需要时快速进行更改和更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维那些事~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值