apiVersion: apps/v1 kind: Deployment metadata: name: learning-server namespace: learning spec: replicas: 2 selector: matchLabels: app: learning-server template: metadata: labels: app: learning-server spec: terminationGracePeriodSeconds: 15 securityContext: runAsNonRoot: true runAsUser: 65532 runAsGroup: 65532 fsGroup: 65532 seccompProfile: type: RuntimeDefault containers: - name: learning-server image: localhost:30300/admin/learning-server:latest securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL ports: - containerPort: 3001 envFrom: - configMapRef: name: learning-config - secretRef: name: learning-secrets env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name startupProbe: httpGet: path: /healthz port: 3001 periodSeconds: 5 failureThreshold: 30 livenessProbe: httpGet: path: /healthz port: 3001 periodSeconds: 10 readinessProbe: httpGet: path: /readyz port: 3001 periodSeconds: 5 resources: requests: cpu: 50m memory: 64Mi limits: # Видео-стрим может локально жевать память, потому чуть выше. cpu: 300m memory: 384Mi --- apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: learning-server namespace: learning spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: learning-server minReplicas: 2 maxReplicas: 5 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70