栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k8s学习笔记——cicd前手动部署测试

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s学习笔记——cicd前手动部署测试

为能搞明白使用jenkins、harbor、gitlab进行CICD部署的流程,我先进行了一下不使用其软件进行部署的过程,明白了这个过程,在配置上述自动化部署的工具时也就知道了大体回路。

以部署一个使用springboot做的helloword程序为例

1、将spingboot项目先用maven打包成jar文件

在项目目录下使用命令mvn clean package就可以在target目录下看到生成的helloworld.jar文件,

使用java -jar helloword.jar命令运行一下看能不能正常使用。没问题进行下一步

2、生成docker image文件

springboot用到了jdk环境镜像,首先使用docker本地拉取jdk镜像

sudo docker pull openjdk:8-alpine

编写Dockerfile文件

FROM openjdk:8-alpine

COPY target/helloworld.jar /springboot-web.jar

ENTRYPOINT ["java", "-jar", "/springboot-web.jar"]

打包生成镜像

sudo docker build -t springboot-web:v1 .

3、将镜像推到私有的harbor仓库

sudo docker tag springboot-web:v1 core.harbor.shell.com:32042/library/springboot-web:v1

sudo docker login -u admin core.harbor.shell.com:32042

//登录成功后

sudo docker push core.harbor.shell.com:32042/library/springboot-web:v1

查看harbor仓库里面library目录下要是有springboot-web镜像说明推送成功

4、编写k8s部署脚本deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: springboot-web
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: springboot-web
      release: canary
  template:
    metadata:
      labels:
        app: springboot-web
        release: canary
    spec:   
      containers:
      - name: springboot-web
        image: core.harbor.shell.com:32042/library/springboot-web:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 8084

---

apiVersion: v1
kind: Service
metadata:
  name: springboot-web
  namespace: default
spec:
  selector:
    app: springboot-web
    release: canary
  ports:
  - name: http
    targetPort: 8084
    port: 8084

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  namespace: default
spec:
  ingressClassName: traefik
  rules:
  - host: springboot.shell.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: springboot-web
            port:
              name: http

然后部署kubectl apply -f deploy.yaml

这里需要注意如果直接就这么部署pod会拉不下镜像,显示no such host,这是因为k8s部署pod的节点主机没有配置harbor的host,需要在/etc/hosts里添加上core.harbor.shell.com的地址解析。

除此之外,在部署时还会报X509权限错误,没有拉取镜像的权限。

我看网上好多说需要配置imagePullSecrets和docker访问的secret,我尝试了一下并不管用,目前还不知道什么问题。我的解决办法:k8s部署pod是在分配的节点上使用docker拉取镜像,于是就在其节点上增加docker访问harbor的配置(CSDN),配置完就可以正常拉取了,我这里建议将所有worker节点都做一下相关配置

查看ingress里面设置的域名,将访问的客户端机器配置相关域名的解析,就可以正常访问springboot项目编写的服务了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号