apiVersion: v1
kind: ConfigMap
metadata:
  name: serverless-meta-config
data:
  config.yaml: |
    stage: staging
    region: __CP9_TARGET_REGION__
    log-level: info
    k8s-name: __CP9_REMOTE_CLUSTER_NAME__
    store:
      s3-bucket: __CP9_SERVERLESS_STORAGE_BUCKET__
      local:
        filename: /data/store/local.db
    repo:
      dynamodb-table: __CP9_INFRA_CLUSTER_TABLE__
    report:
      store-members:
        - serverless-metering-server-0
        - serverless-metering-server-1
    query:
      directory: /data/query
---
apiVersion: v1
kind: Service
metadata:
  name: meta-service
  labels:
    app: serverless-meta-server
spec:
  selector:
    app: serverless-meta-server
  ports:
    - name: server
      port: 8080
      targetPort: server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: serverless-meta-server
spec:
  replicas: 1
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: serverless-meta-server
  template:
    metadata:
      labels:
        app: serverless-meta-server
        app.kubernetes.io/component: serverless-metering
        app.kubernetes.io/name: serverless-meta-server
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "9090"
        prometheus.io/scrape: "true"
    spec:
      serviceAccountName: cp9-starter-runtime
      containers:
        - name: serverless-meta
          image: cp9.local/serverless-meta-service:placeholder
          imagePullPolicy: Always
          command:
            - /serverless-metering
            - meta-server
          ports:
            - name: server
              containerPort: 8080
            - name: metrics
              containerPort: 9090
          readinessProbe:
            tcpSocket:
              port: server
            initialDelaySeconds: 2
            periodSeconds: 5
          livenessProbe:
            tcpSocket:
              port: server
            initialDelaySeconds: 10
            periodSeconds: 10
          resources:
            limits:
              cpu: 100m
              memory: 1Gi
            requests:
              cpu: 100m
              memory: 512Mi
          volumeMounts:
            - name: config
              mountPath: /etc/serverless-metering
              readOnly: true
            - name: data
              mountPath: /data
      volumes:
        - name: config
          configMap:
            name: serverless-meta-config
        - name: data
          persistentVolumeClaim:
            claimName: serverless-meta-data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: serverless-meta-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ebs-sc
  resources:
    requests:
      storage: 5Gi
