Tiger后端项目接入K8S手册

一、项目配置

1.1、Dockerfile

  • DEV:https://doc.xxx.com/web/#/26/317
  • TEST:https://doc.xxx.com/web/#/26/328
  • UAT:https://doc.xxx.com/web/#/26/332
FROM 104.168.133.40/xxx/jdk1.8:v1
MAINTAINER damo
ENV LANG en_US.UTF-8
RUN mkdir -p /app && mkdir -p /app/config
WORKDIR /app
COPY app.jar .
EXPOSE 8080
CMD ["/bin/sh","-c","set -e && java -jar app.jar --spring.profiles.active=dev --server.port=8080"]

1.1.1、参数详解:

  • jdk版本:1.8

  • 所有项目端口暴露均为8080;

  • CMD中启动参数可自定义新增,按照自己维护项目需求添加,也可在如下deployment中修改(deployment中的优先级较高);

1.2、k8s.tpl

  • DEV:https://doc.xxx.com/web/#/26/319
  • TEST:https://doc.xxx.com/web/#/26/330
  • UAT:https://doc.xxx.com/web/#/26/334

1.2.1、参数详解:

//K8S中的namespace,区分三个环境,勿自己修改namespace;
apiVersion: v1
kind: Namespace
metadata:
  name: tiger-dev
---
//K8S中的服务暴露端口,如果希望自己的服务可以通过域名或者IP直接访问请增加此条,创建完成后可根据: IP/域名:nodePort/location 
//例如:xxx.xxx.com:33056/tiger-xxx/
apiVersion: v1
kind: Service
metadata:
  name: {{APP_NAME}}-nodeport
  namespace: tiger-dev
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
  selector:
    app: {{APP_NAME}}
---
//K8S内网业务端口,如果不希望自己的服务通过外网访问,删除如上svc。默认服务端口全部为8080;创建完成后可根据: svc-name.{namespace}:8080 
//例如:tiger-xxx.tiger:8080/tiger-xxx/
apiVersion: v1
kind: Service
metadata:
  name: {{APP_NAME}}
  namespace: tiger-dev
spec:
  type: ClusterIP
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: {{APP_NAME}}
---
//应用版本控制器,默认应用端口8080,默认资源:0.3C1G,如需要更多资源请修改如下resources.limits, resources.requests的数值。由于集群资源有限,请合理使用资源;
//默认1副本,可在jenkins发版处灵活配置;
//pod的探针分为就绪探针和探活,分别针对的8080;
//agrs可替代如上dockerfile中的启动参数,
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{APP_NAME}}
  namespace: tiger-dev
spec:
  selector:
    matchLabels:
      app: {{APP_NAME}}
  replicas: {{APP_REPLICAS}}
  template:
    metadata:
      labels:
        app: {{APP_NAME}}
    spec:
      containers:
        - name: {{APP_NAME}}
          env:
            - name: TZ
              value: Asia/Shanghai
          image: {{IMAGE_URL}}:{{IMAGE_TAG}}
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
              name: port
              protocol: TCP
          resources:
            requests:
              cpu: 0.3
              memory: 1Gi
            limits:
              cpu: 0.3
              memory: 1Gi
          readinessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 60
            periodSeconds: 10
          livenessProbe:
            tcpSocket:
              port: 8080
            initialDelaySeconds: 60
            periodSeconds: 10
          command: ["/bin/sh"]
          //请根据环境注意修改此处的namespace,请根据环境注意修改此处的namespace,请根据环境注意修改此处的namespace
          args: ["-c", "set -e && java -jar app.jar --spring.profiles.active={{PROFILES}} --server.port=8080 --spring.cloud.nacos.config.server-addr=http://104.168.133.40:8848 --spring.cloud.nacos.config.namespace=XXXXXXX"]
---
//非gateway项目请删除如下
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
  name: {{APP_NAME}}-ingress
  namespace: tiger-dev
spec:
  rules:
    - host: gateway.jeegc.com
      http:
        paths:
          - backend:
              serviceName: {{APP_NAME}}
              servicePort: 8080
            path: /

1.3、成果:

二、Jenkins发版

主要步骤:

打开jenkins ---> 点击tiger-projectors ---> build with parameters ---> 填写自己项目的信息 ---> 开始构建

2.1、地址:http://104.168.204.108:8888/