Запуск системы Emcee в Kubernetes
Запуск системы с использованием Kubernetes и Minikube#
Для запуска Emcee нужно сконфигурировать и запустить ресурсы Kubernetes.
Для запуска кластера Kubernetes будет использоваться Minikube. Либо вы можете использовать свой готовый кластер Kubernetes.
После установки Minikube запускаем команду для старта кластера:
Конфигурация ресурсов Kubernetes#
Для запуска нам потребуется Deployment для воркеров, очереди и Artifactory; Service для очереди и Artifactory.
Конфигурация файла emcee-worker-deployment.yaml
с Deployment для создания 3х воркеров.
Обратите внимание что в env
указываются переменные окружения для настройки воркера. См. главу Конфигурация воркера.
apiVersion: apps/v1
kind: Deployment
metadata:
name: emcee-worker-deployment
labels:
app: emcee-app
spec:
replicas: 3
selector:
matchLabels:
component: emcee-worker
template:
metadata:
labels:
component: emcee-worker
spec:
containers:
- name: emcee-worker
image: avitotech/emcee-worker:20.1.0
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: "1.15"
limits:
memory: "4.5Gi"
cpu: "1.3"
volumeMounts:
- mountPath: /dev/kvm
name: kvm
securityContext:
privileged: true
ports:
- containerPort: 41001
args: [ "$(EMCEE_WORKER_LOG_LEVEL)" ]
env:
- name: EMCEE_WORKER_QUEUE_URL
value: "http://emcee-queue-service:41000"
- name: EMCEE_WORKER_LOG_LEVEL
value: "info"
volumes:
- name: kvm
hostPath:
path: /dev/kvm
Конфигурация файла emcee-queue-deployment.yaml
с Deployment для очереди:
apiVersion: apps/v1
kind: Deployment
metadata:
name: emcee-queue-deployment
labels:
app: emcee-app
spec:
selector:
matchLabels:
component: emcee-queue
template:
metadata:
labels:
component: emcee-queue
spec:
containers:
- name: emcee-queue
image: avitotech/emcee-queue:20.1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 41000
Конфигурация файла emcee-queue-service.yaml
с Service для очереди:
apiVersion: v1
kind: Service
metadata:
name: emcee-queue-service
spec:
type: NodePort
selector:
component: emcee-queue
ports:
- name: emcee-queue-service-ports
protocol: TCP
port: 41000
targetPort: 41000
Конфигурация файла emcee-artifactory-deployment.yaml
с Deployment для Artifactory:
apiVersion: apps/v1
kind: Deployment
metadata:
name: emcee-artifactory-deployment
labels:
app: emcee-app
spec:
selector:
matchLabels:
component: emcee-artifactory
template:
metadata:
labels:
component: emcee-artifactory
spec:
containers:
- name: emcee-artifactory
image: docker.bintray.io/jfrog/artifactory-oss:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8081
- containerPort: 8082
volumeMounts:
- mountPath: /var/opt/jfrog/artifactory
name: artifactory
volumes:
- name: artifactory
emptyDir: {}
Конфигурация файла emcee-artifactory-service.yaml
с Service для Artifactory:
apiVersion: v1
kind: Service
metadata:
name: emcee-artifactory-service
spec:
type: NodePort
selector:
component: emcee-artifactory
ports:
- name: emcee-artifactory-service-port-1
protocol: TCP
port: 8081
targetPort: 8081
- name: emcee-artifactory-service-port-2
protocol: TCP
port: 8082
targetPort: 8082
Запуск ресурсов Kubernetes#
Для запуска системы нужно последовательно запустить ресурсы:
Или запустить ресурсы сразу одной командой. Для этого ресурсы складываем в одну директорию и вызываем команду:
Для проверки что ресурсы запустились вызываем команду:
Вывод в консоли должен выглядеть примерно так:
NAME READY STATUS RESTARTS AGE
emcee-artifactory-deployment-db979bd5b-7fdbm 1/1 Running 0 6m5s
emcee-queue-deployment-5b49cf5884-wkmv9 1/1 Running 0 6m5s
emcee-worker-deployment-66c6b8bdb4-2kxqq 1/1 Running 0 6m5s
emcee-worker-deployment-66c6b8bdb4-96rfs 1/1 Running 0 6m5s
emcee-worker-deployment-66c6b8bdb4-pbtjv 1/1 Running 0 6m5s
Получение адресов очереди и Artifactory#
Для получения локального адреса очереди выполняем:
В выводе команды будет ip:port очереди, который нужно использовать в Gradle плагине Emcee в качестве адреса очереди.
Для получения локального адреса Artifactory выполняем:
В выводе команды будет ip:port Artifactory, который нужно использовать в Gradle плагине Emcee в качестве адреса Artifactory.
Если Emcee развернута на удаленном компьютере с кластером Kubernetes, то доступ до него нужно настроить в зависимости от кофигурации вашей сети и настроек Kubernetes.