微服务架构从入门到精通之DevOps实践篇(十) Eureka Server构建和部署

基础设施已经搭建完毕,我们先构建和部署注册中心Eureka Server。

一、创建GitLab项目

1.1 创建devops组

1.2 创建eureka-server工程

1.3 配置 Group  环境变量

到 GitLab > Groups > eureka-server > Settings > CI/CD > Variable里设置 “.gitlab-ci.yml” 里要用到的环境变量:

  • DOCKER_HUB_REPO:保存 Spring Cloud应用的 docker镜像库,本文使用 devops做为持续集成的库标签: bigdatafly/devops

二、提交代码和配置文件

整个工程的目录结构如下:

通过git命令把工程push到gitlab,其中,Bigdatafly/devops 为docker hub,用户可以采用自己搭建的私服Registry。

2.1 Eureka Server.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
        public static void main(String[] args) {
         SpringApplication.run(EurekaServerApplication.class, args);
        }
}

2.2 Application.yml

# eureka-server
server:
  port: ${port:8761} # from env variable
eureka:
  instance:
    hostname: ${hostname:localhost} # from env variable
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

2.3 .gitlab-ci.yml

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=/Users/zhuxihua/repository"
  DOCKER_DRIVER: overlay
  PROJECT_NAME: $CI_PROJECT_NAME
  PROJECT_VERSION: "0.0.2"
stages:
  - build
  - package
  - deploy

maven-build:
  image: bigdatafly/maven:mvn3.5.4-jdk8-alpine
  stage: build
  script: 
    - mvn package -B -DskipTests   # 跳过测试节省时间
    - mv target/$CI_PROJECT_NAME*.jar target/app.jar
  artifacts:
    paths:
      - target/*.jar
docker-build:
  stage: package
  script:
    - docker login -u xxxxx -p xxxxx
    - docker build -t $DOCKER_HUB_REPO:$PROJECT_NAME-$PROJECT_VERSION . 
    - docker push $DOCKER_HUB_REPO:$PROJECT_NAME-$PROJECT_VERSION  
k8s-deploy:
  stage: deploy
  image: 
    name: bigdatafly/devops:k8s-kubectl-1.11.0  
    entrypoint: [""]           # 覆盖原镜像的entrypoint,要不然会直接退出
  script:
    - kubectl apply -f Deployment.yaml        # 发布应用到k8s集群
    - kubectl set env deploy/eureka-server DEPLOY_DATE="$(date)"  

2.4 Dockerfile

FROM bigdatafly/jdk:8u191
ADD /target/app.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

2.5 Deployment.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eureka-server
  labels:
    app: eureka-server
    version: 0.0.2
spec:
  selector:
    matchLabels:
      app: eureka-server
  replicas: 1
  template:
    metadata:
      labels:
        app: eureka-server
    spec:
      containers:
      - name: eureka-server
        image: bigdatafly/devops:eureka-server-0.0.2
        imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: eureka
  labels:
    app: eureka
    version: 0.0.2
spec:
  selector:
    app: eureka-server
  type: LoadBalancer      
  ports:
  - name: tcp-8761-8761
    protocol: TCP
    port: 8761
    targetPort: 8761

上传完毕,配置了autodevops,giltab-ci会自动进行CI/CD过程 

三、GitLab-CI过程

    提交项目文件后,.gitlab-ci.yml会触发 GitLab CI运行,可以到 GitLab > Admin Area >Pipelines 查看打包部署结果。

3.1 GitLab Pipelines

如果有运行失败,可以点击进去查看失败原因。

3.2 maven-build

为了maven构建速度更快,最好采用阿里的maven仓库

3.2 docker-package

3.3 k8s-deploy

 

3.4 过程成功结束

3.5 kubernetes Dashboard,可以看到成功的部署列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值