<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Deploy App :: Ay Docs</title>
    <link>https://ops.docs.72602.space/csst/application/index.html</link>
    <description>Deploy CCDS Server Deploy DFS Server Deploy DFS Ephem Deploy CSST Gateway</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 12 Mar 2024 15:00:59 +0800</lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/csst/application/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Deploy CCDS Server</title>
      <link>https://ops.docs.72602.space/csst/application/init_ccds_server/index.html</link>
      <pubDate>Tue, 12 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/csst/application/init_ccds_server/index.html</guid>
      <description>Preliminary MariaDB has installed though argo-workflow, if not check link Redis has installed though argo-workflow, if not check link And init mariadb has finished, if not check link nfs-external-nas nas server has initialized as somewhere, if not check link Steps 1. decode mariadb password kubectl -n application get secret mariadb-credentials -o jsonpath=&#39;{.data.mariadb-root-password}&#39; | base64 -d 2. prepare combo-data-pvc.yaml --- apiVersion: &#34;v1&#34; kind: &#34;PersistentVolumeClaim&#34; metadata: name: &#34;ccds-data-pvc&#34; namespace: &#34;application&#34; spec: accessModes: - &#34;ReadWriteMany&#34; resources: requests: storage: &#34;200Gi&#34; storageClassName: &#34;nfs-external-nas&#34; status: accessModes: - &#34;ReadWriteMany&#34; capacity: storage: &#34;200Gi&#34; --- apiVersion: &#34;v1&#34; kind: &#34;PersistentVolumeClaim&#34; metadata: name: &#34;csst-data-pvc&#34; namespace: &#34;application&#34; spec: accessModes: - &#34;ReadWriteMany&#34; resources: requests: storage: &#34;200Gi&#34; storageClassName: &#34;nfs-external-nas&#34; status: accessModes: - &#34;ReadWriteMany&#34; capacity: storage: &#34;200Gi&#34; 3. prepare deploy-ccds-server.yaml apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: deploy-ccds- spec: entrypoint: entry artifactRepositoryRef: configmap: artifact-repositories key: default-artifact-repository serviceAccountName: argo-workflow templates: - name: entry inputs: parameters: - name: argocd-server value: argo-cd-argocd-server.argocd:443 - name: insecure-option value: --insecure dag: tasks: - name: apply template: apply - name: prepare-argocd-binary template: prepare-argocd-binary dependencies: - apply - name: sync dependencies: - prepare-argocd-binary template: sync arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: wait dependencies: - sync template: wait arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: apply resource: action: apply manifest: | apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: ccds-server namespace: argocd spec: syncPolicy: syncOptions: - CreateNamespace=true project: default source: repoURL: https://charts.bitnami.com/bitnami chart: nginx targetRevision: 15.10.4 helm: releaseName: ccds-server values: | image: registry: cr.registry.res.cloud.wuxi-yqgcy.cn repository: csst/ccds tag: V1-argo-test pullPolicy: IfNotPresent extraEnvVars: - name: TZ value: Asia/Shanghai - name: FLASK_DEBUG value: &#34;0&#34; - name: FLASK_ENV value: &#34;production&#34; - name: DATABASE_URL value: &#34;mysql://root:IqzfDQfjkzfNhsCS@app-mariadb.application:3306/ccds?charset=utf8&#34; - name: REDIS_HOST value: &#34;app-redis-master.application&#34; - name: REDIS_PWD value: &#34;THY7BxnEIOeecarE&#34; - name: REDIS_PORT value: &#34;6379&#34; - name: CSST_DFS_API_MODE value: &#34;cluster&#34; - name: CSST_DFS_GATEWAY value: &#34;csst-gateway.csst:80&#34; - name: CSST_DFS_APP_ID value: &#34;test&#34; - name: CSST_DFS_APP_TOKEN value: &#34;test&#34; containerSecurityContext: enabled: false replicaCount: 1 containerPorts: http: 9000 extraVolumes: - name: csst-data-pvc persistentVolumeClaim: claimName: csst-data-pvc - name: ccds-data-pvc persistentVolumeClaim: claimName: ccds-data-pvc extraVolumeMounts: - mountPath: /csst-data name: csst-data-pvc - mountPath: /ccds-data name: ccds-data-pvc service: type: ClusterIP ports: http: 9000 targetPort: http: 9000 destination: server: https://kubernetes.default.svc namespace: application - name: prepare-argocd-binary inputs: artifacts: - name: argocd-binary path: /tmp/argocd mode: 755 http: url: https://files.m.daocloud.io/github.com/argoproj/argo-cd/releases/download/v2.9.3/argocd-linux-amd64 outputs: artifacts: - name: argocd-binary path: &#34;{{inputs.artifacts.argocd-binary.path}}&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 command: - sh - -c args: - | ls -l {{inputs.artifacts.argocd-binary.path}} - name: sync inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password - name: WITH_PRUNE_OPTION value: --prune command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app sync argocd/ccds-server ${WITH_PRUNE_OPTION} --timeout 300 - name: wait inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app wait argocd/ccds-server 4. create pvc resource kubectl -n application apply -f combo-data-pvc.yaml 5. subimit to argo workflow client argo -n business-workflows submit deploy-ccds-server.yaml</description>
    </item>
    <item>
      <title>Deploy DFS Server</title>
      <link>https://ops.docs.72602.space/csst/application/init_dfs_server/index.html</link>
      <pubDate>Tue, 12 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/csst/application/init_dfs_server/index.html</guid>
      <description>Preliminary MariaDB has installed though argo-workflow, if not check link Postgresql has installed though argo-workflow, if not check link And init mariadb has finished, if not check link And init postgresql has finished, if not check link Steps 0. prepare csst.yaml global: fitsFileRootDir: /opt/temp/csst/fits_file fileExternalPrefix: http://csst.astrolab.cn/file tempDir: /tmp etcd: host: 0.0.0.0 port: 2379 redisChannel0: host: app-redis-master.application port: 6379 db_id: 0 channel0: channel0 passwd: level0_list: single-image-reduction:data0 csst_db: enabled: true host: 172.27.253.66 port: 30173 user: &#34;postgres&#34; passwd: &#34;woQ8btfS44ei1Bbx&#34; db: &#34;csst&#34; maxIdleConnection: 100 maxOpenConnection: 130 connMaxLifetime: 100 csst_db_seq: enabled: true host: 172.27.253.66 port: 30173 user: &#34;postgres&#34; passwd: &#34;woQ8btfS44ei1Bbx&#34; db: &#34;csst&#34; maxIdleConnection: 100 maxOpenConnection: 130 connMaxLifetime: 100 csst_ck: enabled: true url: tcp://app-clickhouse-service-external.application:30900?compress=true host: app-clickhouse-service-external clusters: app-clickhouse-service-external:30900 port: 30900 db: csst user: admin passwd: &#34;YEkvhrhEaeZTf7E0&#34; gateway: enabled: true url: csst-gateway.application:31280 ephem_ck_db: enabled: true url: tcp://app-clickhouse-service-external.application:30900?compress=true host: app-clickhouse-service-external port: 30900 db: ephem user: admin passwd: &#34;YEkvhrhEaeZTf7E0&#34; maxIdleConnection: 100 maxOpenConnection: 130 connMaxLifetime: 100 csst_doris_db: enabled: true host: app-mariadb port: 3306 user: &#34;root&#34; passwd: &#34;IqzfDQfjkzfNhsCS&#34; db: &#34;ccds&#34; maxIdleConnection: 100 maxOpenConnection: 130 connMaxLifetime: 100 redis: enabled: true conn: app-redis-master.application:6379 dbNum: 8 password: timeout: 3000 sentinel: master: csstMaster nodes: app-redis-master.application:6379 jwt: secretKey: W6VjDud2W1kMG3BicbMNlGgI4ZfcoHtMGLWr auth_srv: name: net.cnlab.csst.srv.auth. address: port: 9030 zap: level: error development: true logFileDir: outputPaths: [] maxSize: 50 maxBackups: 200 maxAge: 10 dfs_srv: name: net.cnlab.csst.srv.dfs-srv. address: port: 9100 ephem_srv: name: net.cnlab.csst.srv.ephem. address: port: 9060 ephem_rest: name: net.cnlab.csst.srv.ephem-rest. address: port: 9068 user_srv: name: net.cnlab.csst.srv.user. address: port: 9090 fits_srv: name: net.cnlab.csst.srv.fits. address: port: 9002 1. creat csst-credentials kubectl -n application create secret generic csst-credentials --from-file=./csst.yaml 2. [Optional] prepare csst-data-pvc.yaml apiVersion: &#34;v1&#34; kind: &#34;PersistentVolumeClaim&#34; metadata: name: &#34;csst-data-pvc&#34; namespace: &#34;application&#34; spec: accessModes: - &#34;ReadWriteMany&#34; resources: requests: storage: &#34;200Gi&#34; storageClassName: &#34;nfs-external-nas&#34; status: accessModes: - &#34;ReadWriteMany&#34; capacity: storage: &#34;200Gi&#34; 3. prepare deploy-dfs-server.yaml apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: deploy-dfs-server- spec: entrypoint: entry artifactRepositoryRef: configmap: artifact-repositories key: default-artifact-repository serviceAccountName: argo-workflow templates: - name: entry inputs: parameters: - name: argocd-server value: argo-cd-argocd-server.argocd:443 - name: insecure-option value: --insecure dag: tasks: - name: apply template: apply - name: prepare-argocd-binary template: prepare-argocd-binary dependencies: - apply - name: sync dependencies: - prepare-argocd-binary template: sync arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: wait dependencies: - sync template: wait arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: apply resource: action: apply manifest: | apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: dfs-server namespace: argocd spec: syncPolicy: syncOptions: - CreateNamespace=true project: default source: repoURL: https://charts.bitnami.com/bitnami chart: nginx targetRevision: 15.10.4 helm: releaseName: dfs-server values: | image: registry: cr.registry.res.cloud.wuxi-yqgcy.cn repository: mirror/dfs-server tag: v240306-r1 pullPolicy: IfNotPresent extraEnvVars: - name: ZONEINFO value: /opt/zoneinfo.zip - name: TZ value: Asia/Shanghai - name: CONFIG_FILE_PATH value: /app/csst.yaml - name: PYTHONPATH value: /work/csst-py/:/work/csst-py/dfs-srv:/work/packages:/work/csst-dfs-proto-py:/work/csst-dfs-commons:/work/csst-dfs-base containerSecurityContext: enabled: false containerPorts: http: 9100 extraVolumes: - name: csst-data-pvc persistentVolumeClaim: claimName: csst-data-pvc - name: dfs-csst-config secret: secretName: csst-credentials extraVolumeMounts: - mountPath: /share/dfs name: csst-data-pvc - mountPath: /app name: dfs-csst-config service: type: ClusterIP ports: http: 9100 targetPort: http: http ingress: enabled: false destination: server: https://kubernetes.default.svc namespace: application - name: prepare-argocd-binary inputs: artifacts: - name: argocd-binary path: /tmp/argocd mode: 755 http: url: https://files.m.daocloud.io/github.com/argoproj/argo-cd/releases/download/v2.9.3/argocd-linux-amd64 outputs: artifacts: - name: argocd-binary path: &#34;{{inputs.artifacts.argocd-binary.path}}&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 command: - sh - -c args: - | ls -l {{inputs.artifacts.argocd-binary.path}} - name: sync inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password - name: WITH_PRUNE_OPTION value: --prune command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app sync argocd/dfs-server ${WITH_PRUNE_OPTION} --timeout 300 - name: wait inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app wait argocd/dfs-server 4. [Optional] create pvc resource kubectl -n application apply -f csst-data-pvc.yaml 5. subimit to argo workflow client argo -n business-workflows submit deploy-dfs-server.yaml</description>
    </item>
    <item>
      <title>Deploy DFS Ephem</title>
      <link>https://ops.docs.72602.space/csst/application/init_dfs_ephem/index.html</link>
      <pubDate>Tue, 12 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/csst/application/init_dfs_ephem/index.html</guid>
      <description>Preliminary MariaDB has installed though argo-workflow, if not check link Postgresql has installed though argo-workflow, if not check link And init mariadb has finished, if not check link And init postgresql has finished, if not check link Steps 1. [Optional] creat csst-credentials kubectl -n business-workflows create secret generic csst-credentials --from-file=./csst.yaml 3. prepare deploy-dfs-ephem.yaml apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: deploy-dfs-ephem- spec: entrypoint: entry artifactRepositoryRef: configmap: artifact-repositories key: default-artifact-repository serviceAccountName: argo-workflow templates: - name: entry inputs: parameters: - name: argocd-server value: argo-cd-argocd-server.argocd:443 - name: insecure-option value: --insecure dag: tasks: - name: apply template: apply - name: prepare-argocd-binary template: prepare-argocd-binary dependencies: - apply - name: sync dependencies: - prepare-argocd-binary template: sync arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: wait dependencies: - sync template: wait arguments: artifacts: - name: argocd-binary from: &#34;{{tasks.prepare-argocd-binary.outputs.artifacts.argocd-binary}}&#34; parameters: - name: argocd-server value: &#34;{{inputs.parameters.argocd-server}}&#34; - name: insecure-option value: &#34;{{inputs.parameters.insecure-option}}&#34; - name: apply resource: action: apply manifest: | apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: dfs-ephem namespace: argocd spec: syncPolicy: syncOptions: - CreateNamespace=true project: default source: repoURL: https://charts.bitnami.com/bitnami chart: nginx targetRevision: 15.10.4 helm: releaseName: dfs-ephem values: | image: registry: cr.registry.res.cloud.wuxi-yqgcy.cn repository: mirror/dfs-server tag: v240306-r1 pullPolicy: IfNotPresent command: - python args: - /work/csst-py/ephem-srv/csst_ephem_srv/server.py extraEnvVars: - name: ZONEINFO value: /opt/zoneinfo.zip - name: TZ value: Asia/Shanghai - name: CONFIG_FILE_PATH value: /app/csst.yaml - name: CONFIG_SERVER value: &#34;cdfs-config.csst:9610&#34; - name: PYTHONPATH value: /work/csst-py/ephem-srv:/work/csst-py/:/work/csst-py/dfs-srv:/work/packages:/work/csst-dfs-proto-py:/work/csst-dfs-commons:/work/csst-dfs-base containerSecurityContext: enabled: false replicaCount: 1 containerPorts: http: 9060 service: type: ClusterIP ports: http: 9060 targetPort: http: http ingress: enabled: false extraVolumes: - name: dfs-csst-config secret: secretName: csst-credentials extraVolumeMounts: - mountPath: /app name: dfs-csst-config destination: server: https://kubernetes.default.svc namespace: application - name: prepare-argocd-binary inputs: artifacts: - name: argocd-binary path: /tmp/argocd mode: 755 http: url: https://files.m.daocloud.io/github.com/argoproj/argo-cd/releases/download/v2.9.3/argocd-linux-amd64 outputs: artifacts: - name: argocd-binary path: &#34;{{inputs.artifacts.argocd-binary.path}}&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 command: - sh - -c args: - | ls -l {{inputs.artifacts.argocd-binary.path}} - name: sync inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password - name: WITH_PRUNE_OPTION value: --prune command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app sync argocd/dfs-ephem ${WITH_PRUNE_OPTION} --timeout 300 - name: wait inputs: artifacts: - name: argocd-binary path: /usr/local/bin/argocd parameters: - name: argocd-server - name: insecure-option value: &#34;&#34; container: image: m.daocloud.io/docker.io/library/fedora:39 env: - name: ARGOCD_USERNAME valueFrom: secretKeyRef: name: argocd-login-credentials key: username - name: ARGOCD_PASSWORD valueFrom: secretKeyRef: name: argocd-login-credentials key: password command: - sh - -c args: - | set -e export ARGOCD_SERVER={{inputs.parameters.argocd-server}} export INSECURE_OPTION={{inputs.parameters.insecure-option}} export ARGOCD_USERNAME=${ARGOCD_USERNAME:-admin} argocd login ${INSECURE_OPTION} --username ${ARGOCD_USERNAME} --password ${ARGOCD_PASSWORD} ${ARGOCD_SERVER} argocd app wait argocd/dfs-ephem 3. subimit to argo workflow client argo -n business-workflows submit deploy-dfs-ephem.yaml</description>
    </item>
    <item>
      <title>Deploy CSST Gateway</title>
      <link>https://ops.docs.72602.space/csst/application/init_csst_gateway/index.html</link>
      <pubDate>Tue, 12 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/csst/application/init_csst_gateway/index.html</guid>
      <description>Preliminary DFS server has installed though argo-workflow, if not check link DFS ephem has installed though argo-workflow, if not check link Warning if the dfs server, dfs ephem and namespace isn’t match, you might need to modify following shell.&#xA;Steps 1. prepare csst-gateway.configmap.yaml worker_processes auto; events { worker_connections 1024; } http { log_format main &#39;$remote_addr - $remote_user [$time_local] &#34;$request&#34; $status $body_bytes_sent &#34;$http_referer&#34; &#34;$http_user_agent&#34; &#34;$http_x_forwarded_for&#34;&#39;; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; client_max_body_size 10000m; types_hash_max_size 2048; underscores_in_headers on; reset_timedout_connection on; keepalive_timeout 960; client_header_timeout 960; client_body_timeout 960; proxy_connect_timeout 960; proxy_read_timeout 960; proxy_send_timeout 960; send_timeout 960; upstream grpc_dfs { server dfs-server-nginx.application:9100 weight=1; } upstream grpc_ephem { server dfs-ephem-nginx.application:9060 weight=1; } server { listen 80 http2; location ^~ /dfs. { grpc_pass_header Host; grpc_pass_header X-Real-IP; grpc_set_header Host $host; grpc_set_header X-Real-IP $remote_addr; grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for; grpc_socket_keepalive on; grpc_read_timeout 960; grpc_send_timeout 960; proxy_read_timeout 960; proxy_send_timeout 960; grpc_pass grpc://grpc_dfs; } location ^~ /dfs.ephem. { grpc_pass_header Host; grpc_pass_header X-Real-IP; grpc_set_header Host $host; grpc_set_header X-Real-IP $remote_addr; grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for; grpc_socket_keepalive on; grpc_read_timeout 960; grpc_send_timeout 960; proxy_read_timeout 960; proxy_send_timeout 960; grpc_pass grpc://grpc_ephem; } } server { listen 81; location /search/v2 { proxy_pass http://0.0.0.0:9068/search; proxy_pass_request_headers on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; } location / { root /share/dfs; autoindex on; } } } 2. [Optional] prepare csst-data-pvc.yaml apiVersion: &#34;v1&#34; kind: &#34;PersistentVolumeClaim&#34; metadata: name: &#34;csst-data-pvc&#34; namespace: &#34;application&#34; spec: accessModes: - &#34;ReadWriteMany&#34; resources: requests: storage: &#34;200Gi&#34; storageClassName: &#34;nfs-external-nas&#34; status: accessModes: - &#34;ReadWriteMany&#34; capacity: storage: &#34;200Gi&#34; 3. prepare deploy-csst-gateway.yaml --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/name: csst-gateway name: csst-gateway namespace: application spec: ports: - name: http port: 80 nodePort: 31280 protocol: TCP targetPort: 80 - name: search port: 81 nodePort: 31281 targetPort: 81 selector: app.kubernetes.io/name: csst-gateway type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: csst-gateway name: csst-gateway namespace: application spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: csst-gateway template: metadata: labels: app.kubernetes.io/name: csst-gateway spec: containers: - env: - name: TZ value: Asia/Shanghai image: docker.io/library/nginx:1.19.9-alpine imagePullPolicy: IfNotPresent name: csst-gateway ports: - containerPort: 80 name: http - containerPort: 81 name: search volumeMounts: - mountPath: /etc/nginx name: csst-gateway-config - mountPath: /share/dfs name: csst-data-pvc volumes: - name: csst-gateway-config configMap: name: csst-gateway-configmap items: - key: csst-gateway.configmap.yaml path: nginx.conf - name: csst-data-pvc persistentVolumeClaim: claimName: csst-data-pvc restartPolicy: Always 4. create configMap based on csst-gateway.configmap.yaml kubectl -n application create configmap csst-gateway-configmap --from-file=csst-gateway.configmap.yaml -o yaml --dry-run=client | kubectl -n application apply -f - 5. [Optional] create pvc resource kubectl -n application apply -f csst-data-pvc.yaml 6. apply to k8s kubectl -n application apply -f deploy-csst-gateway.yaml</description>
    </item>
  </channel>
</rss>