当前位置:   article > 正文

K3s 集群 helm 化改造之nginx_csdn流雨声

csdn流雨声

背景概况

我们的产品应用在应用交付过程中,之前传统的模式下会经历 物理机 -> 虚拟机 -> 容器化 -> K8s应用化 -> helm产品化输出 ,从而构建产品的完整流程实现,helm 化产品应用改造其中主要改造内容包括 deployment 资源化; PV/PVC 存储化; svc/ingress 网络化; 自动脚本job化; 从而实现应用产品的独立输出和集成改造的目的,接下来本文将会从nginx的helm化改造来举例说明在helm应用改造过程中可能涉及到的问题,因为nginx作为一个简单的应用不会涉及 例如 存储/job 应用改造,但是已经可以涵盖绝大多数的应用改造输出能力了。

原始项目

# 项目工作展示目录
cd /home/work/nginx-demo/
  • 1
  • 2

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为名字空间。
nginx-namespace.yaml 文件内容:

apiVersion: v1
kind: Namespace
metadata:
  name: ns-test
  labels:
    name: label-test
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Deployment 提供了一种对 Pod 和 ReplicaSet 的管理方式
nginx-deployment.yaml 文件内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: ns-test
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
        ports:
        - containerPort: 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

使用 Kubernetes,你无需修改应用程序即可使用不熟悉的服务发现机制。 Kubernetes 为 Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名, 并且可以在它们之间进行负载均衡。
nginx-service.yaml 内容如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: ns-test
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

项目Helm化

[root@vm3290 helm]# tree nginx-demo/
nginx-demo/
├── Chart.yaml
├── README.md
├── templates
│   ├── nginx-deployment.yaml
│   ├── nginx-ingress.yaml
│   ├── nginx-service.yaml
│   ├── NOTES.txt
│   └── tests
│       └── test-connection.yaml
└── values.yaml

2 directories, 8 files
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

定义 values.yaml 内容如下:

replicas: 1
resources:
  limits:
    cpu: "1"
    memory: 1Gi
  requests:
    cpu: 200m
    memory: 200Mi

service:
  name: nginx-svc

ingress:
  name: nginx-ingress
  host: traefik.dracula.io

# 请不要修改此配置
global:
  namespace: nginx-ns
  nginx:
    name: nginx-ds
    replicas: 1
    image: nginx
    tag: alpine
    port: 80
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

部署流程

1. 安装
helm install  -n <YOUR-NAMESPACE> nginx-demo nginx-demo 

2. 更新
helm upgrade  -n <YOUR-NAMESPACE> nginx-demo nginx-demo 

3. 卸载

helm delete -n <YOUR-NAMESPACE> nginx-demo 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

资源查看

拓展阅读:
我们的应用产品的 helm 化改造以后将会更方便管理和应用组件更新,但是我们再改造时同时需要注意提取那些变参,有些参数不会经常的变更所以需要保持,针对计算资源/存储/网络/密码账号信息这四面的配置一般需要全局变量提取进行可变参数的配置实现,针对镜像或者程序中写死的路径信息一般不做变更,不然需要再次适配才可以进行发布,通过 helm 化产品应用,我们对于自己产品将会很方便的管理和升级更新。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/883186
推荐阅读
相关标签
  

闽ICP备14008679号