部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)

正如后来的考虑, 如果外接maven私库照理说是ok的, 这样去掉volume的设计整个流程更加的自动化标准化.
开搞

第一步先部署一个nexus

yaml文件如下:

apiVersion: v1
kind: Namespace
metadata:
  name: nexus

---

apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: nexus
  name: nexus
  namespace: nexus
spec:
  type: NodePort
  ports:
    - port: 8081
      targetPort: 8081
      nodePort: 30003
  selector:
    k8s-app: nexus

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: nexus
  name: nexus
  namespace: nexus
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: nexus
  template:
    metadata:
      labels:
        k8s-app: nexus
    spec:
      nodeName: ltwwapp01
      containers:
        - name: nexus
          image: sonatype/nexus3
          imagePullPolicy: Always
          ports:
            - containerPort: 8081
              protocol: TCP
          env:
          # 冒号后面必须加空格
            - name: TZ
              value: "Asia/Shanghai"

注意这里加了环境变量, 是必须加空格的, 不然读取失败.
然后惯例,把oracle的jar包手动上传. 不赘述,怎么用之前的文章也说过

第二步,把要验证的项目deploy到nexus

然后把workbench里的项目 git clone到自己本地, 然后修改maven的setting.xml,主要是如下几处,之前应该也说过
部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)_第1张图片
然后执行 mvn deploy,jar就发布到远程库了
部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)_第2张图片

第三步 删掉原来的ks,新弄一个连接nexus的ks

kubectl delete namespace kie-server-alone
然后新的yaml如下

apiVersion: v1
kind: Namespace
metadata:
  name: kie-server-nexus

---

apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: kie-server-nexus
  name: kie-server-nexus
  namespace: kie-server-nexus
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30002
  selector:
    k8s-app: kie-server-nexus

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: kie-server-nexus
  name: kie-server-nexus
  namespace: kie-server-nexus
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: kie-server-nexus
  template:
    metadata:
      labels:
        k8s-app: kie-server-nexus
    spec:
      nodeName: ltwwapp01
       
      containers:
        - name: kie-server-nexus
          image: quay.io/kiegroup/kie-server-showcase:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              protocol: TCP
          env:
            - name: KIE_MAVEN_REPO
              value: "http://172.16.251.151:30003/repository/maven-public/"
            - name: KIE_MAVEN_REPO_USER
              value: "admin"
            - name: KIE_MAVEN_REPO_PASSWORD
              value: "123456789admin"
            - name: TZ  
              value: "Asia/Shanghai"

然后进入这个全新的ks ,仅把ks xx.xml改了, 然后重启wildfly,
然后postman验证
部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)_第3张图片
完美.

这样就很好了,少掉维护volume, 所有pod统一使用nexus,后续的发布流程只需要正常的开发, mvn deploy自动把项目成果打包到nexus, 测试环境需要发布什么项目, 只需要进入到pod里修改xml, 重启下就ok了, 最后一步看似也不太好, 但其实集群发布这应该是最好的方式了, 因为如果发送put命令来发布, 哪个pod处理请求是个很难处理的事情, 特别是k8s和containerd不支持暂停 停止的概念.

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