Что такое OpenShift Template?

«Что такое OpenShift Template?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Как это работает и зачем нужно:

  1. Параметризация: Переменные в ${...} заменяются реальными значениями при развертывании. Это позволяет использовать один шаблон для разных окружений (dev, stage, prod), подставляя разные образы, количество реплик или имена.
  2. Процесс развертывания: Шаблон сначала обрабатывается (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 -
  3. Преимущества: Шаблоны стандартизируют развертывания, сокращают ручную работу и вероятность ошибок, упрощают CI/CD-пайплайны. В DevOps-практике они являются частью подхода "Инфраструктура как код" (IaC) для OpenShift.