利用coding 部署项目环境

coding-k8s环境搭建

  1. coding

利用coding 部署项目环境_第1张图片

    1. 简介

CODING 是一个面向软件研发团队的研发协作管理平台,提供云原生开发环境、在线编码、代码托管、项目管理、测试管理、持续集成、制品库、持续部署、团队知识库等系列工具产品,帮助研发团队实践敏捷开发与 DevOps。

CODING 成立于 2014 年 2 月,于 2019 年被腾讯收购成为其全资子公司,作为腾讯云官方 DevOps 平台工具向广大开发者及企业研发团队提供服务,支持 SaaS 模式或私有部署模式。

    1. 创建新部署流程

      1. 第一步 创建构建计划

利用coding 部署项目环境_第2张图片

      1. 第二步 选择模板

利用coding 部署项目环境_第3张图片

        1. 后端选java模板

利用coding 部署项目环境_第4张图片

        1. 前端选vue模板

利用coding 部署项目环境_第5张图片

点击确定 触发一次构建

      1. 第三步配置k8s部署

1.2.3.1. 打开部署控制台

利用coding 部署项目环境_第6张图片

1.2.3.2. 创建应用

利用coding 部署项目环境_第7张图片

1.2.3.3. 创建流程并配置

1.2.3.3.1.基础配置

利用coding 部署项目环境_第8张图片

1.2.3.3.2.配置Deployment

利用coding 部署项目环境_第9张图片

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: emarket-productcenter-app

  name: emarket-productcenter-app-deployment

spec:

  replicas: 1 #复制的容器个数 代表相同服务启动的个数 0为停止服务

  selector:

    matchLabels:

      app: emarket-productcenter-app

  template:

    metadata:

      labels:

        app: emarket-productcenter-app

    spec:

      containers:

        - env:

            - name: JAVA_JVM_OPTS

              value: >-

                -server -XX:+UseContainerSupport -XX:InitialRAMPercentage=50.0

                -XX:MaxRAMPercentage=75.0 -XX:MaxMetaspaceSize=512M

                -XX:MetaspaceSize=512M

          image: '${parameters.imageUrl}'

          imagePullPolicy: Always

          name: emarket-productcenter-app

          ports:

            - containerPort: '${parameters.appPort}'

          resources:

            limits:

              cpu: '2'

              memory: 4Gi

            requests:

              cpu: '1'

              memory: 1Gi

1.2.3.3.3. 添加一个分支选择预置条件检查

利用coding 部署项目环境_第10张图片

利用coding 部署项目环境_第11张图片

1.2.3.3.4.配置Service

利用coding 部署项目环境_第12张图片

apiVersion: v1
kind: Service
metadata:
  name: emarket-productcenter-app
  namespace: emarket
spec:
  ports:
    - name: '${parameters.appPort}-${parameters.appPort}-tcp'
      nodePort: '${parameters.appPort}'
      port: '${parameters.appPort}'
      protocol: TCP
      targetPort: '${parameters.appPort}'
  selector:
    app: emarket-productcenter-app
  sessionAffinity: None
  type: NodePort
###############################
如果需要固定服务的暴露端口号 如nginx 释放80端口
                    targetPort:80
###############################



      1. 第四步配置完整的静态 Jenkinsfile

1.2.4.1.配置jenkinsfile

利用coding 部署项目环境_第13张图片

添加的webhook 代码块
 stage('webhook触发部署') {
      steps {
        script {
          def parameters = '{"parameters":{"imageUrl":"'+"${TKE_IMAGE_URL}"+'","appName":"'+"${SERVER_NAME}"+'","appPort":'+"${SERVER_PORT}"+',"isDeployService":"'+"${DEPLOY_FLAG}"+'"}}';
          echo '部署参数:'+parameters;
          sh "curl --location --request POST "+"${WEBHOOK_URL}"+" \
          --header 'Content-Type: application/json' \
          --data-raw '${parameters}'"
        }

      }
    }

添加变量
 WEBHOOK_URL = 'http://devops.hi-coding.com.cn/api/cd/webhooks/webhook/76c3e3b0-c554-4827-af0d-9ce149c160b1'  #自己的webhook 地址
 SERVER_PORT = '36060' #暴露的服务端口
 SERVER_NAME = 'emarket-admin-app' #deployment 名称

1.2.4.2. 选择构建的触发规则

利用coding 部署项目环境_第14张图片

1.2.4.3. 配置变量

利用coding 部署项目环境_第15张图片

利用coding 部署项目环境_第16张图片

    1. 日常升级环境

      1. 第一步 构建计划

利用coding 部署项目环境_第17张图片

选择需要的分支

点“立即后构建”后,显示如下:

利用coding 部署项目环境_第18张图片

构成成后显示如下:

利用coding 部署项目环境_第19张图片

查看一下集群的详细信息:

利用coding 部署项目环境_第20张图片

      1. 第二步 代码合并

      1. 第三步 重新升级项目 如果服务已启动 选择false

利用coding 部署项目环境_第21张图片

1.5 常见问题

工作中大部分的问题尤其是环境部署问题都是路径没有配对,配置文件没有对应到(后端/前端 地址写错 nginx 转发的路径)

1. nginx 需要暴露80端口 所以在coding部署时需要注意前端nginx 暴露的端口号固定为80
        port: 38081 # 暴露出来的端口,可以让客户端访问的端口   
        nodePort: 38081 #ingress 代理的端口。 要规划好,10000 10001 10002
        targetPort: 80 # 容器内部的端口,可以均设置为$servicePort
2. conf 文件 nginx 监听服务的路径 
3. k8s的三种ip  pod IP 是docker网桥分配的IP
               node IP 是服务的可访问IP: node IP+k8s代理的端口号访问 30000-32767(端口范围只能是 30000-32767)
               CLUSTER-IP 只在服务器中的集群可访问 集群与集群调用 使用 Ip+服务暴露的端口号  9914
                转发的时候是 service 服务名称+端口号访问 外网不可直接ping 
4. service  type常用的两种类型
            type: ClusterIP  
            type: NodePort  
5. ClusterIP 随机分配外部访问的端口号  集群中的访问方式是  服务名称(service:端口号port 服务暴露的端口
    NodePort  需要自己固定端口号  集群的访问方式是    服务名称:k8s代理的端口号
6.对于k8s 服务搭建的理解:搭建k8s服务时  需要理解NodePort 和  ClusterIP  的访问方式         
NodePort 指定一个自己的端口号并暴露自己出来 用来被外部访问。而ClusterIP 少一个自己暴露的端口号,系统将随机一个端口号。并且这种服务只能在集群中被访问,外部无法访问   所以就需要一个nginx 能被访问到 并且也可以访问集群中的服务  所以配置集群的时候,前端如果配置nginx 需要把nginx配置成NodePort 类型  。后端的服务都是ClusterIP。
7.nginx 配置location的问题  
        root的处理结果是:root路径 + location路径
        alias的处理结果是:使用alias路径替换location路径

2.堡垒机命令

3.k8s

  1. 3.1 k8s 查看命令

1.查看pod 详细信息 kubectl get pod -n emarket(命名空间) -o wide 利用coding 部署项目环境_第22张图片

  1. 查看service 服务的详细信息 kubectl get svc -n emarket(命名空间) -o wide

# 查看容器详细信息 
    kubectl describe pod podname -n namespace
# 查看服务详细信息
    kubectl describe svc servicename -n namespace

3.kubectl get deployments -n emarket(命名空间) -o wide 查看deployments 服务的情况, 这个能查看服务名称,镜像名称,配合 delete deploymmetns 使用可以彻底删除服务 利用coding 部署项目环境_第23张图片

4.

kubectl exec -it podname -n emarket sh  # 进入pod容器
​

3.2 操作类命令

# k8s 启动yaml脚本
kubectl apply -f emarket-basecenter-deployment.yaml
 # k8s删除yaml脚本
kubectl delete -f emarket-basecenter-deployment.yaml
​

查看日志信息 kubectl logs -f --tail 500 服务名称 -n 命名空间

利用coding 部署项目环境_第24张图片

# 删除容器
 删除pod 容器  删除 service 服务
           kubectl delete pod  pod名称 -n 命名空间 
           kubectl delete svc  svc名称 -n 命名空间
        列如:kubectl delete svc emarket-admin-app -n emarket 

利用coding 部署项目环境_第25张图片

# 杀死deployment 服务       
         kubectl delete deployment  deployment名称 -n 命名空间   # 如果delete pod delete service 不好用 直接 delete  deployment

你可能感兴趣的:(docker,kubernetes)