Skip to main content
demo.yaml2.5 KB
View on GitHub
# yaml-language-server: $schema=https://atmos.tools/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json

components:
kubernetes:
demo/defaults:
metadata:
type: abstract
component: demo
provider: kubectl
paths:
- files
vars:
namespace: atmos-demo
app_name: demo
image: nginx:1.27-alpine
replicas: 1
service_port: 80
# Delivery targets for `atmos kubernetes apply|deploy`. With `default: cluster`,
# `apply demo -s dev` applies to the cluster as before. Selecting the git target
# with `apply demo -s dev --target deployment-repo` instead renders the manifests
# and commits them to the `deployments` repository (see git.repositories in
# atmos.yaml) under the templated path, for Argo CD / Flux to reconcile.
provision:
default: cluster
targets:
cluster:
kind: kubernetes
deployment-repo:
kind: git
repository: deployments
path: 'clusters/{{ .vars.stage }}/{{ .vars.app_name }}'
commit:
message: 'Render {{ .vars.app_name }} for {{ .vars.stage }}'
manifests:
- apiVersion: v1
kind: Namespace
metadata:
name: '{{ .vars.namespace }}'
labels:
app.kubernetes.io/managed-by: atmos
- |
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ .vars.app_name }}"
namespace: "{{ .vars.namespace }}"
labels:
app.kubernetes.io/name: "{{ .vars.app_name }}"
spec:
replicas: {{ .vars.replicas }}
selector:
matchLabels:
app.kubernetes.io/name: "{{ .vars.app_name }}"
template:
metadata:
labels:
app.kubernetes.io/name: "{{ .vars.app_name }}"
spec:
containers:
- name: nginx
image: "{{ .vars.image }}"
ports:
- name: http
containerPort: 80
- |
apiVersion: v1
kind: Service
metadata:
name: "{{ .vars.app_name }}"
namespace: "{{ .vars.namespace }}"
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: "{{ .vars.app_name }}"
ports:
- name: http
port: {{ .vars.service_port }}
targetPort: http