apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: tidb-http-gateway
  labels:
    control-plane: tidb-http-gateway
spec:
  serviceName: tidb-http-gateway
  replicas: 1
  minReadySeconds: 10
  selector:
    matchLabels:
      control-plane: tidb-http-gateway
  template:
    metadata:
      labels:
        control-plane: tidb-http-gateway
        app.kubernetes.io/component: tidb-http-gateway
        app.kubernetes.io/name: tidb-http-gateway
    spec:
      containers:
        - name: tidb-http-gateway
          image: cp9.local/tidb-http-gateway:placeholder
          args:
            - --tls-cert=/http-gateway-tls/tls.crt
            - --tls-key=/http-gateway-tls/tls.key
            - --component-name=tidb-http-gateway
            - --log-level=DEBUG
            - --secret=__CP9_SESSION_NAME__
          ports:
            - name: https
              containerPort: 443
            - name: metrics
              containerPort: 9090
          livenessProbe:
            httpGet:
              path: /healthz
              port: https
              scheme: HTTPS
            initialDelaySeconds: 5
          readinessProbe:
            httpGet:
              path: /healthz
              port: https
              scheme: HTTPS
            initialDelaySeconds: 5
          resources:
            limits:
              cpu: "1"
              memory: 1Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: tls-certs
              mountPath: /http-gateway-tls
              readOnly: true
      volumes:
        - name: tls-certs
          secret:
            secretName: gateway-letsencrypt-secret
            defaultMode: 0440
---
apiVersion: v1
kind: Service
metadata:
  name: tidb-http-gateway
  labels:
    control-plane: tidb-http-gateway
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-type: external
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip
    service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true,stickiness.enabled=true,stickiness.type=source_ip
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-protocol: https
    service.beta.kubernetes.io/aws-load-balancer-healthcheck-path: /healthz
    service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: __CP9_LB_TAGS__
spec:
  selector:
    control-plane: tidb-http-gateway
  ports:
    - name: https
      port: 443
      protocol: TCP
      targetPort: 443
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  name: tidb-http-gateway-metrics
  labels:
    control-plane: tidb-http-gateway
spec:
  selector:
    control-plane: tidb-http-gateway
  ports:
    - name: metric
      port: 9090
      protocol: TCP
      targetPort: 9090
