apiVersion: apps/v1 kind: Deployment metadata: name: devops-app namespace: devops-demo labels: app: devops-app version: v1 spec: replicas: 2 selector: matchLabels: app: devops-app template: metadata: labels: app: devops-app annotations: prometheus.io/scrape: "true" prometheus.io/port: "8000" prometheus.io/path: "/metrics" spec: containers: - name: app image: devops-app:local imagePullPolicy: IfNotPresent ports: - containerPort: 8000 name: http envFrom: - configMapRef: name: app-config env: - name: HOSTNAME valueFrom: fieldRef: fieldPath: metadata.name resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "256Mi" cpu: "200m" readinessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 10 periodSeconds: 15 livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 30 periodSeconds: 30 --- apiVersion: v1 kind: Service metadata: name: devops-app-service namespace: devops-demo spec: selector: app: devops-app ports: - port: 80 targetPort: 8000 protocol: TCP name: http type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-proxy namespace: devops-demo labels: app: nginx-proxy spec: replicas: 1 selector: matchLabels: app: nginx-proxy template: metadata: labels: app: nginx-proxy spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 - containerPort: 443 volumeMounts: - name: nginx-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf - name: certs mountPath: /etc/nginx/certs volumes: - name: nginx-config configMap: name: nginx-config - name: certs secret: secretName: nginx-tls --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: devops-demo spec: selector: app: nginx-proxy ports: - port: 80 targetPort: 80 protocol: TCP name: http - port: 443 targetPort: 443 protocol: TCP name: https type: NodePort