137 lines
4.8 KiB
YAML
137 lines
4.8 KiB
YAML
# ============================================================
|
||
# Система: Единая библиотека, Центр ИИ НИУ ВШЭ
|
||
# Модуль: MLComponent
|
||
# Авторы: Полежаев В.А., Хританков А.С.
|
||
# Дата создания: 2024 г.
|
||
# ============================================================
|
||
apiVersion: apps/v1
|
||
kind: Deployment
|
||
metadata:
|
||
name: {{ deployment_name }}
|
||
namespace: {{ namespace }}
|
||
spec:
|
||
replicas: 1
|
||
selector:
|
||
matchLabels:
|
||
app: ml-cmp-{{ name }}
|
||
template:
|
||
metadata:
|
||
labels:
|
||
app: ml-cmp-{{ name }}
|
||
spec:
|
||
containers:
|
||
- name: ml-cmp-{{ name }}
|
||
image: {{ image_name }}
|
||
imagePullPolicy: Always
|
||
command: ["/bin/bash"]
|
||
args:
|
||
- -c
|
||
- >-
|
||
{% if python_package_version %}
|
||
pip3 install "unip-mlcmp {{ python_package_version }}"
|
||
{% else %}
|
||
pip3 install unip-mlcmp
|
||
{% endif %}
|
||
{% if python_package_registry_credentials %}
|
||
--extra-index-url {{ python_package_registry_credentials }}
|
||
--trusted-host {{ python_package_registry_host }}
|
||
{% endif %}
|
||
&&
|
||
{% if file_exchange_copy %}
|
||
mkdir -p $(FILES_S3_COPY_INFERENCE_FILES_DIR) &&
|
||
{% endif %}
|
||
export PYTHONPATH=$PYTHONPATH:$(PYTHONPATH_EXTENSION) &&
|
||
export PATH=/home/user/.local/bin:$PATH &&
|
||
{% if download_model %}
|
||
python3 -m unip.mlcmp.download_model_s3 &&
|
||
{% endif %}
|
||
hypercorn $(MLCMP_PACKAGE_APP_NAME) -k trio -b 0.0.0.0:{{ container_port }}
|
||
{% if env %}
|
||
env:
|
||
{% for env_var in env %}
|
||
- name: {{ env_var['name'] }}
|
||
value: "{{ env_var['value'] }}"
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% if env_from %}
|
||
envFrom:
|
||
{% for env_from_elem in env_from %}
|
||
- {{ env_from_elem['key'] }}:
|
||
{{ env_from_elem['body'] }}
|
||
{% endfor %}
|
||
{% endif %}
|
||
ports:
|
||
- containerPort: {{ container_port }}
|
||
{% if volume_mounts %}
|
||
volumeMounts:
|
||
{% for volume_mount in volume_mounts %}
|
||
- name: {{ volume_mount['volume_name'] }}
|
||
mountPath: {{ volume_mount['mount_path'] }}
|
||
{% if volume_mount['sub_path'] %}
|
||
subPath: {{ volume_mount['sub_path'] }}
|
||
{% endif %}
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% if resource_limits or resource_requests %}
|
||
resources:
|
||
{% if resource_limits %}
|
||
limits:
|
||
{% if resource_limits.memory %}
|
||
memory: {{ resource_limits.memory }}
|
||
{% endif %}
|
||
{% if resource_limits.cpu %}
|
||
cpu: {{ resource_limits.cpu }}
|
||
{% endif %}
|
||
{% if resource_limits.gpu %}
|
||
nvidia.com/gpu: {{ resource_limits.gpu }}
|
||
{% endif %}
|
||
{% endif %}
|
||
{% if resource_requests %}
|
||
requests:
|
||
{% if resource_requests.memory is not none %}
|
||
memory: {{ resource_requests.memory }}
|
||
{% endif %}
|
||
{% if resource_requests.cpu is not none %}
|
||
cpu: {{ resource_requests.cpu }}
|
||
{% endif %}
|
||
{% if resource_requests.gpu %}
|
||
nvidia.com/gpu: {{ resource_requests.gpu }}
|
||
{% endif %}
|
||
{% endif %}
|
||
{% endif %}
|
||
{% if volumes %}
|
||
volumes:
|
||
{% for volume in volumes %}
|
||
- name: {{ volume['volume_name'] }}
|
||
persistentVolumeClaim:
|
||
claimName: {{ volume['pvc_name'] }}
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% if image_registry_credentials_secret_name %}
|
||
imagePullSecrets:
|
||
- name: {{ image_registry_credentials_secret_name }}
|
||
{% endif %}
|
||
{% if tolerations %}
|
||
tolerations:
|
||
{% for tol in tolerations %}
|
||
- key: "{{ tol.key }}"
|
||
operator: "{{ tol.operator }}"
|
||
value: "{{ tol.value }}"
|
||
effect: "{{ tol.effect }}"
|
||
{% endfor %}
|
||
{% endif %}
|
||
{% if node_affinity %}
|
||
affinity:
|
||
nodeAffinity:
|
||
requiredDuringSchedulingIgnoredDuringExecution:
|
||
nodeSelectorTerms:
|
||
- matchExpressions:
|
||
{% for e in node_affinity.expressions %}
|
||
- key: {{ e.key }}
|
||
operator: {{ e.operator }}
|
||
values:
|
||
{% for v in e.vals %}
|
||
- "{{ v }}"
|
||
{% endfor %}
|
||
{% endfor %}
|
||
{% endif %}
|