diff --git a/manifest.yaml b/manifest.yaml index e69de29..ede2af0 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -0,0 +1,256 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: badger + labels: + tags.datadoghq.com/env: "prod" + tags.datadoghq.com/service: "badger" + tags.datadoghq.com/version: "v0.1.136" +spec: + selector: + matchLabels: + app: badger + replicas: 2 + template: + metadata: + labels: + app: badger + tags.datadoghq.com/env: "prod" + tags.datadoghq.com/service: "badger" + tags.datadoghq.com/version: "v0.1.136" + spec: + containers: + - name: badger + image: "docker.pkg.github.com/wahyd4/badger/badger:v0.1.136" + securityContext: + runAsUser: 1000 + imagePullPolicy: Always + env: + - name: DD_AGENT_HOST + valueFrom: + fieldRef: + fieldPath: status.hostIP + - name: DD_ENV + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/env'] + - name: DD_SERVICE + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/service'] + - name: DD_VERSION + valueFrom: + fieldRef: + fieldPath: metadata.labels['tags.datadoghq.com/version'] + - name: DB_HOST + value: new-postgres-postgresql.db.svc.cluster.local + - name: DB_NAME + value: badges + - name: DB_USERNAME + value: postgres + - name: DB_PASSWORD + valueFrom: + { secretKeyRef: { name: database-credentials, key: password } } + - name: DB_PORT + value: "5432" + - name: GIN_MODE + value: release + - name: SENTRY_DSN + valueFrom: + { secretKeyRef: { name: sentry-credentials, key: dsn } } + ports: + - containerPort: 8080 + name: badger-port + protocol: TCP + - containerPort: 9090 + name: metrics-port + protocol: TCP + resources: + requests: + cpu: 20m + memory: 32Mi + limits: + cpu: 50m + memory: 64Mi + imagePullSecrets: + - name: regcred +--- +apiVersion: v1 +kind: Service +metadata: + name: badger + labels: + app: badger +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: badger-port + protocol: TCP + name: web + - port: 9090 + targetPort: metrics-port + protocol: TCP + name: metrics-port + selector: + app: badger + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: badger-ui +spec: + selector: + matchLabels: + app: badger-ui + replicas: 2 + template: + metadata: + labels: + app: badger-ui + spec: + containers: + - name: badger-ui + image: "docker.pkg.github.com/wahyd4/badger/ui:v0.1.136" + securityContext: + runAsUser: 0 + imagePullPolicy: Always + env: + - name: BASE_URL + value: "https://badges.toozhao.com" + - name: GITHUB_CLIENT_ID + valueFrom: + { secretKeyRef: { name: github-credentials, key: clientId } } + - name: GITHUB_CLIENT_SECRET + valueFrom: + { + secretKeyRef: { name: github-credentials, key: clientSecret }, + } + ports: + - containerPort: 3000 + name: ui-port + protocol: TCP + resources: + requests: + cpu: 100m + memory: 100Mi + limits: + cpu: 200m + memory: 256Mi + imagePullSecrets: + - name: regcred +--- +apiVersion: v1 +kind: Service +metadata: + name: badger-ui + labels: + app: badger-ui +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: ui-port + protocol: TCP + name: ui + selector: + app: badger-ui + +--- +apiVersion: networking.k8s.io/v1beta1 +kind: Ingress +metadata: + name: badger-ingress + annotations: + kubernetes.io/ingress.class: "nginx" + kubernetes.io/tls-acme: "true" + cert-manager.io/cluster-issuer: "letsencrypt-prod" + nginx.ingress.kubernetes.io/global-rate-limit-window: 1m + nginx.ingress.kubernetes.io/global-rate-limit: 20 +spec: + tls: + - hosts: + - badge.home.toozhao.com + secretName: badger-tls + - hosts: + - badges.toozhao.com + secretName: badges-2-tls + rules: + - host: badges.toozhao.com + http: + paths: + - path: / + pathType: Prefix + backend: + serviceName: badger-ui + servicePort: 80 + - path: /badges + pathType: Exact + backend: + serviceName: badger-ui + servicePort: 80 + - path: /stats + pathType: Prefix + backend: + serviceName: badger-ui + servicePort: 80 + - path: /login + pathType: Prefix + backend: + serviceName: badger-ui + servicePort: 80 + - path: /_auth + pathType: Prefix + backend: + serviceName: badger-ui + servicePort: 80 + - path: /callback + pathType: Prefix + backend: + serviceName: badger-ui + servicePort: 80 + - path: /badges + pathType: Prefix + backend: + serviceName: badger + servicePort: 80 + - path: /svg + pathType: Prefix + backend: + serviceName: badger + servicePort: 80 + - path: /val + pathType: Prefix + backend: + serviceName: badger + servicePort: 80 + - path: /api + pathType: Prefix + backend: + serviceName: badger + servicePort: 80 + - path: /ping + pathType: Prefix + backend: + serviceName: badger + servicePort: 80 + +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: badger + labels: + app: badger + release: prometheus # this can make the service monitor be discovered by prometheus +spec: + namespaceSelector: + matchNames: + - apps + selector: + matchLabels: + app: badger + endpoints: + - port: metrics-port + interval: 30s