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

news2024/11/14 1:23:15

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

一、制作镜像:

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器端请求伪造(SSRF)

概念 SSRF(Server-Side Request Forgery&#xff0c;服务器端请求伪造) 是一种由攻击者构造形成的由服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF是要攻击目标网站的内部系统。&#xff08;因为内部系统无法从外网访问&#xff0c;所以要把目标网站当做中间人来…

盼望许久的百度熊终于收到了

文|洪生鹏 我怀着激动的心情&#xff0c;终于收到了百度熊礼品。 在我想象中&#xff0c;这只熊应该很大&#xff0c;能够填满我的怀抱。 但当我打开礼盒的那一刻&#xff0c;我有些惊讶。 它居然这么小&#xff0c;与我预期的相差甚远。 不过&#xff0c;当我们仔细一看&#…

大厂数仓专家实战分享:企业级埋点管理与应用

一.什么是埋点 埋点&#xff08;Event Tracking&#xff09;&#xff0c;是互联网数据采集工作中的一个俗称&#xff0c;正式应该叫事件跟踪&#xff0c;英文为 Event Tracking&#xff0c;它主要是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。 二.埋…

中国互联网格局改变的重点,在于真正走向海外,打破美国垄断

媒体报道指字节跳动上半年的营收达到540亿美元&#xff0c;超过了其他互联网企业&#xff0c;这是国内互联网行业格局发生重大变化的证明&#xff0c;那么是什么原因导致了这一格局的改变呢&#xff1f; 中国互联网的发展也有20多年了&#xff0c;这20多年涌现了一大批互联网企…

文件夹改名:批量随机重命名文件夹,让整理更轻松

在日常生活和工作中&#xff0c;文件夹重命名是一件非常常见的事情。有时候&#xff0c;可能需要批量处理文件夹&#xff0c;为其加上统一的名称&#xff0c;或者按照某种特定的规则来重命名。然而&#xff0c;当我们手动进行这些操作时&#xff0c;会消耗大量的时间和精力。这…

Redis:Java客户端

前言 "在当今大数据和高并发的应用场景下&#xff0c;对于数据缓存和高效访问的需求日益增长。而Redis作为一款高性能的内存数据库&#xff0c;以其快速的读写能力和丰富的数据结构成为众多应用的首选。与此同时&#xff0c;Java作为广泛应用于企业级开发的编程语言&…

三极管-开关电路-电路电子-嵌入式开发-物联网开发-电子元件

一、概述 本文我们主要讲解电子电路中十分重要的元件--三极管。三极管常常被用来当作开关或作为放大电流的作用&#xff0c;下面我们将主要围绕着其作为开关电路的使用来介绍三极管。 二、分类 学习三极管前&#xff0c;我们必须认识三极管的三级&#xff0c;包含箭头的一端为发…

【论文阅读笔记】Deep learning for time series classification: a review

【论文阅读笔记】Deep learning for time series classification: a review 摘要 在这篇文章中&#xff0c;作者通过对TSC的最新DNN架构进行实证研究&#xff0c;探讨了深度学习算法在TSC中的当前最新性能。文章提供了对DNNs在TSC的统一分类体系下在各种时间序列领域中的最成功…

(1)(1.17) Maxbotix 模拟声纳

文章目录 前言 1 连接到Pixhawk 2 通过Mission Planner进行设置 3 测试传感器 4 参数说明 前言 XL-Maxbotix-EZ 系列模拟声纳&#xff08;XL-MaxSonar-EZ0、EZ4 和 EZL0&#xff09;是相对便宜的短距离&#xff08;7m 至 10m&#xff09;测距仪&#xff0c;主要设计用于室…

Linux系统中Qt应用程序确保使用集成显卡进行图形渲染

背景&#xff1a;有一个Qt开发的应用程序&#xff0c;使用了Qt的OpenGL模块来渲染QImage加载的图片&#xff0c;当应用程序切换到图片渲染界面时&#xff0c;系统CPU占用率立马到了100%多&#xff0c;容易造成程序卡顿&#xff0c;可设备是自带集成显卡的&#xff0c;期望效果是…

7 Redis的PipeLine

PipeLine的作用是批量执行命令 redis的性能瓶颈基本上是网络 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.…

牛客::栈的压入、弹出序列

栈的压入、弹出序列 题目 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xff0c;序列4,5,3,2,1是该压栈序列对应的一个弹出序列&…

ShardingSphere-JDBC 之数据分片详细讲解

文章目录 单一节点存储问题数据分片垂直分片水平分片 ShardingSphere-JDBC 数据分片核心概念表相关概念数据节点分片行表达式分布式主键 ShardingSphere-JDBC 数据分片原理ShardingSphere-JDBC 数据分片实现示例1、数据库表创建2、引入依赖3、配置参数4、代码示例 ShardingSphe…

FPGA实现平衡小车(文末开源!!)

FPGA平衡小车 一. 硬件介绍 底板资源: TB6612电机驱动芯片 * 2 MPU6050陀螺仪 WS2812 RGB彩色灯 * 4 红外接收头 ESP-01S WIFI 核心板 微相 A7_Lite Artix-7 FPGA开发板 电机采用的是平衡小车之家的MG310(GMR编码器)电机。底板上有两个TB6612芯片&#xff0c;可以驱动…

Python运维监控系统之架构设计

说起Python这门编程语言的作用&#xff0c;可以列举很多方面&#xff0c;其实每一门流行的编程语言都可以列举很多方面&#xff0c;但是要说起Python的主要领域&#xff0c;莫过于运维监控方面&#xff0c;在这方面有大量优秀的开源运维系统。 虽然有很多优秀的开源运维监控系统…

基于springboot实现智能热度分析和自媒体推送平台系统项目【项目源码】

基于springboot实现自媒体社区平台系统演示 系统开发平台 在该自媒体分享网站中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其功能…

《微信小程序开发从入门到实战》学习十九

3.3 开发创建投票页面 3.3.7 wx:for列表渲染 接下来为创建的投票页面添加一个“添加选项”的功能。需要用户输入文字&#xff0c;应该使用input组件。头投票的数量是不确定的&#xff0c;面对不确定数量的组件的情况时&#xff0c;可以使用wx:for属性对组件进行列表渲染。 使…

windows pgsql 数据库 数据目录更改

一.先停止postgres服务 cmd命令 services.msc找到服务停止 二.修改注册表 cmd命令 regedit找到路径 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\postgresql-x64-13 将“&#xff0d;D”后的目录名修改为新的数据目录位置即可&#xff0c;如果目录路径中含有…

【C++】泛型编程 ⑦ ( 类模板常用用法 | 类模板声明 | 类模板调用 | 类模板作为函数参数 )

文章目录 一、类模板基础用法1、类模板声明定义2、类模板使用3、类模板做函数参数 二、完整代码示例1、代码示例2、执行结果 一、类模板基础用法 1、类模板声明定义 上一篇博客中 , 【C】泛型编程 ⑥ ( 类模板 | 类模板语法 | 代码示例 ) 讲解了模板类的基础语法 , 模板类声明如…

23 - 如何优化JVM内存分配?

JVM 调优是一个系统而又复杂的过程&#xff0c;但我们知道&#xff0c;在大多数情况下&#xff0c;我们基本不用去调整 JVM 内存分配&#xff0c;因为一些初始化的参数已经可以保证应用服务正常稳定地工作了。 但所有的调优都是有目标性的&#xff0c;JVM 内存分配调优也一样。…