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/
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!