helm install для развёртывания приложения с использованием Helm-чарта. Это автоматизирует процесс создания и применения всех необходимых ресурсов Kubernetes.helm upgrade и при необходимости откатывать изменения с помощью helm rollback.values.yaml и обновить релиз.YAML
# Chart.yaml
apiVersion: v2
name: quickdelivery
description: A Helm chart for QuickDelivery microservice
type: application
version: 1.0.0
appVersion: 1.0.0
# values.yaml
replicaCount: 3
image:
repository: quickdelivery/microservice
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8080
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: 8080
BASH
# Добавление репозитория
helm repo add bitnami https://charts.bitnami.com/bitnami
# Обновление списка чартов из репозиториев
helm repo update
# Поиск чарта в репозитории
helm search repo bitnami
# Установка чарта и создание релиза
helm install quickdelivery ./quickdelivery-chart
# Просмотр списка релизов
helm list
# Обновление релиза
helm upgrade quickdelivery ./quickdelivery-chart
# Откат к предыдущей версии релиза
helm rollback quickdelivery 1
# Удаление релиза
helm uninstall quickdelivery
YAML
apiVersion: v2
name: my-chart
description: A Helm chart for Kubernetes
type: application
version: 1.0.0
appVersion: 1.0.0
YAML
replicaCount: 2
image:
repository: my-docker-repo/my-app
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
YAML
# templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: 80
Chart.yaml:YAML
# Внутри Chart.yaml
dependencies:
- name: mysql
version: "1.6.4"
repository: "https://charts.bitnami.com/bitnami"
condition: mysql.enabled
charts/ при выполнении команды helm dependency update.YAML
dependencies:
- name: redis
version: "14.8.8"
repository: "https://charts.bitnami.com/bitnami"
quickdelivery/
Chart.yaml
values.yaml
templates/
deployment.yaml
service.yaml
charts/
requirements.yaml
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
template:
metadata:
labels:
app: {{ .Release.Name }}-{{ .Chart.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.port }}
YAML
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-service
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: 8080
selector:
app: {{ .Release.Name }
BASH
helm create quickdelivery Chart.yaml укажите метаданные вашего приложения — имя, версию и описание. Этот файл определяет ваш чарт и делает его уникальным. Эти данные полезны для документирования версий чарта и управления ими.YAML
name: quickdelivery
version: 0.1.0
description: A Helm chart for QuickDelivery application values.yaml укажите параметры конфигурации по умолчанию, такие как настройки базы данных, API-ключи и другие переменные. Этот файл позволяет централизованно управлять конфигурацией вашего приложения, облегчая кастомизацию при развёртывании.YAML
image:
repository: quickdelivery/app
tag: latest
service:
type: ClusterIP
port: 80 templates создайте файлы шаблонов для ресурсов Kubernetes — Deployment, Service, ConfigMap. Используйте язык шаблонов Go для динамической подстановки значений из values.yaml. Это позволяет гибко управлять развёртыванием вашего приложения в зависимости от окружения.Deployment:YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-deployment
labels:
app: {{ .Chart.Name }}
spec:
replicas: 2
template:
metadata:
labels:
app: {{ .Chart.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
ports:
- containerPort: {{ .Values.service.port }}
BASH
helm init
BASH
helm install quickdelivery --name quickdelivery
Deployment, Service, ConfigMap и другие. Helm автоматически подставит значения из values.yaml и развернёт приложение. Это упрощает процесс развёртывания и обеспечивает консистентность.BASH
kubectl get all -l app=quickdelivery
values.yaml в соответствии с новыми требованиями. Это позволяет легко вносить изменения в развёрнутые приложения без необходимости полного повторного развёртывания.BASH
helm upgrade quickdelivery quickdelivery
BASH
kubectl get all -l app=quickdelivery
helm linthelm installhelm upgrade --installGROOVY
pipeline {
agent any
environment {
DOCKER_IMAGE = "quickdelivery:latest"
HELM_RELEASE = "quickdelivery"
}
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo/quickdelivery.git'
}
}
stage('Build Docker Image') {
steps {
script {
docker.build(DOCKER_IMAGE)
}
}
}
stage('Push Docker Image') {
steps {
script {
docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
docker.image(DOCKER_IMAGE).push()
}
}
}
}
stage('Deploy to Kubernetes') {
steps {
script {
sh "helm upgrade --install ${HELM_RELEASE} ./helm/quickdelivery"
}
}
}
}
} BASH
# build.sh
docker build -t quickdelivery:latest .
BASH
# deploy.sh
helm upgrade --install quickdelivery ./helm/quickdelivery
GROOVY
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo/quickdelivery.git'
}
}
stage('Build Docker Image') {
steps {
sh './build.sh'
}
}
stage('Deploy to Kubernetes') {
steps {
sh './deploy.sh'
}
}
}
}
YAML
version: 0.1.0
YAML
image:
tag: "1.0"
BASH
helm upgrade quickdelivery ./helm/quickdelivery
BASH
helm rollback quickdelivery <revision>
YAML
dependencies:
- name: redis
version: "3.0.0"
repository: "https://charts.bitnami.com/bitnami"
BASH
helm dependency update ./helm/quickdelivery
BASH
helm install quickdelivery ./helm/quickdelivery