Настройка Kubernetes для оркестрации веб-приложения

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Kubernetes для оркестрации веб-приложения
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • 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

Настройка Kubernetes для оркестрации веб-приложения

Kubernetes (k8s) — стандарт оркестрации контейнеров. Автоматически перезапускает упавшие поды, масштабирует по нагрузке, управляет конфигурацией и секретами, реализует rolling updates и rollbacks.

Минимальный набор манифестов

# namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: myapp
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-web
  namespace: myapp
spec:
  replicas: 3
  selector:
    matchLabels: { app: myapp-web }
  template:
    metadata:
      labels: { app: myapp-web }
    spec:
      containers:
        - name: web
          image: registry.example.com/myapp:v1.0.0
          ports:
            - containerPort: 8080
          envFrom:
            - configMapRef: { name: myapp-config }
            - secretRef: { name: myapp-secrets }
          resources:
            requests:
              cpu: "100m"
              memory: "256Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"
          readinessProbe:
            httpGet: { path: /health/ready, port: 8080 }
            initialDelaySeconds: 10
            periodSeconds: 5
          livenessProbe:
            httpGet: { path: /health/live, port: 8080 }
            initialDelaySeconds: 30
            periodSeconds: 30
      terminationGracePeriodSeconds: 60
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: myapp-web
  namespace: myapp
spec:
  selector: { app: myapp-web }
  ports:
    - port: 80
      targetPort: 8080
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  namespace: myapp
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rate-limit: "100"
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:
  ingressClassName: nginx
  tls:
    - hosts: [example.com]
      secretName: myapp-tls
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myapp-web
                port: { number: 80 }

ConfigMap и Secrets

# config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myapp-config
  namespace: myapp
data:
  APP_ENV: production
  APP_URL: https://example.com
  REDIS_HOST: redis-master

---
apiVersion: v1
kind: Secret
metadata:
  name: myapp-secrets
  namespace: myapp
type: Opaque
data:
  # echo -n "value" | base64
  DB_PASSWORD: c2VjcmV0cGFzcw==
  APP_KEY: YmFzZTY0Oi4uLg==

Horizontal Pod Autoscaler

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
  namespace: myapp
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-web
  minReplicas: 2
  maxReplicas: 20
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70
    - type: Resource
      resource:
        name: memory
        target:
          type: Utilization
          averageUtilization: 80

Jobs и CronJobs

apiVersion: batch/v1
kind: CronJob
metadata:
  name: cleanup-old-files
  namespace: myapp
spec:
  schedule: "0 2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: cleanup
              image: registry.example.com/myapp:latest
              command: ["php", "artisan", "files:cleanup"]
              envFrom:
                - secretRef: { name: myapp-secrets }

Деплой через Kustomize

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: myapp
images:
  - name: registry.example.com/myapp
    newTag: v1.2.0

resources:
  - namespace.yaml
  - deployment.yaml
  - service.yaml
  - ingress.yaml
  - hpa.yaml
kubectl apply -k ./k8s/production/

# Обновить образ
kustomize edit set image registry.example.com/myapp:v1.3.0
kubectl apply -k .

# Статус
kubectl rollout status deployment/myapp-web -n myapp

# Откат
kubectl rollout undo deployment/myapp-web -n myapp

GitHub Actions деплой

- name: Update k8s image
  run: |
    kubectl set image deployment/myapp-web \
      web=registry.example.com/myapp:${{ github.sha }} \
      -n myapp

    kubectl rollout status deployment/myapp-web -n myapp --timeout=5m

Срок реализации

Задача Срок
Базовые манифесты + деплой 3–4 дня
Ingress + cert-manager + TLS +1–2 дня
HPA + resource limits +1 день
Полный GitOps пайплайн 7–10 дней