【四】将vue部署到k8s中

准备dockerfile和jenkinsfile还有yml文件

复制代码
因为我前三步将其他的都弄好了,我现在的目的只是为了简单部署上去,所以没做其他深入研究配置,我的简单代码:https://gitee.com/feiminjie/helloworldfront
我准备的dockerfile
bash 复制代码
# 使用官方 Node.js 镜像
FROM node:14
# 设置工作目录
WORKDIR /appf
# 将项目文件复制到容器中
COPY . .
# 安装项目依赖
RUN npm install
# 构建生产环境
RUN npm run build
# 暴露端口
EXPOSE 80
# 启动应用
CMD ["npm", "run", "start"]

我准备的Jenkinsfile

bash 复制代码
// 所有的脚本命令都放在当前的pipline中
pipeline{
	// 制定任务在哪个集群节点中执行
	agent any
	
	// 声明全局变量,方便后面使用
	environment {
		key = 'value'
	}
	
	stages {
        	stage('拉取git仓库代码') {
            		steps {
checkout scmGit(branches: [[name: '${tag}']], extensions: [], userRemoteConfigs: [[credentialsId: 'ee882b26-32f7-487f-af8b-8ce97ae6d923', url: 'https://gitee.com/feiminjie/helloworldfront.git']])
            }
        }
             stage('生成docker镜像') {
            		steps {
            		sh 'docker build -t hellofront:$tag .'
            }
        }
            stage('推送harbor') {
            		steps {
            		    sh '''docker login -u admin -p Harbor12345 103.39.222.98:80
docker tag hellofront:$tag 103.39.222.98:80/hellofront/hellofront:$tag
docker push 103.39.222.98:80/hellofront/hellofront:$tag'''
            		}
        	}
            stage('推送yml到master') {
            		steps {
            		    sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'pipefront.yml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            		}
        	}
        	stage('执行yml文件') {
            		steps {
            		sh '''ssh root@103.39.226.71 kubectl apply -f /usr/local/k8s/pipefront.yml
ssh root@103.39.226.71 kubectl rollout restart deployment helloworldfront-deployment -n front'''
            		}
        	}
     }
}

里面配置和后端写的区分开就行了

我准备的 front.yml
bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: front
  name: helloworldfront-deployment
  labels:
    app: helloworldfront-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: helloworldfront
  template:
    metadata:
      labels:
        app: helloworldfront
    spec:
      containers:
      - name: helloworldfront
        image: 103.39.222.98:80/hellofront/hellofront:v4.0.0
        imagePullPolicy: Always
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: harbor-token
---
apiVersion: v1
kind: Service
metadata:
  namespace: front
  name: helloworldfront-deployment
  labels:
    app: helloworldfront-deployment
spec:
  selector:
    app: helloworldfront
  ports:
  - port: 80
    targetPort: 80
  type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  labels:
    app: helloworldfront-deployment
    k8s.kuboard.cn/name: helloworldfront-deployment
  name: helloworldfront-deployment
  namespace: front
spec:
  defaultBackend:
    service:
      name: helloworldfront-deployment
      port:
        number: 80
  ingressClassName: ingress
  rules:
    - host: bomj.shop
      http:
        paths:
          - backend:
              service:
                name: helloworldfront-deployment
                port:
                  number: 80
            path: /
            pathType: Prefix

kuboard配置

1、创建上面yml文件中的命名空间

2、在front命名空间内创建密文

步骤都和前面三步中的步骤差不多,如果有什么报错对着日志改一改就可以了。

任意节点+端口就可以访问了

相关推荐
咖啡の猫26 分钟前
Shell脚本-for循环应用案例
前端·chrome
MANONGMN1 小时前
Kubernetes(K8s)常用命令全解析:从基础到进阶
云原生·容器·kubernetes
Johny_Zhao2 小时前
基于 Docker 的 LLaMA-Factory 全流程部署指南
linux·网络·网络安全·信息安全·kubernetes·云计算·containerd·yum源·系统运维·llama-factory
百万蹄蹄向前冲3 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5813 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路3 小时前
GeoTools 读取影像元数据
前端
ssshooter4 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
Jerry5 小时前
Jetpack Compose 中的状态
前端
陈陈CHENCHEN5 小时前
【Kubernetes】在 K8s 上部署 Prometheus
kubernetes·prometheus
dae bal5 小时前
关于RSA和AES加密
前端·vue.js