Пример базовый
Пример проекта на Django, ngnix, rabbitmq, celery worker, redis и celery beat¶
Структура директоририи¶
data find . | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/"
|-django-microservice-chart
| |-Chart.yaml
| |-templates
| | |-deployment.yaml
| | |-celery-worker.yaml
| | |-rabbitmq.yaml
| | |-nginx.yaml
| | |-redis.yaml
| | |-celery-beat.yaml
| |-values.yaml
Chart.yaml¶
apiVersion: v2
name: django-microservice
description: A Django app with Celery, Redis, RabbitMQ and Nginx
type: application
version: 0.1.0
appVersion: "1.0"
values.yaml¶
django:
image: your-django-image:latest
replicas: 1
env:
SECRET_KEY: "replace-me"
DEBUG: "False"
ALLOWED_HOSTS: "*"
RABBITMQ_URL: "amqp://guest:guest@rabbitmq:5672//"
REDIS_URL: "redis://redis:6379/0"
nginx:
image: nginx:alpine
rabbitmq:
image: rabbitmq:3-management
redis:
image: redis:alpine
celery:
worker:
replicas: 1
beat:
enabled: true
templates/deployment.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: django
spec:
replicas: {{ .Values.django.replicas }}
selector:
matchLabels:
app: django
template:
metadata:
labels:
app: django
spec:
containers:
- name: django
image: {{ .Values.django.image }}
ports:
- containerPort: 8000
env:
{{- range $key, $value := .Values.django.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
templates/celery-worker.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: celery-worker
spec:
replicas: {{ .Values.celery.worker.replicas }}
selector:
matchLabels:
app: celery-worker
template:
metadata:
labels:
app: celery-worker
spec:
containers:
- name: celery-worker
image: {{ .Values.django.image }}
command: ["celery", "-A", "yourproject", "worker", "--loglevel=info"]
env:
{{- range $key, $value := .Values.django.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
templates/rabbitmq.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq
spec:
replicas: 1
selector:
matchLabels:
app: rabbitmq
template:
metadata:
labels:
app: rabbitmq
spec:
containers:
- name: rabbitmq
image: {{ .Values.rabbitmq.image }}
ports:
- containerPort: 5672
- containerPort: 15672
templates/nginx.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: {{ .Values.nginx.image }}
ports:
- containerPort: 80
templates/redis.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: {{ .Values.redis.image }}
ports:
- containerPort: 6379
templates/celery-beat.yaml¶
apiVersion: apps/v1
kind: Deployment
metadata:
name: celery-beat
spec:
replicas: 1
selector:
matchLabels:
app: celery-beat
template:
metadata:
labels:
app: celery-beat
spec:
containers:
- name: celery-beat
image: {{ .Values.django.image }}
command: ["celery", "-A", "yourproject", "beat", "--loglevel=info"]
env:
{{- range $key, $value := .Values.django.env }}
- name: {{ $key }}
value: "{{ $value }}"
{{- end }}
🚀 Инструкция по запуску¶
⚠️ Перед запуском убедись, что у тебя установлен
helm,kubectlи настроен доступ к Kubernetes кластеру (например, minikube или prod-кластер).
1. Подготовь ingress-контроллер (если ещё не установлен)¶
Пример (для Minikube):
2. Установи Helm-чарт¶
3. Проверь, что все поды запущены¶
4. Проверь доступ к приложению¶
Для Minikube:
Открой указанный IP (или укажи 127.0.0.1 yourdomain.com в /etc/hosts).
5. Обновление чарта¶
Если ты изменил конфигурации: