当前位置: 首页 > article >正文

使用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


http://www.kler.cn/a/134694.html

相关文章:

  • goframe开发一个企业网站 统一返回响应码 18
  • Serverless架构在实时数据处理中的应用
  • 「QT」窗口类 之 QWidget 窗口基类
  • 【WRF理论第十二期】输出文件:wrfout 和 wrfrst
  • GPT-5 要来了:抢先了解其创新突破
  • 分享 pdf 转 word 的免费平台
  • Revive开发商加入VR开源标准OpenXR
  • 音频录制实现 绘制频谱
  • PyInstaller 如何 将第三方库打包到可执行文件
  • spring boot @Autowired 注入的服务为null
  • 1.索引的本质
  • 斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语,还有批量梯度下降法、随机梯度下降法 SGD 以及它们的相关推导,还有正态方程)
  • P2444 [POI2000] 病毒
  • 1688商品详情原数据(2023年11月最新版)
  • MySQL集群高可用架构之MMM
  • 八股文-TCP的四次挥手
  • “智能与未来”2024世亚国际智能机器人展会(简称:世亚智博会)
  • Swin Transformer
  • 云端援手:智能枢纽应对数字资产挑战 ——华为云11.11应用集成管理与创新专区优惠限时购
  • 图神经网络:消息传递算法
  • 使用JDK自带java.util.logging.Logger引起的冲突问题
  • HTTP(Hypertext Transfer Protocol)协议
  • Cadence virtuoso drc lvs pex 无法输入
  • AlmaLinux download
  • 开发中遇到的问题
  • HarmonyOS开发(四):应用程序入口UIAbility