Current section
Files
Jump to
Current section
Files
priv/template/deployments.yml.eex
apiVersion: v1
kind: List
items:
- apiVersion: v1
data:
SKY_APP_CONTEXT: "<%= app_context %>"
SKY_APP_VERSION: "<%= version %>"
SKY_APP_DOMAIN: "<%= app_domain %>"
SKY_APP_PORT: "<%= app_port %>"
SKY_APP_NAME: "<%= app_name %>"
SKY_APP_RUN_ENV: "<%= app_run_env %>"
kind: ConfigMap
metadata:
name: <%= project %>
- apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
prometheus.io/scrape: "true"
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/proxy-body-size: 100m
nginx.ingress.kubernetes.io/client-body-buffer-size: 1m
name: <%= project %>
spec:
rules:
<%= for item <- String.split(app_domain, ",") do %>
- host: <%= item %>
http:
paths:
- path: /
backend:
serviceName: <%= project %>
servicePort: <%= app_port %>
- path: /<%= app_name %>
backend:
serviceName: <%= project %>
servicePort: <%= app_port %>
<% end %>
- apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: hpa-<%= project %>
namespace: <%= k8s_namespace %>
spec:
maxReplicas: <%= auto_max_replicas %>
minReplicas: <%= auto_min_replicas %>
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: <%= project %>
targetCPUUtilizationPercentage: 80
- apiVersion: v1
kind: Service
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /login
prometheus.io/port: <%= app_port %>
labels:
provider: skylab
project: <%= project %>
version: <%= version %>-<%= revision %>
name: <%= project %>
spec:
ports:
- port: <%= app_port %>
protocol: TCP
targetPort: <%= app_port %>
selector:
provider: skylab
project: <%= project %>
- apiVersion: apps/v1beta1
kind: <%= if stateful, do: "StatefulSet", else: "Deployment" %>
metadata:
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: /login
prometheus.io/port: <%= app_port %>
labels:
provider: skylab
project: <%= project %>
version: <%= version %>-<%= revision %>
name: <%= project %>
spec:
<%= if stateful do %>
serviceName: <%= project %>
<% end %>
replicas: <%= replicas %>
selector:
matchLabels:
provider: skylab
project: <%= project %>
# for Pods:
template:
metadata:
labels:
provider: skylab
project: <%= project %>
version: <%= version %>-<%= revision %>
spec:
nodeSelector:
<%= for {key, value} <- node_selector do %>
<%= key %>: <%= value %>
<% end %>
containers:
- env:
<%= for {sec, env} <- secrets do %>
- name: <%= env %>
valueFrom:
secretKeyRef:
name: <%= project %>
key: <%= sec %>
<% end %>
- name: CPU_REQUEST
valueFrom:
resourceFieldRef:
resource: requests.cpu
- name: CPU_LIMIT
valueFrom:
resourceFieldRef:
resource: limits.cpu
- name: MEM_REQUEST
valueFrom:
resourceFieldRef:
resource: requests.memory
- name: MEM_LIMIT
valueFrom:
resourceFieldRef:
resource: limits.memory
- name: HOST_IP
valueFrom:
fieldRef:
fieldPath: status.hostIP
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
envFrom:
- configMapRef:
name: <%= project %>
image: <%= full_image_name %>
imagePullPolicy: Always
name: <%= project %>
volumeMounts:
<%= for {name, path, opts} <- mounts do %>
- mountPath: "<%= is_function(path, 1) && path.(app_name) || path %>"
name: <%= name %>
<%= for {k, v} <- opts do %><%= k %>: <%= inspect(v) %>
<% end %>
<% end %>
ports:
- containerPort: <%= app_port %>
name: http
resources:
limits:
cpu: <%= cpu_limit %>
memory: <%= mem_limit %>
requests:
cpu: <%= cpu_request %>
memory: <%= mem_request %>
readinessProbe:
httpGet:
path: <%= readiness_url %>
port: <%= app_port %>
initialDelaySeconds: 1
timeoutSeconds: 5
failureThreshold: 600
livenessProbe:
httpGet:
path: <%= liveness_url %>
port: <%= app_port %>
initialDelaySeconds: 600
timeoutSeconds: 5
failureThreshold: 5
volumes:
<%= for {name, type, opts} <- volumes do %>
- name: <%= name %>
<%= type %>:
<%= for {k, v} <- opts do %><%= k %>: <%= inspect(v) %>
<% end %>
<% end %>
imagePullSecrets:
- name: hlj-registry-secret
serviceAccountName: web