k8s-api-microsvc-app-monitoring / app / microsvc.yaml
microsvc.yaml
Raw
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-app-backend
  labels:
    app: api-app-backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: api-app-backend
  template:
    metadata:
      labels:
        app: api-app-backend
    spec:
      containers:
      - name: api-app-backend
        image: agnes4im/api-app-backend:v2.0
        ports:
        - containerPort: 3333
        env:
          - name: OUOTE_API_KEY
            valueFrom:
              secretKeyRef:
                name: api
                key: quote-api-key
        resources:
          limits:
            cpu: 70m
            memory: 60Mi
---
apiVersion: v1
kind: Service
metadata:
  name: api-app-backend
  labels:
    app: api-app-backend
spec:
  type: ClusterIP
  ports:
  - name: api-app-backend
    port: 3333
    targetPort: 3333
  selector:
    app: api-app-backend

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-app-frontend
  labels:
    app: api-app-frontend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: api-app-frontend
  template:
    metadata:
      labels:
        app: api-app-frontend
    spec:
      containers:
      - name: api-app-frontend
        image: agnes4im/api-app-frontend:v2.0
        ports:
        - containerPort: 3000
        resources:
          limits:
            cpu: 70m
            memory: 60Mi
---
apiVersion: v1
kind: Service
metadata:
  name: api-app-frontend
  labels:
    app: api-app-frontend
spec:
  type: LoadBalancer
  ports:
  - name: api-app-frontend
    port: 3000
    targetPort: 3000
  selector:
    app: api-app-frontend

---
# Prometheus serviceMonitor component to scrape api-app-backend metrics...

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata: 
  name: api-app-backend-monitoring
  labels:
    release: monitoring
    app: api-app-backend-monitoring
spec:
  endpoints:
  - path: /metrics
    port: api-app-backend
    targetPort: 3333
  namespaceSelector:
    matchNames:
    - default 
  selector:
    matchLabels:
      app: api-app-backend-monitoring