Общие сведения
Надежность и безопасность
Начало работы
Общие концепции
Учёт времени
Управление проектами
Управление ресурсами
Управление финансами
Управление затратами
Управление биллингом
Управление задачами
Компоненты
Концепции
Инструкции
On-premises
Аналитика
Типы отчётов
Использование отчётов
Группировка и суммирование данных источника
Группировка данных в отчете
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Пользовательские настройки отчёта
Вычисляемые поля
Выражения вычисляемых полей
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
API
Настройка и администрирование
Типовой порядок настройки системы
История изменений
FAQ

Развертывание клиентской части

Обновлено: 06.03.2024

Клиентская часть — это веб-приложение, загружаемое в браузер пользователя. Контейнер — это просто статический сайт для хостинга клиентского приложения. В качестве веб-сервера используется nginx.

URL приложения — это адрес, по которому пользователь будут получать доступ к приложению, например https://app.timetta.com.

Пример конфигурации

Конфигурация nginx:

apiVersion: v1
kind: ConfigMap
metadata:
  name: client-host-nginx-conf
  namespace: timetta
data:
  nginx.conf: |
    user nginx;
    worker_processes  1;
    events{}
    http {
        include /etc/nginx/mime.types;
        server {
            listen 80 default_server;        
            root /usr/share/nginx/html;
            index index.html;
            location / {
                   try_files $uri $uri/ /index.html =404;
            }
        }
    }
---

Конфигурация клиентской части:

apiVersion: v1
kind: ConfigMap
metadata:
  name: client-host-timetta-conf
  namespace: timetta
data:
  config.json: |
    {
 "appInsights": {
    "instrumentationKey": "66d17b27-fdf9-4150-91ea-776ad920ba78"
  },
      "api": {
        "url": "https://api.your-domain.com" <=== Указать нужное
      },
      "passport": {
        "url": "https://auth.your-domain.com" <=== Указать нужное
      },
      "notificationHub": {
        "url": "https://web-socket.your-domain.com" <=== Указать нужное
      }
    }

---

Конфигурация деплоймента и сервиса:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: client-host-deployment
  namespace: timetta
  labels:
    app: client-host
spec:
  selector:
    matchLabels:
      app: client-host-app
  template:
    metadata:
      labels:
        app: client-host-app
    spec:
      containers:
        - name: client-host
          image: cr.yandex/crpr8bvek949tq2fuqkf/client-host:latest
          imagePullPolicy: "Always"
          ports:
            - protocol: TCP
              containerPort: 80
          volumeMounts:
            - name: nginx-conf
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf
              readOnly: true
            - name: timetta-conf
              mountPath: /usr/share/nginx/html/assets/config.json
              subPath: config.json
              readOnly: true
      volumes:
        - name: nginx-conf
          configMap:
            name: client-host-nginx-conf
            items:
              - key: nginx.conf
                path: nginx.conf
        - name: timetta-conf
          configMap:
            name: client-host-timetta-conf
            items:
              - key: config.json
                path: config.json
      imagePullSecrets:
        - name: service-settings #name of secret with puller service user key 

---
apiVersion: v1
kind: Service
metadata:
  name: client-host-service
  namespace: timetta
spec:
  selector:
    app: client-host-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

---

Конфигурация ingress-контролера с получением TLS сертификатов let's encrypt (через CertManager):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: client-host-ingress
  namespace: timetta
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt"
spec:
  ingressClassName: "nginx"
  tls:
    - hosts:
        - app.your-domain.com <=== Указать нужное
      secretName: client-host-tls
  rules:
    - host: app.your-domain.com <=== Указать нужное
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: client-host-service
                port:
                  number: 80

Проверка

В браузере откройте адрес приложения (в примере app.your-domain.com). Убедитесь, что приложение скачивается и TLS сертификат выдан и действителен.

Содержание

Пример конфигурации Проверка
Ничего не найдено

Перейти на русскую версию?