apiVersion: v1
kind: ConfigMap
metadata:
  namespace: preview
  name: community-blog-preview-config
data:
  PROFILES: preview,sentry
  LARK_NOTICE_WEBHOOK_URL: "https://open.feishu.cn/open-apis/bot/v2/hook/2df8467e-cbe9-4269-974d-f14c654dadd8"
  BLOG_BASE_URL: "https://community-preview.tidb.net/blog"
  ENCODE_ACCESS_TOKEN_SALT: "tidb-blog-preview-salt"
  JAVA_TOOL_OPTIONS: "-XX:MaxRAMPercentage=75.0"
  # POST_AWARD_CRON: 0 0 6 * * *
  # POST_TEXT_PROCESS_CRON: 0 0 7 * * *
  # POST_CALC_SCORE_CRON: 0 */10 * * * *

---

apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: community-blog-preview-secrets-v1
  namespace: preview
spec:
  encryptedData:
    ALI_CLOUD_ACCESS_KEY: AgBvqlLXdqUdz+qHUTLuxXQSB/Mfj896fsy2CqbVP7t6ZJcthZAdBOySELrU+iUdyEv8WxtoCwIcOXRgC3z2GS4mTNaasfg6S5IxanS6B4MFbTNGrIGH15ECL9jGOfyJXvdQIdU47azEbVBWKHE+TUut1BJJVGK0no1LZfYi+wu0+zs3i08auQfDVq0vsM3mFCIN+j66A2ZFZl/e1EOZvc9SFyL2fsWPCMsN7GHL6TNfS87CsgWKCoBiibe8QHpshQqrSqVenBgZpMPDJP9hSuJUHxZDzpCYgZo3sXeCHPuYVthuvwRDDBcNohbcSXcRfQcw8o82KAz4t/OQSc8nLzfte6j7rqBpnYTpXB8mDWJzewwkRdeiDB4j/IDcCG3EGMr3zwqBSjS9Zl7d7tKEDSwVs2DLyYReusZRVbWXtLCvWZ0u00gujudonZ/10mqK+Q601kBPBlQOK3J56N/tHx+6uVD2n4imFCkSvntxs3sQwlGfI3VifkC/yevWIYwLQX6i6vK1prf9IG5JYqhnfVVz1iIpvDHdcCUqjKIgF2k4WBA5ttTGa/o5CUTeJQK72FXhfhpI3tWeF6uj+no62vx9FfGVIdQVD0+sNZmPCmdJdYyqQSq87OmRhuY1syJwQBojiD8e5+yNClFtFGQKXrMT3yjGpbgw3JezJP8ZAcA7sgGKS91KSEWMmjOnAKOOrdq2OxD+uhPgjYsvdQzrs2XGta94p0a27cc=
    ALI_CLOUD_SECRET_KEY: AgCKc7uVxatxcqMeAD4yu7mRY3xl/nhOYaYK05Kfuzc2Q7JpiK/b8sAfXwCFpQrrQiJQw/vVUuauNgxk41Koqbf4XHlFORbqd9bToXc8ZvnhlRDgCiTsaOSi1jA5THhDhcchNtKHLyfs+oW6arHGX8nJUpPDdEK3I8DvFAevZK7lQaE0YMCqPKPiVizbqqbR8Vwce35Gk6YdBX5VQcj8StBmYmTKGuB94uarcVLjtJwEGjSJ7yf678QSF3RYHVzZ7SGQPHdvZ8jX0H5SlftoYCnY0abFM4tVa2DQ6Z9eodUBRTjPj3RCLkrDRkuYsvFhnj+aLNXmSQ1Caqt79+cdIkrxh/8nqr4ix9dxcCZ5UPXHj+cal6msMuJ8SCtzfAzrGpmINeTDegpVx7sIqBNAxewrQLiaFO4CZrIsn8uXkrlcvmVP8+bpLT60vNAU+ncJwcD8Gdt2C1Qy/lV6o90O4Z9gZ1aC0ZbiylE16d0K1ws6TEVu8ibg+O3bk7u2+UC1ZLWKByS5+U7YtFBiZWZD0ynDtjt+GWK8+3K1yj1sZg/Rx6VVf7LDllQXu3IWAqFNNYm2XncL6QdXQSe0RKH5gustStbqzcDhI1vWf8I1DvPHvAvIOYg567Zrv+/dvh19VHW7S9VAhRy1uqs7dcW6e8xxF8xKQVPmvG8c8Y5MH1l53D37YjAdUIL6Xc+UTth7SPApyYSoX7zhs+GFby3WbOZSqXU3GD4UTMkTlOJ/GuY=
    MYSQL_PASSWORD: AgDD6jDn7QN42omNlSCg0iPmx4/IqS5hgPoPQh1zYQVqYaYc4gdNuDtRiqTW7nITvlBXl97TobeZ1J/jTs6e276JjAuqNIMLR6szWugLo3rQoAdV3CeaaCXXBYtf1NHRzWWVX0NYbR5Eh7hWUKdJJMazNUj4PibGL8AU/QCoPphDzZT5Z8UYlXOSVx/O/bGYr3EfsM9pwfU77r8UgJTm90OkcBT71OCOpzrPc3b43raDy/a2wcWXh8HuYnPPFanXNZQ9OdKvCwJcE9XkP8K7Aj6V6lHAdCrUfnxX6OATVBik940qYEXQVtPbukNdL79L+evfhZNht+Vi1FnIR1YBlB77Eakz/Ej6ZXrchTgvZaa3Ta0ad8+wSlt2pWt6N+VXyrtBE7kRDscN/2/YBsfNjddl3L/DBb8ixhTs+CsVq8HEOKsMhF+Pjifbp4ekofwIEgMHfdBXUAr9617gQXKgpuGWJwupeL9NGhMMLN67G1MBjqxE2YS/B9plXNIX9OOsqrryngXYMFLaofPM4/6ff59tf8MsKUjdRcle1tPBKcCPW6ZbrcvPmPQEIQ8Dg9ER0zoYiY1J39zSidnkPCOEk9D2DRSsekezX09GBlLrR1BeaWaomsT71X6WWKIFIOvApxJf3BE9W6ULBZCSL836oJHkw8DH6bXn1cuGZw4Co1H6oAQMgG0zBwIACrlCM7315W6MLQljhRK/yJgGQXCVMJQ=
    MYSQL_URL: AgASgB59FiAsNhjL3Ih/vFeyX3Xq6V9vWyOPsbZuOyW/tnJGe1OxlGZVoj8AQUkF9gm9LVq9ivfNwTAiaUs6jD0VDS2MTO7tdhfhJut5DNZROFxgOLdCjcLEf6pOyBVXktARyYgPLkLBr7+OwP2GQZWltTvqGPOKIj4Ao+7rhR/uIaMxJBrmnI+goZN6Z1qfnF1w9v4ZcrF8Avs/h0gH/PtLJcYYR/d75FNVx41fYoF7itQo5hNi+TM9FRaV8EdczNL+7qkv++eMcSWUn/AmLLY24umzbYPf3VnQQLz+lRKsD1v0P+DUtXSIvZcRXEelApfihnXGspRmTAeuUT2gIKmad59kHAXOKOsO4BYuA1RxJt4Vp3cw0Cj1LExDoFAvAADnOLzYujXVLY5ZFl21125TPld6p8hhh150L4Dep6u1k1FknsW5561rBl1g7I+g/yLs4epu35GbtAvefIrWRHQN5tNljBll2P2GD9RMVdFNMiJSFQrgqAtwckpYSbBd8Il1VB7b9eGtUCdwU0KPeqUe0IqCFPEVx3BhXl3FrDcpo/TL0Ke3ouICF0ExQzv0pDiC1PKE73xqYM4Sp9nxXi6QQeI06bLvqQCBNh1W5hexs0ltpLLYI4M+XnQDB3J0uXPnRGtJN+lwFr47lzgF4/Yewi83yXzygkH3qLSD5YIywt1vYVUvvgObJ5hNlon/sEkPdJjLcWopd+4DxUGgMXrA2e+Ir/UThnL6Ah61QpKu8MI=
    MYSQL_USERNAME: AgAWUuOolkCiwlblRPAIiRO8gJcP3gbo0Oun8zrksCjm+GpU+WNQz/c/t/TQ131DnPXjnPIRPlOXfc5lvJgvPOc7/iV/dSImFOCnDlo6gNBJGahTS3UVMaMOsXHFyuJ3yTRAmqYRl0HUfPJhOjVL2/EIT5nVUQevWE9J5KRLrGKLOvYTt4jkjYRw1EudN/Ng58BXBg8RKOwAk/P9MzCf49piy+u+BFc3jx75uacA3NV9HX+fncBIw5SAFkKdjSBbMvEoYqEvI5ANDXoqsEPMJ1aR52YO3ewnmI0w2/9zw1wo1ZoBObqYa1hWyP9T5PmWYRqDA3YJhYFHB5bTB/Ds6xtpiaWV6F9HxNeUYNR0y566K4KHE54ae/Wf3VwssZWH6BYYmjBfGtr4/1pX5ZbTgqrX2fbiHlsaLmPGF0wBMZOw1GakuiuzWKTOclNlHMUttJRnGHxfxm1KF2ywPSXbKFpfA8egH8L8AU3dUjGZqsHialWyEv2O6CTlU0FCk91FsQTUmcNqFwYtwASdz3ZLgcGtCmubfZz1WHstfbdmfYW8SVrIQ3Id83Jwwo+6cJC1OgeHB/sg3W5Nv1hgEgWN69gs9R9AE+ixN6jxpiAKy6r9rRZvI/+PbFjpOFeGd2t8pdrpd7jolMRgHOCweeZaNTFfeQ7sVgW34+Xq07plNXipzEKF6Ga9WjoAW1qKYUohNZa+iPC5Clc5RQ==
    SENTRY_DSN: AgBc5c9vWY5VI83gsefbfSf+TO8eiwRhHfIC/tiVcFHEV0OTYpI0O3PQf/RzlyELedo4BgSh73eplfIrp90i6MqElbKr6p9MB1SQzbDgnR/OQ1TclGK3W+tHrb1ORn6iQHz6niF/dn1eK+EMeD+2bNOhOXyueATNxdcJ5E1UOASysIv6yzcbY0rJRDEDz2TDvrBxAViAdzcmTysCPWbV2aatRmZNrgFLk57BvcEmr0/JIhIgJwWNgDg1r6jHL7a4BAwLr6vPS3IrrPV1YFiuzDInpz0knKO097o9Q2o7TQkeSoq5HGBeSH9xw/1pmHLYLcYx1/p1YXjrQrg/NncHEmeuGxJ6QDJ8E9jCeMIMrkilCt4Agu+TvrpdgyeANhwvYGKDEGyVa0mADfHkMMqKaATIwXk/cO5fg4C56/uMqvHDLIkdJLY28Fsnf1jk13Z4UsacGz8GDy+GMZAEnhiNUdnTykPpEUkWZDONalg+aBjkn4dKA46XTBPieQZUZcwQhMWHu+QcRd6vi7sZ8FJ9e1JnhvD+1YMAqHQzN+mEMGj7iwUD12lEkXzGbDI/US6Y3fHLD+EIm5W3atnt/NyPedOucZQbqwlH8c+jOin2I90/n2F/QvFhN1uPHEUVzVNDi8pqGEt+8xwBdtel2CG2GkYg4qV84m1VtcqGvSCBRlQztYez1QEyZyMMLUb6gzqJD1/8Pfj2vfriE+qCzgm/biYeNkBWnM6+H7TvvT9VeRc9FAJsWs+Fy3u39Pkv8B0er+eo3HJSKd8RLOQTWGT/1qT6RIrbUJYu+3Qx
    SSO_API_TOKEN: AgA06zHue0J1AEvWYD/4WWvzVmYxtb9QwHnbXgHqpLXxjObTfwG7hMLuDG+woLsp2Qk2M+8ImyaauVgsjUw6+X35TzsLzvdG6+a3V0L5r+lmFomz/COL5qr8IoJUpg45mQfQ2+Dz1QOgAPiwpSXEtteGe0qv8WkO0j8WhdyyF+Phykb3oEk7kZUQ9S5rDLJNR/J6LdvYA7f/SgLrkVycZS6t+krL3/F3Vu0R5hjdCuOhb2i2pZ2sfOgKpyinUoJ7Yt5bDDq+b5ZRJh9ktuA5fFqGpn6O/y8nbLnMWuAXg8aAGeltdoLZFHiRA01IzbOqHr0ISshnr+0FJsJcHgckhEwUJEY1aHGr/3XHdj3Hd71VP5BB6NpynZE7XaYrMOgro9UadN2uPVtLQQ9C+rVqZQynJZjvMzvr28OzKyUxaA6vtQxv+8DYim3KznsJ6kwKOh6gQMgz3QCp3fNadJ4UJQm6ZQx6MpT1faV6oIZDhfrgf6W+vO1SOGgjGGVwNPeEsEiqLXpaHSnB7UmEl6aiPl8lcPtb/J6jAwvKcANsiLZEtMC4gjYtZGnr7haM7AG8uZmtlz+FsvyU2klk5qRkur5+g04hNpw/iJ6GM9pmQuDcdoWetioDk1kocKaidgQOLUSwAJnDhaJDX0WoZkb2sKbXncsgKJ7uAHvrOj3cL2OuV3kFjlv+Fmlli2/rXedTtiq6wmqObm29mwwvdhjXuvjh8z/H0ux3cS76phtW6EW1kjEF6A9RvrUedk4pJj56STLMUM8aiWDsoyLNwW+bWJhu
  template:
    data: null
    metadata:
      creationTimestamp: null
      name: community-blog-preview-secrets-v1
      namespace: preview
    type: Opaque

---

apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
  creationTimestamp: null
  name: community-blog-preview-trigger-secrets
  namespace: preview
spec:
  encryptedData:
    JOB_TRIGGER_TOKEN: AgBSTjG4VS9o5Lng+MM2kPq3iY7DCymKdx/azg59VjBsXKmaX/bRT+GM/tiLYUBMNX+pP6NhPu9b0jPVeHNpSVLULARPWglO6uPPWUMNmA7AGHy6UK+FQWeT/rnBWtAa+Ug8fDcrxek2M0VgnoU2o7sgpeKbzUeYGTjM94i59i+Jiv0I1Izvy6vLnwARCuOe8V+EYkYH8zoWSvl8qzgZHA7pmwwIqngbQiUy68uZF69iEt9LRjdNjTr8dIwSoLJHsJXwjshfy5ipmV/axwXPPIJbkdzIAnY0SAGkaKy/nv8lBLr0ImovPiMhOsqi0+X5TZx8MSYnhNN63ZxXC4wi33ugnaYxFdWwSdFi1juKvavIuN0eLU9VhtIY2MmvVImXfLOKyBq50gI14y22BnEag3W4HYlwZQy55QpcMwCGszBWIp7Dzugz54qgW4CPvkvsY0Q/BTdkHuwUBN8mkVTC4WGrgY/R5G1D7QiDeBhYmR983IWz1A/p/B5hiV451HaFeZ5ovnFORQDYZ/M7ne45WCYwjR58TK9doDoOQzC+O/YQWs3f+062ahe834aE8JkeqAtwv2YsueSp0ba6pIoehszvvyQyW2/AZ7vbLRF1rXtjwx5D2Pmqtx/o1ooagyYVpo9SMqRfRO/cYDBlfUZV67GMiLeLsGt3hulaCj+bedEWjJe62NnqdYxmPHzgXYlV2U4ZF7r4xGYKMqYXoU7nOWl5WrvF17OiRVgU4YQOFjSMU2xoY0I=
  template:
    data: null
    metadata:
      creationTimestamp: null
      name: community-blog-preview-trigger-secrets
      namespace: preview
    type: Opaque

---

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: preview
  name: community-blog-preview
spec:
  replicas: 1
  selector:
    matchLabels:
      app: community-blog-preview
  template:
    metadata:
      labels:
        app: community-blog-preview
    spec:
      containers:
      - name: server
        image: registry.cn-hongkong.aliyuncs.com/pingcap-ee/tidb-community-blog-server:v1.3.5
        envFrom:
        - configMapRef:
            name: community-blog-preview-config
        - secretRef:
            name: community-blog-preview-secrets-v1
        readinessProbe:
          httpGet:
            path: /actuator/health/readiness
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 3
          timeoutSeconds: 5
        livenessProbe:
          httpGet:
            path: /actuator/health/liveness
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          failureThreshold: 3
          timeoutSeconds: 5
        startupProbe:
          httpGet:
            path: /actuator/health/liveness
            port: 8080
          periodSeconds: 3
          failureThreshold: 30
        ports:
        - containerPort: 8080
        resources:
          limits:
            cpu: "1"
            memory: 1Gi
          requests:
            cpu: "0.5"
            memory: 256Mi
      imagePullSecrets:
      - name: aliyun-hongkong-registry

---

apiVersion: v1
kind: Service
metadata:
  namespace: preview
  name: community-blog-preview
  labels:
    app: community-blog-preview
spec:
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
      name: http
  selector:
    app: community-blog-preview

---

apiVersion: v1
kind: Service
metadata:
  namespace: preview
  name: community-blog-internal-preview
  labels:
    app: community-blog-preview
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
      name: http
  selector:
    app: community-blog-preview

---

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: blog-post-calc-score-job
  namespace: preview
spec:
  schedule: "*/5 * * * *"
  concurrencyPolicy: "Forbid"
  successfulJobsHistoryLimit: 1
  jobTemplate:
    metadata:
      labels:
        app: community-blog-preview
    spec:
      template:
        spec:
          containers:
          - name: blog-post-calc-score-job
            image: curlimages/curl:7.84.0
            imagePullPolicy: IfNotPresent
            command:
            - "sh"
            - "-c"
            args:
            - "curl -i -H \"Authorization: Bearer ${JOB_TRIGGER_TOKEN}\" -X POST http://community-blog-preview/api/manage/jobs/calcPostScoreJob"
            envFrom:
            - secretRef:
                name: community-blog-preview-trigger-secrets
          restartPolicy: OnFailure

---

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: blog-post-award-job
  namespace: preview
spec:
  schedule: "15 11 * * *"
  concurrencyPolicy: "Forbid"
  successfulJobsHistoryLimit: 1
  jobTemplate:
    metadata:
      labels:
        app: community-blog-preview
    spec:
      template:
        spec:
          containers:
          - name: blog-post-award-job
            image: curlimages/curl:7.84.0
            imagePullPolicy: IfNotPresent
            command:
            - "sh"
            - "-c"
            args:
            - "curl -i -H \"Authorization: Bearer ${JOB_TRIGGER_TOKEN}\" -X POST http://community-blog-preview/api/manage/jobs/awardPostAgainJob"
            envFrom:
            - secretRef:
                name: community-blog-preview-trigger-secrets
          restartPolicy: OnFailure
---

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: blog-post-generate-text-job
  namespace: preview
spec:
  schedule: "20 11 * * *"
  concurrencyPolicy: "Forbid"
  successfulJobsHistoryLimit: 1
  jobTemplate:
    metadata:
      labels:
        app: community-blog-preview
    spec:
      template:
        spec:
          containers:
          - name: blog-post-generate-text-job
            image: curlimages/curl:7.84.0
            imagePullPolicy: IfNotPresent
            command:
            - "sh"
            - "-c"
            args:
            - "curl -i -H \"Authorization: Bearer ${JOB_TRIGGER_TOKEN}\" -X POST http://community-blog-preview/api/manage/jobs/generatePostTextJob"
            envFrom:
            - secretRef:
                name: community-blog-preview-trigger-secrets
          restartPolicy: OnFailure
