Ответ
OpenShift Template — это параметризованный YAML или JSON-манифест, который определяет набор объектов Kubernetes (например, Deployment, Service, Route, ConfigMap) для развертывания приложения в кластере OpenShift. Он позволяет упаковать и повторно использовать конфигурацию.
Пример простого шаблона для веб-приложения:
apiVersion: template.openshift.io/v1
kind: Template
metadata:
name: webapp-template
objects:
- apiVersion: apps/v1
kind: Deployment
metadata:
name: ${APP_NAME}
spec:
replicas: ${REPLICA_COUNT}
selector:
matchLabels:
app: ${APP_NAME}
template:
metadata:
labels:
app: ${APP_NAME}
spec:
containers:
- name: ${APP_NAME}
image: ${IMAGE_URL}
ports:
- containerPort: 8080
- apiVersion: v1
kind: Service
metadata:
name: ${APP_NAME}
spec:
ports:
- port: 80
targetPort: 8080
selector:
app: ${APP_NAME}
parameters:
- name: APP_NAME
description: Имя приложения
value: my-webapp
- name: REPLICA_COUNT
description: Количество реплик
value: "2"
- name: IMAGE_URL
description: URL Docker-образа
value: nginx:latest
Как это работает и зачем нужно:
- Параметризация: Переменные в
${...}заменяются реальными значениями при развертывании. Это позволяет использовать один шаблон для разных окружений (dev, stage, prod), подставляя разные образы, количество реплик или имена. -
Процесс развертывания: Шаблон сначала обрабатывается (
oc process), подставляя параметры, а затем результат применяется к кластеру (oc apply).# Развертывание с параметрами по умолчанию oc process -f webapp-template.yaml | oc apply -f - # Развертывание с переопределением параметров oc process -f webapp-template.yaml -p APP_NAME=frontend -p REPLICA_COUNT=3 | oc apply -f - - Преимущества: Шаблоны стандартизируют развертывания, сокращают ручную работу и вероятность ошибок, упрощают CI/CD-пайплайны. В DevOps-практике они являются частью подхода "Инфраструктура как код" (IaC) для OpenShift.