`
mmBlue
  • 浏览: 167715 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Git+Jenkins+Kubernetes+Harbor+consul+SpringCloud

阅读更多

 目的:学习、实践K8S

 

各组件介绍:

1. git  无

2. Harbor当镜像仓库,如果你的k8s master slave在一台机器上则不用搭建

3. jenkins 做CI CD,从GIT拉取代码,打包,生成docker镜像、推送Harbor仓库,然后deploy服务到k8s

4. consul 用来做服务发现注册中心和配置中心

5. springcloud 做2个demo ,一个product 服务端,一个 cust 消费端,保证能动态扩展

最后,将部署到k8s环境中,有dev、test2套环境,用户最终通过 traefik做LB

如果单个来看,都很简单。关键是和K8S结合,感受K8S之美,第3条也是这次研究的目的。

 

组件安装:略

我的设计思路:

1. springcloud 工程存放2个 yaml 文件,一份是deployment,一份service

    将namespace、image用占位符填充(后面 在jenkins里面的shell中替换)



 

这里说明下args 里面为何写了2个参数,我的预期设计是这样的:

一般公司会架设一个DNS服务器,开发的同学连consul的时候是 dev.consul.com

但是部署到K8S后,dev.consul.com在pod里面是无法访问的,pod里面应该访问的serviceName

当然你可以把serviceName都写一样,但是并不好。所以利用args进行了一次重写,这种传参是springboot里面内容了,也可以用env方式。

 

svc.yaml



 

2. jenkins中调用一个自己写的shell脚本,执行的时候传入2个参数。 比如:

     /opt/jenkins/push.sh dev appName  其中 dev 表示开发环境、appName 表示工程名

    重点在这个shell是怎么写的。

#!/bin/bash

namespace=$1
name=$2

echo ""
echo "=================== 1. maven ${JOB_NAME} ============="
echo ""
docker run --rm --name mvn  -v /mnt/maven:/root/.m2 -v $WORKSPACE:/usr/src/mvn -w /usr/src/mvn/ maven:3.3.9-jdk-8 mvn clean insta
ll

echo ""
echo "=================== 2.build docker image =================="
echo ""
DOCKER_IMAGE=www.harbor.host/library/$name:`date +%y%m%d-%H-%M`
docker build -t $DOCKER_IMAGE $WORKSPACE/.

echo ""
echo "=================== 3. push harbor ================="
echo ""
docker login -u name -p pwd www.harbor.host
docker push $DOCKER_IMAGE
docker logout www.harbor.host
echo ""
echo "=================== 4.deploy kubernetes =============="
echo ""
sed -i "s|\$NS|${namespace}|g" $WORKSPACE/kubernetes.yaml
sed -i "s|\$IMAGE|${DOCKER_IMAGE}|g" $WORKSPACE/kubernetes.yaml
sed -i "s|\$NS|${namespace}|g" $WORKSPACE/svc.yaml

if kubectl get svc -n $namespace | grep $name; then
    echo "has svc ${name}"
else
    kubectl create -f $WORKSPACE/svc.yaml
fi

kubectl apply -f $WORKSPACE/kubernetes.yaml

 

   

其实写到这里,老司机们应该看懂了,这里有一点不好,那就是jenkins部署在物理机上,应该是部署到kubernetes里面,然后通过API访问,主要是找的插件都不好用,所以就放物理机了。

 

另外还有一点,当你部署了一个statefulsets的应用的时候,比如mongo,在JAVA程序里面是无法直接通过svcName ping通的,因为这是一个无头服务。思路是 JAVA程序启动的时候,访问k8s的 endpoints API 就可以拿到。 代码类似下面:



 

当然要想访问API,记得加上serviceAccountName,和RBAC赋权。

 

实现是没什么时间,以后有空了再细化吧。

 

 

 

  • 大小: 26.6 KB
  • 大小: 11.4 KB
  • 大小: 18 KB
分享到:
评论

相关推荐

    git+gerrit+jenkins+sonar持续集成环境大家资料

    git+gerrit+jenkins+sonar持续集成环境大家资料,具体搭建步骤请参考本人博客。 里面还有一些插件,方便大家少走弯路

    GIT+Gerrit+Jenkins基础操作

    GIT+Gerrit+Jenkins基础操作 

    Git+Jenkins 基本使用案例

    【Git+Jenkins基本使用案例】的描述涉及到了在IT行业中常见的版本控制和持续集成/持续部署(CI/CD)工具的使用。本文主要讲解如何部署Git、GitLab和Subversion作为代码管理系统,并结合Jenkins实现自动化部署。 首先...

    Git+Jenkins实现自动化构建与持续集成(git+jenkins+intelij)

    ### Git+Jenkins实现自动化构建与持续集成的关键知识点 #### 持续集成的基本概念 持续集成(Continuous Integration,简称CI)是一种软件开发实践,它要求团队成员经常性地(通常每天至少一次)将他们的工作集成到...

    jenkins+git+maven

    jenkins+git+maven搭建自动构建项目过程,其中部分简单安装省略

    git+jenkins+registry+K8S.docx

    git+jenkins+registry+K8S 综合配置文档

    Git+Jenkins实战(一)资源.rar

    在Git+Jenkins实战中,首先需要在Jenkins服务器上安装Git插件,以便Jenkins能够识别和处理Git仓库。接着,配置Git源代码管理,指定项目仓库的URL,设置访问仓库的凭证,如用户名和API Token。 然后,创建一个新的...

    Git+Jenkins基本使用资源

    Git 和 Jenkins 是两种在 IT 行业中广泛使用的工具,它们分别是版本控制系统和持续集成/持续部署(CI/CD)的利器。Git 用于管理软件开发中的代码版本,而 Jenkins 则是自动化流程的平台,尤其适用于构建、测试和部署...

    Git+Jenkins+Unittest+bs4爬虫+Page Object Python架构师级接口测试高级课

    Git+Jenkins+Unittest+bs4爬虫+Page Object Python架构师级接口测试高级课

    Git + Jenkins + SonarQube 敏捷开发持续集成环境

    ### Git + Jenkins + SonarQube 敏捷开发持续集成环境 #### 一、环境搭建与配置 在构建一个基于Git、Jenkins和SonarQube的敏捷开发持续集成环境时,首先要确保基础环境的搭建。根据提供的内容,这里假设的基础环境...

    K8S+DockerCE+Jenkins+Maven+Gitlab自动化打包部署

    "K8S+DockerCE+Jenkins+Maven+Gitlab自动化打包部署" 以下是从给定的文件中生成的知识点: 一、概述 * 自动化打包部署是指将程序从开发到部署的整个流程自动化,以提高研发效率和生产效率。 * 本文将介绍使用 K8S...

    Gitllab+Jenkins+Docker+Harbor 自动化部署流程

    Gitllab+Jenkins+Docker+Harbor 自动化部署流程 一、 版本控制系统 Gitllab Gitllab 是一个基于 web 的 Git 仓库管理系统,提供了一个强大且灵活的平台来管理 Git 项目。 Gitllab 允许用户创建、管理和共享 Git ...

    Git+SonarQube+Jenkins环境配置流程

    Git+SonarQube+Jenkins环境配置流程详细讲解了如何组建由Git、SonarQube、Jenkins集成的代码开发系统;详细讲解了下载、搭建、配置等关键步骤,可根据文档内容进行安装配置。SonarQube 是一个开源的代码分析平台, ...

    ASP.NET Core+Docker+Jenkins实现持续集成的完整实例

    主要给大家介绍了关于ASP.NET Core+Docker+Jenkins实现持续集成的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Jenkins+Git+Maven+Shell+Tomcat持续集成环境

    Jenkins+Git+Maven+Shell+Tomcat 持续集成环境 本文主要讲述如何使用 Jenkins、Git、Maven、Shell 和 Tomcat 搭建一个持续集成环境,以提高软件开发效率和质量。首先,Jenkins 是一个开源软件项目,旨在提供一个...

    实战Docker+Jenkins+Git+Registry构建持续集成环境

    实战 Docker+Jenkins+Git+Registry 构建持续集成环境 本文将详细介绍如何使用 Docker、Jenkins、Git 和 Registry 构建持续集成环境,实现自动化的 Java 项目发布流程。 知识点 1: Jenkins 简介 Jenkins 是一个...

    K8S+Jenkins+Harbor+Docker+gitlab集群部署所需资源

    K8S+Jenkins+Harbor+Docker+gitlab集群部署所需的所有资源

    jenkins+git+maven+tomcat

    Jenkins+Git+Maven+Tomcat 自动化集成环境搭建 本文将详细介绍如何使用 Jenkins、Git、Maven 和 Tomcat 实现自动化构建、部署 web 应用程序的集成环境。 环境安装 首先,我们需要安装以下环境: 1. 操作系统:...

    gitlab+jenkins+docker自动化部署脚本

    gitlab+jenkins+docker自动化部署脚本,采用shell与python开发,其中python部分均为封装成型的逻辑,只接受shell传参就能完成项目构建

    postman+newman+jenkins+git APItest自动化集成测试 ppt文档

    "Postman+Newman+Jenkins+Git API测试自动化集成测试" Postman是一款功能强大的API测试工具,能够帮助开发者快速测试和验证API。然而,在实际应用中,手动点击Runner进行测试的方式不够灵活和高效,因此引入了...

Global site tag (gtag.js) - Google Analytics