使用Docker/K8S/Helm部署项目流程

假设项目已经开发完成,部署流程如下:

一、制作镜像:

1、创建nginx配置文件default.conf

server {
    listen       80;
    server_name  localhost; # 修改为docker服务宿主机的ip
 
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    }
 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

root /usr/share/nginx/html:这个目录和下面创建的Dockerfile中目录要保持一致

2、创建Dockerfile

FROM nginx:1.20.2
 
MAINTAINER test
 
RUN rm /etc/nginx/conf.d/default.conf
 
ADD default.conf /etc/nginx/conf.d/
 
COPY dist/ /usr/share/nginx/html
  • FROM nginx -- 打包容器的底层来刚才先拉取的nginx
  • MAINTAINER beizhu:备注
  • RUN rm /usr/local/nginx/conf/nginx.conf.default:删除目录下的nginx.conf.default 文件
  • ADD nginx.conf.default /usr/local/nginx/conf/:将default.conf复制到/usr/local/nginx/conf/下,用本地的default.conf配置来替换nginx镜像里的默认配置
  • COPY dist/ /usr/local/nginx/html/:将项目根目录下dist文件夹(构建之后才会生成)下的所有文件复制到镜像/usr/local/nginx/html/目录下上一步root地址

3、准备静态模板(项目)

4、打包docker镜像image并推送

docker build -f Dockerfile -t [dockerhub用户名]/web-pro:1.0 .
docker push [dockerhub用户名]/web-pro:1.0

如果是用的阿里云镜像,请参照阿里云镜像推送方式。 

二、K8S部署: 

1、编写 K8S yaml 文件

vi deploy-web.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: shop-web

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: manager-web
  namespace: shop-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: manager-web
  template:
    metadata:
      labels:
        app: manager-web
    spec:
      containers:
      - name: manager-web
        image: registry.cn-hangzhou.aliyuncs.com/samve/k8s:2.0
        ports:
        - name: http
          containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
  name: manager-ui-service
  namespace: shop-web
spec:
  selector:
    app: manager-web
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30001
  type: NodePort

2、部署服务

kubectl apply -f deploy-web.yaml

三、使用helm部署:

1、准备环境 k8s集群


[root@k8s-master-136 ~]# kubectl get node
NAME             STATUS   ROLES                  AGE    VERSION
k8s-master-136   Ready    control-plane,master   296d   v1.21.0
k8s-node-135     Ready    <none>                 296d   v1.21.0
k8s-node-137     Ready    <none>                 296d   v1.21.0

2、创建一个模板的chart包,删除原来的内容,自定义成我们自己需要的内容,后面我们自定义部署的yaml文件

[root@k8s-master-136 ~]# helm create nginx-chart
Creating nginx-chart
[root@k8s-master-136 nginx-chart]# cd ./nginx-chart/templates/
[root@k8s-master-136 templates]# rm -rf ./*

自定义部署的模板yaml文件:

vim templates/nginx-deploy-service.yaml

nginx-deploy-service.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: {{.Values.namespace}}
 
---
 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{.Values.deployment_name}}
  namespace: {{.Values.namespace}}
spec:
  replicas: {{.Values.replicas}}
  selector:
    matchLabels:
      app: {{.Values.pod_label}}
  template:
    metadata:
      labels:
        app: {{.Values.pod_label}}
    spec:
      containers:
      - name: {{.Values.pod_label}}
        image: registry.cn-hangzhou.aliyuncs.com/samve/k8s:2.0
        ports:
        - name: http
          containerPort: {{.Values.containerport}}
---
 
apiVersion: v1
kind: Service
metadata:
  name: {{.Values.service_name}}
  namespace: {{.Values.namespace}}
spec:
  selector:
    app: {{.Values.pod_label}}
  ports:
    - name: http
      protocol: TCP
      port: {{.Values.port}}
      targetPort: {{.Values.targetport}}
      nodePort: {{.Values.nodeport}}
  type: NodePort
[root@k8s-master-136 nginx-chart]# vim values.yaml 

values.yaml

deployment_name: manager-web
service_name: manager-web-service
namespace: shop-web
pod_label: manager-web
replicas: 2
port: 80
targetport: 80
containerport: 80
nodeport: 30002

3、通过chart包安装一个release实例

[root@k8s-master-136 ~]# helm install nginx-service ./nginx-chart
NAME: nginx-service
LAST DEPLOYED: Sun Nov 19 21:50:28 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@k8s-master-136 nginx-chart]# vim values.yaml 
[root@k8s-master-136 nginx-chart]# helm list
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
nginx-service   default         1               2023-11-19 21:50:28.744590789 +0800 CST deployed        nginx-chart-0.1.0       1.16.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/166987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

element-ui中怎样使用iconfont的图标

1 登录 https://www.iconfont.cn/ 2 搜索合适的图 这里可以找到这个图所在的图库。这样就可以一次查找到对应的所有同款图标 3 选择同款加入购物车 4 将购物车的icon加入项目&#xff0c;注意是新建项目&#xff0c;除非你是确定需要前面已经加过的icon 5 下载icon 选择fon…

日期相关整理

3214. 节日 有一类节日的日期并不是固定的&#xff0c;而是以“a 月的第 b 个星期 c ”的形式定下来的&#xff0c;比如说母亲节就定为每年的五月的第二个星期日。 现在&#xff0c;给你 a,b,c 和 y1,y2&#xff0c;希望你输出从公元 y1 年到公元 y2 年间的每年的 a 月的第 b 个…

为什么越来越多人选择学习Python?

今天我要和大家聊聊一个很热门的话题&#xff1a;为什么那么多人学习Python&#xff1f; 最近小编发现一个有趣的现象&#xff0c;高中生们居然在学校课程里学Python&#xff0c;这不仅给我们这些已经毕业多年的人当头一棒&#xff0c;更是彻底颠覆了传统观念。现在的高中生竟…

Embedding技术与应用(4): Embedding应用工程探析

编者按&#xff1a;随着互联网内容数量的急剧增长&#xff0c;个性化推荐已成为各大科技公司的核心竞争力之一。那么&#xff0c;如何构建一个可靠、高效的基于嵌入技术的推荐系统&#xff0c;使其能够在实际生产环境中正常运行呢&#xff1f;这是所有从业者都关心的问题。 本文…

(一)RISC-V 指令集及寄存器介绍

1. RISC-V指令集介绍 RISC-V 念作 “risk-five”&#xff0c;代表着 Berkeley 所研发的第五代精简指令集。 该项目 2010 年始于加州大学伯克利&#xff08;Berkeley&#xff09;分校&#xff0c;希望选择一款 ISA用于科研和教学。经过前期多年的研究和选型&#xff0c;最终决定…

UE TransformVector 学习笔记

假如算现在枪的位置&#xff0c;那么就是先拿人的位置再拿枪在本地的相对位置相加&#xff0c;就是枪的位置&#xff0c;也就是枪在场景中的位置&#xff0c;那么这里还可以写成Actor的变化和枪的相对位置连在TransformVector上&#xff0c;返回的就是枪的场景位置 这里做反算&…

统一身份认证平台之SSO建设

前言 上篇说道Passwordless无密码技术&#xff0c;也提到了数字时代密码管理的难度&#xff0c;其实在日常的生活中&#xff0c;很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆&#xff0c;很多人都在不同的站点使用相同的用户名和密码&#xff0c;虽然也可以减少…

PS太难学,这款软件更简单!——Lightroom

今天&#xff0c;我们来谈谈Adobe Photoshop Lightroom软件&#xff0c;它是当今数字拍摄工作流程中不可或缺的一部分。现在您可以快速导入、处理、管理和展示图像 — 从一张照片到所有照片。增强的校正工具、强大的组织功能以及灵活的打印选项可以帮助您加快速度。 Adobe Pho…

redis集群(Cluster)

文章目录 前言一、资源准备二、redis安装二、启动redis三、构建集群 前言 redis 集群三种方式&#xff1a;主从复制&#xff0c;哨兵模式&#xff0c;Cluster集群。 本文只介绍Cluster集群部署方案。 一、资源准备 服务器1台&#xff08;正常应该是3台,每台2个节点&#xff…

源启容器平台KubeGien 打造云原生转型的破浪之舰

云原生是应用上云的标准路径&#xff0c;也是未来发展大的趋势。如何将业务平滑过渡到云上&#xff1f;怎样应对上云期间的各项挑战呢&#xff1f;中电金信基于金融级数字底座“源启”打造了一款非常稳定可靠、多云异构、安全可控、开放灵活的容器平台产品——源启容器平台Kube…

Threejs_03 全屏+响应式画布实现

咋控制全屏呢&#xff1f; 1.做一个用来点击的按钮 var btn document.createElement("button"); btn.innerHTML "点击全屏"; btn.style.position "absolute"; btn.style.top "10px"; btn.style.left "10px"; btn.sty…

纯JS,RSA,AES,公钥,私钥生成及加解密

通过网络找的JS源文件&#xff0c;修改后使用&#xff0c;包含RSA 密匙对生成 及AES 加解密 涉及的JS源文件 下载 GitHub - cgrlancer/RSA-AES: 纯js,RSA,AES前端加解密 前端引用 import {generateRsaKeyWithPKCS8,encryptByRSA,decryptByRSA,encrypt,decrypt,testRsa} fr…

【Java程序员面试专栏 专业技能篇】Java SE核心面试指引(一):基础知识考察

关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第一部分:基础知识考察,子节点表示追问或同级提问 基本概念 …

ICCV 2023|小红书 4 篇入选论文亮点解读,「开集视频目标分割」获得 Oral

近日&#xff0c;ICCV 正式揭晓 2023 年论文接收结果&#xff0c;小红书技术团队共有 4 篇论文入选&#xff0c;其中 1 篇为 Oral 论文&#xff08;Oral 接收率仅为 1.88%&#xff09;&#xff0c;最新科研成果涵盖了视频目标分割、3D 数字人重建、人体运动预测、视频分析等领域…

国产化区块链平台-FISCO BCOS 区块链

目录 FISCO BCOS 版本信息 系统概述 关键特性 组件服务 开发运维工具 FISCO BCOS作为一种企业级区块链平台&#xff0c;为企业和组织提供了高性能、隐私保护和可定制的区块链解决方案。其强大的架构和丰富的功能使得企业能够在安全可信的环境中开展区块链应用&#xff0…

Excel筛选怎么用?6种基本用法帮你提高效率!

“我在使用Excel进行数据处理时&#xff0c;需要对某些数据进行筛选&#xff0c;但是不知道应该如何使用筛选功能&#xff0c;有没有比较简单的使用方法呀&#xff1f;” Excel中的筛选功能是数据处理和分析中的重要工具&#xff0c;能够帮助用户快速找到所需的数据。但是有很多…

YOLOv8改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv8的重大改进&#xff0c;特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体&#xff0c;如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU&#xff0c;还融合了“Focus”思想&#xff0c;创造了一系列新的损失函数。这些组合形式的…

Taro安装及使用

安装及使用 安装​ Taro 项目基于 node&#xff0c;请确保已具备较新的 node 环境&#xff08;>12.0.0&#xff09;&#xff0c;推荐使用 node 版本管理工具 nvm 来管理 node&#xff0c;这样不仅可以很方便地切换 node 版本&#xff0c;而且全局安装时候也不用加 sudo 了…

[解决] 问题:ImportError: cannot import name ‘Callable‘ from ‘collections‘

问题 我在运行yolov8的代码时&#xff0c;出现了ImportError: cannot import name Callable from collections的错误 原因 版本问题:以下collections的方法都在Python3.10版本后被取消了 ["Awaitable", "Coroutine", "AsyncIterable", "A…