Kubernetes

Содержание
  1. Тестовый пример
  2. Выкатывание мониторинга

Тестовый пример

Можно использовать для тестов

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
   app: nginx
spec:
 replicas: 3
 selector:
   matchLabels:
    app: nginx
 template:
   metadata:
    labels:
      app: nginx
   spec:
    containers:
     - name: nginx
       image: nginx:stable
       ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
 name: nginx
spec:
 selector: 
  app: nginx
 ports:
  - protocol: TCP
    port: 80
    targetPort: 80
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 name: nginx
 annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: dev.example.com
    http:
       paths:
       - path: /
         backend:
           serviceName: nginx
           servicePort: 80

Выкатывание мониторинга

для мониторинга кубика используется связка prometheus+grafana+alertmanager. Чтобы использовать их, необходимо использовать оператор stable/prometheus-operator.

Прежде, чем ставить сам оператор, надо создать свой values.yaml. commonLabels используется для назначения лейбла всем ресурсам, которые будут задеплоены. В последующем, этот лейбл надо будет использовать в ServiceMonitor, PrometheusRule, чтобы оператор мог их найти и прочесть.

---
nameOverride: "prometheus"
commonLabels:
  monitoring: prometheus

alertmanager:
  enabled: true
  ingress:
    enabled: true
    labels: {}
    hosts:
      - alertmanager.example.com
    path: /
    tls: []
  alertmanagerSpec:
    storage:
     volumeClaimTemplate:
      spec:
        storageClassName: local-disks
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 4Gi

grafana:
  enabled: true
  defaultDashboardsEnabled: true
  adminPassword: myadmin
  persistence:
    type: statefulset
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 9Gi
    finalizers:
      - kubernetes.io/pvc-protection
  ingress:
    enabled: true
    labels: {}
    hosts:
      - grafana.example.com
    path: /
    tls: []

prometheus:
  enabled: true
  ingress:
    enabled: true
    annotations: {}
    labels: {}
    hosts:
      - prometheus.example.com
    path: /
    tls: []
  prometheusSpec:
    replicas: 1
    serviceMonitorSelector:
      matchLabels:
        monitoring: prometheus
    ruleSelector:
      matchLabels:
        monitoring: prometheus
    podMonitorSelector:
      matchLabels:
        monitoring: prometheus
    storageSpec:
     volumeClaimTemplate:
       spec:
         storageClassName: local-disks
         accessModes: ["ReadWriteOnce"]
         resources:
           requests:
             storage: 9Gi

Теперь установим оператор в неймспейс monitoring:

$ kubectl create ns monitoring
$ helm upgrade -i mon stable/prometheus-operator --namespace monitoring -f values.yaml
Поделиться
Отправить