Налаштування Helm Charts для деплою веб-застосунку

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування Helm Charts для деплою веб-застосунку
Складна
~3-5 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування розгортання Helm Charts

Helm — це пакетний менеджер для Kubernetes. Helm Charts — це параметризовані шаблони Kubernetes маніфестів. Дозволяють розгортати до різних середовищ з різними параметрами з одного набору шаблонів.

Структура Chart

myapp/
├── Chart.yaml
├── values.yaml         # значення за замовчуванням
├── values.prod.yaml    # переопределення production
├── values.staging.yaml
└── templates/
    ├── deployment.yaml
    ├── service.yaml
    ├── ingress.yaml
    ├── hpa.yaml
    ├── configmap.yaml
    ├── secret.yaml
    └── _helpers.tpl

Chart.yaml

apiVersion: v2
name: myapp
description: My web application
type: application
version: 1.0.0
appVersion: "latest"

dependencies:
  - name: redis
    version: "18.x.x"
    repository: https://charts.bitnami.com/bitnami
    condition: redis.enabled

values.yaml

replicaCount: 2

image:
  repository: registry.example.com/myapp
  tag: "latest"
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  port: 80
  targetPort: 8080

ingress:
  enabled: true
  className: nginx
  host: example.com
  tls: true

resources:
  requests:
    cpu: 100m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi

autoscaling:
  enabled: false
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

env:
  APP_ENV: production
  APP_URL: https://example.com

secrets:
  APP_KEY: ""
  DB_PASSWORD: ""

redis:
  enabled: true
  auth: { enabled: false }

templates/deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "myapp.fullname" . }}
  labels: {{ include "myapp.labels" . | nindent 4 }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels: {{ include "myapp.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels: {{ include "myapp.selectorLabels" . | nindent 8 }}
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: {{ .Values.service.targetPort }}
          envFrom:
            - configMapRef:
                name: {{ include "myapp.fullname" . }}
            - secretRef:
                name: {{ include "myapp.fullname" . }}
          resources: {{ toYaml .Values.resources | nindent 12 }}
          {{- if .Values.readinessProbe }}
          readinessProbe: {{ toYaml .Values.readinessProbe | nindent 12 }}
          {{- end }}

values.prod.yaml

replicaCount: 5

image:
  tag: "v1.2.3"

ingress:
  host: example.com

autoscaling:
  enabled: true
  maxReplicas: 20

resources:
  requests:
    cpu: 250m
    memory: 512Mi
  limits:
    cpu: 1000m
    memory: 1Gi

Встановлення та оновлення

# Додати залежності
helm dependency update ./myapp

# Dry run - показати що буде створено
helm install myapp ./myapp \
    --namespace myapp \
    --values values.yaml \
    --values values.prod.yaml \
    --set image.tag=v1.2.3 \
    --dry-run --debug

# Встановити
helm install myapp ./myapp \
    --namespace myapp --create-namespace \
    --values values.prod.yaml \
    --set secrets.APP_KEY="$APP_KEY" \
    --set secrets.DB_PASSWORD="$DB_PASSWORD"

# Оновити
helm upgrade myapp ./myapp \
    --namespace myapp \
    --values values.prod.yaml \
    --set image.tag=$NEW_TAG \
    --atomic \
    --timeout 5m

# Откат
helm rollback myapp 1 --namespace myapp

# Історія
helm history myapp --namespace myapp

GitHub Actions

- name: Helm Deploy
  run: |
    helm upgrade --install myapp ./helm/myapp \
      --namespace myapp --create-namespace \
      --values helm/myapp/values.prod.yaml \
      --set image.tag=${{ github.sha }} \
      --set secrets.DB_PASSWORD=${{ secrets.DB_PASSWORD }} \
      --atomic --timeout 5m

Лінія часу

Розробка Helm Chart для типового додатку: 3–5 днів. Helm + ArgoCD GitOps: +2–3 дні.