亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

使用Helm完成項目的部署和升級

2025-03-25 05:33:31
12
0

背景

目前,k8s項目的應用組件越來越多,每次升級和部署都需要更新大量的pod容器鏡像和配置文件,整個過程非常繁瑣,給運維升級造成很大的困擾。為了簡化生產環境應用的部署和升級,提升開發和運維的工作效率,確保應用能夠快速、穩定地發布到生產環境中,我們可以在自己項目中使用Helm這個工具。

Helm簡介

Helm 是一個用于 Kubernetes 的包管理工具,它通過 Helm Chart 來定義、安裝、升級和管理 Kubernetes 應用,Helm有三個重要的概念:

Chart Helm Chart 是一個包含 Kubernetes 資源定義的包,它描述了如何部署一個應用,包括所需的 Deployments、Services、ConfigMaps 等
Repository Helm Repository 是一個存儲 Chart 的倉庫,用戶可以從這些倉庫中搜索、download和安裝 Chart
Release 當使用 helm install 命令將一個 Chart 部署到 Kubernetes 集群時,會創建一個 Release,它代表了特定版本的應用部署

Helm 適用于需要管理和部署復雜應用場景的環境。通過Helm,用戶可以輕松地安裝、升級和uninstall Kubernetes應用,同時支持版本管理和依賴關系處理。這使得在Kubernetes平臺上管理和部署應用變得更加高效和可靠。

入門指南

使用Helm,需要準備以下幾點:

  1. 一個 Kubernetes 集群,并安裝了kubectl指令
  2. 確定你安裝版本的安全配置
  3. 安裝和配置Helm。

使用Helm 部署 Kubernetes 應用

charts 除了可以在 repo 中download,還可以自己自定義,創建完成后通過 helm 部署到 k8s。

一個典型的 Helm Chart 包含以下目錄和文件結構:

my-app/
├── Chart.yaml          # Chart 的元數據
├── values.yaml         # 默認配置
├── .helmignore         # 忽略的文件模式
├── templates/          # Kubernetes 資源模板
│   ├── NOTES.txt       # 部署后的提示信息
│   ├── _helpers.tpl    # 輔助模板
│   ├── deployment.yaml # Deployment 資源模板
│   ├── service.yaml    # Service 資源模板
│   └── ingress.yaml    # Ingress 資源模板(可選)
└── charts/             # 依賴的子 Chart(可選)

1. 編寫 Chart.yaml

Chart.yaml 是 Helm Chart 的元數據文件,包含 Chart 的基本信息。例如:

apiVersion: v2
name: my-app
description: A Helm chart for my application
type: application
version: 0.1.0
appVersion: "1.0"
  • apiVersion:Helm Chart 的版本格式(v2 是當前推薦的版本)。

  • name:Chart 的名稱。

  • description:Chart 的描述。

  • type:Chart 的類型(application 或 library)。

  • version:Chart 的版本號。

  • appVersion:應用本身的版本號。

2. 編寫 values.yaml

values.yaml 是 Helm Chart 的默認配置文件,用戶可以通過它覆蓋默認值。例如:

# 默認配置
replicaCount: 1
 
image:
  repository: my-app
  tag: latest
  pullPolicy: IfNotPresent
 
service:
  type: ClusterIP
  port: 80
 
ingress:
  enabled: false
  annotations: {}
  hosts:
    - host: my-app.local
      paths: ["/"]
  tls: []
 
resources: {}
  • replicaCount:Pod 的副本數量。

  • image:Docker 鏡像的配置。

  • service:Service 的配置。

  • ingress:Ingress 的配置。

  • resources:資源限制的配置。

3. 編寫 .helmignore

.helmignore 文件用于指定在打包 Chart 時需要忽略的文件或目錄。例如:

# 忽略文件
.DS_Store
.git/
.gitignore
README.md

4. 編寫 templates/ 目錄中的 Kubernetes 資源模板

templates/ 目錄包含 Kubernetes 資源的模板文件。Helm 會根據 values.yaml 中的配置渲染這些模板。

# 忽略文件
.DS_Store
.git/
.gitignore
README.md
4.1 編寫 deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.nameOverride }}
  labels:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ .Chart.Name }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ .Chart.Name }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: {{ .Values.service.port }}

4.2 編寫 service.yaml

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.nameOverride }}
  labels:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
  selector:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}

5. 編寫 charts/ 目錄(可選)

如果需要依賴其他 Helm Charts,可以將它們放在 charts/ 目錄中。例如:

my-app/
└── charts/
    └── my-dependency/
        ├── Chart.yaml
        ├── values.yaml
        └── templates/
            └── ...

6. 打包和安裝 Helm Chart

完成 Chart 的編寫后,可以通過以下命令打包和安裝:

helm package my-app
helm install my-release ./my-app

使用Helm升級 Kubernetes 應用

使用 Helm 升級 Kubernetes 應用的步驟如下:

1、更新 Helm 倉庫索引

helm repo update

確保本地倉庫索引是最新的。

2、查看可用的 Chart 版本

helm search repo <chart名稱>

查看目標 Chart 的可用版本。

3、升級應用程序

運行helm upgrade命令,指定要升級的Release名稱和Chart名稱,以及任何必要的配置參數。

helm upgrade --install <release名稱> <chart名稱> --version <版本號> -n <命名空間> -f <自定義值文件> --set <參數1>=<值1>,<參數2>=<值2> ...

例如:

helm upgrade --install poptestagent sa_helm_rel/poptestserver --version 3.23.1821 -n platform -f /root/tmp/poptestserver.yaml

使用Helm動態更新配置文件

如果需要更新配置文件,可以直接修改 values.yaml 文件,然后運行以下命令:

helm upgrade RELEASE_NAME .

也可以通過命令行參數覆蓋values.yaml中的值:

helm upgrade RELEASE_NAME --set image.tag='1.19.6' .

或者使用 YAML 文件指定配置:

helm upgrade RELEASE_NAME -f values.yaml .

注意事項

在升級之前,建議先運行 helm status <release名稱> 檢查當前部署的狀態。

如果需要回滾到之前的版本,可以使用 helm rollback <release名稱> <版本號>

 

0條評論
作者已關閉評論
陳****通
6文章數
0粉絲數
陳****通
6 文章 | 0 粉絲
原創

使用Helm完成項目的部署和升級

2025-03-25 05:33:31
12
0

背景

目前,k8s項目的應用組件越來越多,每次升級和部署都需要更新大量的pod容器鏡像和配置文件,整個過程非常繁瑣,給運維升級造成很大的困擾。為了簡化生產環境應用的部署和升級,提升開發和運維的工作效率,確保應用能夠快速、穩定地發布到生產環境中,我們可以在自己項目中使用Helm這個工具。

Helm簡介

Helm 是一個用于 Kubernetes 的包管理工具,它通過 Helm Chart 來定義、安裝、升級和管理 Kubernetes 應用,Helm有三個重要的概念:

Chart Helm Chart 是一個包含 Kubernetes 資源定義的包,它描述了如何部署一個應用,包括所需的 Deployments、Services、ConfigMaps 等
Repository Helm Repository 是一個存儲 Chart 的倉庫,用戶可以從這些倉庫中搜索、download和安裝 Chart
Release 當使用 helm install 命令將一個 Chart 部署到 Kubernetes 集群時,會創建一個 Release,它代表了特定版本的應用部署

Helm 適用于需要管理和部署復雜應用場景的環境。通過Helm,用戶可以輕松地安裝、升級和uninstall Kubernetes應用,同時支持版本管理和依賴關系處理。這使得在Kubernetes平臺上管理和部署應用變得更加高效和可靠。

入門指南

使用Helm,需要準備以下幾點:

  1. 一個 Kubernetes 集群,并安裝了kubectl指令
  2. 確定你安裝版本的安全配置
  3. 安裝和配置Helm。

使用Helm 部署 Kubernetes 應用

charts 除了可以在 repo 中download,還可以自己自定義,創建完成后通過 helm 部署到 k8s。

一個典型的 Helm Chart 包含以下目錄和文件結構:

my-app/
├── Chart.yaml          # Chart 的元數據
├── values.yaml         # 默認配置
├── .helmignore         # 忽略的文件模式
├── templates/          # Kubernetes 資源模板
│   ├── NOTES.txt       # 部署后的提示信息
│   ├── _helpers.tpl    # 輔助模板
│   ├── deployment.yaml # Deployment 資源模板
│   ├── service.yaml    # Service 資源模板
│   └── ingress.yaml    # Ingress 資源模板(可選)
└── charts/             # 依賴的子 Chart(可選)

1. 編寫 Chart.yaml

Chart.yaml 是 Helm Chart 的元數據文件,包含 Chart 的基本信息。例如:

apiVersion: v2
name: my-app
description: A Helm chart for my application
type: application
version: 0.1.0
appVersion: "1.0"
  • apiVersion:Helm Chart 的版本格式(v2 是當前推薦的版本)。

  • name:Chart 的名稱。

  • description:Chart 的描述。

  • type:Chart 的類型(application 或 library)。

  • version:Chart 的版本號。

  • appVersion:應用本身的版本號。

2. 編寫 values.yaml

values.yaml 是 Helm Chart 的默認配置文件,用戶可以通過它覆蓋默認值。例如:

# 默認配置
replicaCount: 1
 
image:
  repository: my-app
  tag: latest
  pullPolicy: IfNotPresent
 
service:
  type: ClusterIP
  port: 80
 
ingress:
  enabled: false
  annotations: {}
  hosts:
    - host: my-app.local
      paths: ["/"]
  tls: []
 
resources: {}
  • replicaCount:Pod 的副本數量。

  • image:Docker 鏡像的配置。

  • service:Service 的配置。

  • ingress:Ingress 的配置。

  • resources:資源限制的配置。

3. 編寫 .helmignore

.helmignore 文件用于指定在打包 Chart 時需要忽略的文件或目錄。例如:

# 忽略文件
.DS_Store
.git/
.gitignore
README.md

4. 編寫 templates/ 目錄中的 Kubernetes 資源模板

templates/ 目錄包含 Kubernetes 資源的模板文件。Helm 會根據 values.yaml 中的配置渲染這些模板。

# 忽略文件
.DS_Store
.git/
.gitignore
README.md
4.1 編寫 deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.nameOverride }}
  labels:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ .Chart.Name }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ .Chart.Name }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: {{ .Values.service.port }}

4.2 編寫 service.yaml

apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.nameOverride }}
  labels:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: {{ .Values.service.port }}
      protocol: TCP
      name: http
  selector:
    app.kubernetes.io/name: {{ .Chart.Name }}
    app.kubernetes.io/instance: {{ .Release.Name }}

5. 編寫 charts/ 目錄(可選)

如果需要依賴其他 Helm Charts,可以將它們放在 charts/ 目錄中。例如:

my-app/
└── charts/
    └── my-dependency/
        ├── Chart.yaml
        ├── values.yaml
        └── templates/
            └── ...

6. 打包和安裝 Helm Chart

完成 Chart 的編寫后,可以通過以下命令打包和安裝:

helm package my-app
helm install my-release ./my-app

使用Helm升級 Kubernetes 應用

使用 Helm 升級 Kubernetes 應用的步驟如下:

1、更新 Helm 倉庫索引

helm repo update

確保本地倉庫索引是最新的。

2、查看可用的 Chart 版本

helm search repo <chart名稱>

查看目標 Chart 的可用版本。

3、升級應用程序

運行helm upgrade命令,指定要升級的Release名稱和Chart名稱,以及任何必要的配置參數。

helm upgrade --install <release名稱> <chart名稱> --version <版本號> -n <命名空間> -f <自定義值文件> --set <參數1>=<值1>,<參數2>=<值2> ...

例如:

helm upgrade --install poptestagent sa_helm_rel/poptestserver --version 3.23.1821 -n platform -f /root/tmp/poptestserver.yaml

使用Helm動態更新配置文件

如果需要更新配置文件,可以直接修改 values.yaml 文件,然后運行以下命令:

helm upgrade RELEASE_NAME .

也可以通過命令行參數覆蓋values.yaml中的值:

helm upgrade RELEASE_NAME --set image.tag='1.19.6' .

或者使用 YAML 文件指定配置:

helm upgrade RELEASE_NAME -f values.yaml .

注意事項

在升級之前,建議先運行 helm status <release名稱> 檢查當前部署的狀態。

如果需要回滾到之前的版本,可以使用 helm rollback <release名稱> <版本號>

 

文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0