利用coding 部署项目环境

coding-k8s环境搭建

  1. coding

    1. 简介

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

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

    1. 创建新部署流程

      1. 第一步 创建构建计划

      1. 第二步 选择模板

        1. 后端选java模板

        1. 前端选vue模板

点击确定 触发一次构建

      1. 第三步配置k8s部署

1.2.3.1. 打开部署控制台

1.2.3.2. 创建应用

1.2.3.3. 创建流程并配置

1.2.3.3.1.基础配置

1.2.3.3.2.配置Deployment

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. 添加一个分支选择预置条件检查

1.2.3.3.4.配置Service

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

添加的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. 选择构建的触发规则

1.2.4.3. 配置变量

    1. 日常升级环境

      1. 第一步 构建计划

选择需要的分支

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

构成成后显示如下:

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

      1. 第二步 代码合并

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

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

  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 使用可以彻底删除服务

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 命名空间

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

# 杀死deployment 服务       
         kubectl delete deployment  deployment名称 -n 命名空间   # 如果delete pod delete service 不好用 直接 delete  deployment
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值