Deploy Syntho using Helm

Om de Syntho Applicatie te implementeren, gebruiken we de Helm kaart in dezelfde repository als eerder genoemd. De kaart kan worden gevonden in de Releases van de deployment-tools repo of het kan direct worden gekloond van de Github repo, waardoor het pad naar de kaart helm/syntho-ui wordt.

Om de UI te configureren kan het values.yaml bestand in helm/syntho-ui gebruikt worden. De volgende secties beschrijven de verschillende velden die kunnen worden ingesteld.

De UI configureren

Voor de UI moeten we eerst de image repository en tag instellen:

image:
  repository: synthoregistry.azurecr.io/syntho-core-frontend
  tag: nieuwste

We moeten ook de domeinnaam voor de UI instellen.

frontend_url: <hostnaam-of-ip>
frontend_protocol: https # http of https afhankelijk van de beschikbaarheid van een SSL-certificaat

Een ingress is nodig voor de UI en is onderdeel van de Helm chart, we kunnen de ingress configuratie als volgt instellen voor de UI:

ingress:
    ingeschakeld: waar
    naam: frontend-ingress
    className: nginx # Stel de klassenaam in van de ingress controller die je gebruikt
    annotaties: {
      cert-manager.io/cluster-issuer: "", # In het geval dat cert-manager wordt gebruikt voor SSL
      nginx.ingress.kubernetes.io/proxy-buffer-size: "32k",
      nginx.ingress.kubernetes.io/affinity: "cookie",
      nginx.ingress.kubernetes.io/use-regex: "true",
      nginx.ingress.kubernetes.io/proxy-connect-timeout: "600",
      nginx.ingress.kubernetes.io/proxy-leestime-out: "600",
      nginx.ingress.kubernetes.io/proxy-send-timeout: "600",
      nginx.ingress.kubernetes.io/proxy-body-size: "512m",
    }
    hosts:
      - host: <hostnaam>
        paden:
          - path: /
            pathType: Prefix
    
    tls:  # Als SSL niet wordt gebruikt, kan de tls-sectie worden verwijderd
      - hosts:
        - <hostname>
        secretName: frontend-tls # Stel in op een bestaand geheim of wanneer je cert-manager gebruikt om certificaten te beheren

Dit maakt een Ingress definitie aan voor zowel de UI als de backend applicatie. Een deel van het verkeer zal naar de backend gerouteerd worden om al het verkeer van dezelfde domeinnaam te kunnen bedienen.

Note: in het geval dat het SSL-certificaat een zelfondertekend certificaat is of een certificaat dat niet binnen de container kan worden geverifieerd, moeten we enkele extra variabelen instellen als de instantie het certificaat niet kan verifiëren.

Zie het volgende codeblok:

voorkant:
  env:
    _JAVA_OPTIONS: "-Dio.swagger.parser.util.RemoteUrl.trustAll=true -Dio.swagger.v3.parser.util.RemoteUrl.trustAll=true"

De backend configureren

De backend is verantwoordelijk voor het gebruikersbeheer en het beheer van de werkruimte. We moeten een paar variabelen correct instellen. Om te beginnen moeten we de image instellen:

backend:
  image:
    repository: synthoregistry.azurecr.io/syntho-core-backend
    tag: nieuwste

Backend Database en Backend Redis

Vervolgens moeten we de database en Redis referenties instellen. Als de instanties gedefinieerd in de Helm grafiek worden gebruikt, zijn er geen wijzigingen nodig. Anders moet het volgende veranderd worden:

backend:
  db:
    host: <hostnaam>
    poort: <poort>
    gebruiker: <gebruikersnaam>
    wachtwoord: <wachtwoord>
    naam: <database>
  redis:
    host: redis-svc
    poort: 6379
    db: 0

De Redis-sectie kan worden ingesteld zoals hierboven gedefinieerd als de Redis-instantie wordt gebruikt vanuit de Helm grafiek. Standaard wordt de Redis-instantie gebruikt die in de kaart is gedefinieerd. Als een andere Redis-instantie wordt gebruikt, moeten host, port en db mogelijk worden gewijzigd.

De database sectie moet worden aangepast als een andere database wordt gebruikt. Standaard wordt de database-instantie gebruikt die in de kaart is gedefinieerd. Als een andere database buiten de Helm grafiek wordt gebruikt, moeten de host, poort, gebruiker, wachtwoord en databasenaam worden gewijzigd. Om het gebruik en de inzet van de database-instantie gedefinieerd in de kaart uit te schakelen, kan het volgende worden ingesteld:

backend:
  database_enabled: false

Als de database wordt gebruikt vanuit de Helm grafiek, kan de waarde host worden ingesteld op database en port op 5432. De andere waarden kunnen worden gewijzigd als een andere gebruikersnaam, wachtwoord of databasenaam de voorkeur heeft. Dit past automatisch de database-instantie aan die is gedefinieerd in de Helm-kaart.

Backend Ingress

De backend ingress is geïmplementeerd als onderdeel van de ingress die is gedefinieerd voor de UI. We gebruiken padgebaseerde routering in de ingress om een deel van het verkeer naar de backend te routeren (specifiek alles wat naar /api/* gaat). Er is geen extra ingress nodig voor de backend.

Admin user credentials

Het is ook nodig om de referenties voor de eerste administratieve gebruiker in te stellen. We kunnen deze gebruiker op de volgende manier definiëren:

backend:
  gebruiker:
    gebruikersnaam: admin
    wachtwoord: wachtwoord
    e-mail: admin@company.com

Deze gebruiker kan worden gebruikt om in te loggen in de UI en andere gebruikers aan te maken.

Geheime sleutel

Tot slot moeten we een extra variabele instellen, zoals gedefinieerd in het onderstaande blok:

secret_key: (^ky&f)l&$3sqf2tctv-(pgzvh!+9$j%b5xe2y@&%p2ay*h$$a # Willekeurige tekenreeks om als geheime sleutel te gebruiken

De Core API configureren

Om de Core API te configureren, moeten we eerst de juiste image instellen. Om de afbeelding in te stellen gebruiken we het image veld in de core sectie.

image:
  repository: synthoregistry.azurecr.io/syntho-core-api
  tag: nieuwste

Verder moeten we de database hostnaam en credentials instellen:

core:
  db:
    gebruikersnaam: <database-gebruikersnaam>
    wachtwoord: <database-wachtwoord>
    naam: <database-naam>
    host: <database-host>
    poort: <database-poort>

De deployment kan eventueel de database-instantie zelf aanmaken. In dat geval moet het veld database_enabled worden ingesteld op true:

core:
  database_enabled: true

Dit maakt een database aan met de opgegeven gebruikersnaam, wachtwoord en databasenaam. De host voor deze database is backend en de poort is 5432 omdat dit een Postgres database is.

Tot slot moeten we een geheime sleutel instellen voor encryptie, de referenties voor een Redis-instantie en het IP-adres of de hostnaam van de Ray head waarmee we verbinding moeten maken. De hostnaam van het Ray hoofd is degene die genoemd wordt in de sectie [Ray implementeren met Helm] (deploy-ray-using-helm/).

geheime sleutel: UNIbrRR0CnhPEB0BXKQSDASaNzT1IYgQWWaLyQ1W1iPg= # Fernet Key: genereren door python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" uit te voeren.
redis:
    host: redis-svc
    poort: 6379
    db: 1
ray_adres: <ray-head-ip-of-hostname>

De fernet sleutel kan gegenereerd worden met de cryptography bibliotheek in Python. Het uitvoeren van het volgende commando resulteert in een willekeurig gegenereerde fernet-sleutel in je CLI:

python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

De Redis-instantie kan worden ingesteld door de redis: sectie aan te passen. De standaardwaarden wijzen naar de Redis-instantie die is geïmplementeerd als onderdeel van de Helm chart.

Uitrollen

Om de Syntho Applicatie te implementeren, gebruiken we de Helm grafiek van het Syntho team. De kaart kan gevonden worden in de helm/syntho map.

helm install syntho-ui ./helm/syntho-ui --values values.yaml --namespace syntho

Last updated