apiVersion: apps/v1 kind: Deployment metadata: name: metrics-collector namespace: fission labels: app: metrics-collector spec: replicas: 1 selector: matchLabels: app: metrics-collector template: metadata: labels: app: metrics-collector spec: containers: - name: metrics-collector image: naeel/metrics-collector:v0.1.3 ports: - containerPort: 8091 env: - name: PORT value: "8091" livenessProbe: httpGet: path: /health port: 8091 initialDelaySeconds: 5 periodSeconds: 20 readinessProbe: httpGet: path: /health port: 8091 initialDelaySeconds: 3 periodSeconds: 10 resources: requests: cpu: 10m memory: 16Mi limits: cpu: 100m memory: 64Mi --- apiVersion: v1 kind: Service metadata: name: metrics-collector namespace: fission spec: selector: app: metrics-collector ports: - port: 8091 targetPort: 8091 --- # ⛔ АРХИТЕКТУРА: три независимые сущности: # 1. croned (функция) — шлёт метрики POST /metrics → metrics-collector:8091 # 2. metrics-collector (этот сервис) — хранит и отдаёт метрики, UI на /cron # 3. fission-console — управление функциями, НЕ ЗНАЕТ про метрики # # ⛔ НЕ ПЕРЕНОСИТЬ /cron в ingress fission-console — это ломает архитектуру. # ⛔ НЕ УБИРАТЬ этот Ingress — без него /cron страница недоступна снаружи. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: metrics-collector namespace: fission annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "true" cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: ingressClassName: nginx rules: - host: fission.kube5s.ru http: paths: - path: /cron pathType: Prefix backend: service: name: metrics-collector port: number: 8091 tls: - hosts: - fission.kube5s.ru secretName: fission-tls