På denne side

Lokalt installeret

Hvis du vil installere Ideanote i dit eget miljø, skal du bruge Ideanote Helm Chart.
Dette diagram indeholder alle de nødvendige komponenter til at komme i gang og kan skaleres til store installationer.

Ideanote Helm Chart leveres med alt inkluderet og er designet til at være nemt at installere og konfigurere.
Diagrammet indeholder flere underdiagrammer og en standardkonfiguration, der kan tilpasses efter dine behov.
Se arkitektur-sektionen for at få flere oplysninger om de komponenter, der er inkluderet i Helm-diagrammet.

Arkitektur

Ideanote består af flere komponenter, der installeres i en Kubernetes-klynge ved hjælp af Ideanote Helm Chart.
Følgende diagram viser arkitekturen for disse komponenter, og hvordan de interagerer med hinanden.

Lokal arkitektur

Forudsætninger

Før du installerer Ideanote i en Kubernetes-klynge, skal du beslutte dig for og følge disse forudsætninger:

1. Opret en Kubernetes klynge.

2. Installer kubectl.

3. Installer Helm.

4. Hent en ZIP-folder fra Ideanotes team med de nødvendige tokens for at få adgang til Helm-diagrammet og Docker-images.

5. Godkend med Ideanote Helm registry

6. Vælg, hvordan core services skal leveres

7. Vælg, hvordan du vil udføre load balancing

8. Vælg, hvordan du vil udføre backups

9. Vælg, hvordan du vil udføre monitoring

10. Opret tokens til integrationer

11. Opdater konfigurationen i filen values.yaml

1. Opret en Kubernetes cluster

En klynge med mindst 4 virtuelle CPU'er og 10 GB RAM anbefales.
Se vejledningen fra din cloududbyder for at få oplysninger om, hvordan du opretter en Kubernetes-klynge.

2. Installer kubectl

Se Kubernetes-installationsdokumentationen for at installere kubectl. Dokumentationen dækker de fleste operativsystemer.

Når du har oprettet klyngen, skal du konfigurere kubectl, før du kan interagere med klyngen fra kommandolinjen.

3. Installer Helm

I denne vejledning bruger vi den seneste udgivelse af Helm v3 (v3.15.4 eller nyere). Se Helms installationsdokumentation for at installere Helm.

4. En ZIP-folder fra Ideanotes team

For at anmode om adgang til Ideanotes Helm-diagram skal du kontakte Ideanote-teamet på hello@ideanote.io.
Der kræves en Ideanote-licens for at få dette adgangstoken.

Ideanote giver dig en ZIP-folder med navnet ideanote-on-premise.zip, som indeholder følgende:

  • En values.yaml-fil med standardkonfigurationen. Denne fil indeholder også registerhemmeligheder, som Kubernetes-klyngen skal bruge til at hente Docker-afbildninger. Læs denne vejledning for at få flere oplysninger om, hvordan Helm-diagrammet konfigureres til produktion.
  • En helm-access-token.json-fil, der indeholder adgangstokenet til Helm-registret.

5. Godkend med Ideanote Helm registry

Kør følgende kommando for at godkende dig hos Helm-registret ved hjælp af helm-access-token.json fra den ZIP-folder, som Ideanote har leveret:

# Linux/MacOS
cat helm-access-token.json | helm registry login -u _json_key --password-stdin europe-west3-docker.pkg.dev

# Windows (Command Prompt)
type helm-access-token.json | helm registry login -u _json_key --password-stdin europe-west3-docker.pkg.dev

# Windows (PowerShell)
Get-Content helm-access-token.json | helm registry login -u _json_key --password-stdin europe-west3-docker.pkg.dev

Valgfrit: Du kan køre følgende kommando for at bekræfte, at du er godkendt hos Helm-registret.
Dette downloader Ideanote Helm Chart til din lokale maskine.

helm pull oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0

6. Vælg, hvordan kernetjenesterne skal leveres

Ideanote Helm Chart indeholder to underdiagrammer for database- og cachetjenester, der installeres som en del af installationsprocessen:

  • PostgreSQL, der bruges som primær database
  • Redis, der bruges som cachetjeneste

I produktionsmiljøer anbefaler vi dog, at du i stedet bruger eksternt administrerede tjenester til Redis og PostgreSQL, og angiver forbindelsesoplysningerne, når du installerer Helm-diagrammet.

Før du installerer Ideanote Helm Chart, skal du derfor vælge mellem følgende to muligheder:

  1. Inkluderede underdiagrammer: Lad Helm-diagrammet automatisk installere Redis og PostgreSQL i din klynge. Dette er standardindstillingen.. Læs mere her om, hvordan du konfigurerer disse inkluderede kernetjenester.
  2. Administrerede kernetjenester: Brug administrerede tjenester til Redis og/eller PostgreSQL. Denne mulighed kræver, at du angiver forbindelsesoplysningerne til de administrerede tjenester, når du installerer Helm-diagrammet. Følg denne vejledning for at få flere oplysninger om konfiguration af dine egne administrerede tjenester.

7. Vælg, hvordan du vil udføre load balancing

Diagrammet Ideanote Helm Chart omfatter to underdiagrammer til håndtering af belastningsfordeling og SSL-certifikater:

  • ingress-nginx Ingress-controller/load balancer, der bruges til at dirigere trafik til Ideanotes tjenester.
  • cert-manager der bruges til automatisk at udstede SSL-certifikater til Ideanotes tjenester ved hjælp af Let’s Encrypt.

Når du installerer Ideanote Helm Chart, skal du derfor vælge mellem følgende to muligheder:

  1. Inkluderede underordnede charts: Lad Helm-chartet automatisk installere ingress-nginxbelastningsfordeleren og cert-manager i din klynge. Dette er standardindstillingen. Denne indstilling kræver, at du har et domæne, som du ejer, og som du kan tilføje en DNS-post til. Det kan være et underdomæne som f.eks. poc.domain.com. Let’s Encryptserverne skal kunne finde IP-adressen på din Kubernetes-klynge for at kunne udstede certifikater. Læs mere om, hvordan du konfigurerer den indbyggede belastningsfordeler her.
  2. Administreret load balancer: Vælg din egen løsning til belastningsfordeling, enten med din egen administrerede Ingress-controller/load balancer eller en cloududbyders load balancer. Læs mere om, hvordan du konfigurerer din egen brugerdefinerede load balancer her.

Uanset hvad du vælger ovenfor, skal du angive en URL til Ideanote, som du vil bruge til at få adgang til Ideanotes tjenester, når du installerer Helm-diagrammet.
Denne URL skal tilføjes i filen values.yaml under global.ideanote.ingress.url.

global:
  ideanote:
    ingress:
      url: https://<your-domain>

Hvis du vælger at bruge den medfølgende nginx Ingress-controller/belastningsfordeler og cert-manager underdiagrammer, skal du også angive din e-mailadresse i filen values.yaml.
Denne e-mailadresse bruges af Let’s Encrypt til at udstede SSL-certifikater til Ideanotes tjenester.

cert-manager:
  email: <your-email-address>

8. Vælg, hvordan du gør backups

Ideanote Helm Chart leveres ikke i øjeblikket med en indbygget løsning til sikkerhedskopiering.
Vi anbefaler på det kraftigste, at du konfigurerer en tidsplan for sikkerhedskopiering af produktionsinstallationer.

Afhængigt af hvilke underdiagrammer du vælger at installere, opretter ideanote 3 PVCs (Persistent Volume Claims) i din klynge med tilhørende diskenheder, som du alle skal sikkerhedskopiere:

  • PostgreSQL-databasediskenhed: data-<release>-postgresql-0 (oprettes ikke, hvis du bruger administreret PostgreSQL)
  • Redis-databasediskenhed: redis-data-<release>-redis-master-0 (oprettes ikke, hvis du bruger administreret Redis)
  • Ideanote-overførselsvolumen: <release>-storage-data

9. Vælg, hvordan du gør monitoring

Ideanote Helm Chart leveres ikke i øjeblikket med en indbygget overvågningsløsning.
Vi arbejder på at tilføje understøttelse af Prometheus og Grafana i fremtiden.

Ideanote-tjenesterne skriver logfiler til stdout og stderr.
Disse logfiler registreres derefter af containerens runtime og kan tilgås via Kubernetes-værktøjer som kubectl logs.
Som standard er disse logfiler dog knyttet til poddets livscyklus, så når et pod termineres, går dets logfiler tabt, medmindre de gemmes et andet sted.

For at konfigurere korrekt overvågning af Ideanote-tjenesterne skal du derfor installere en overvågningsløsning, der kan indsamle disse logfiler fra de kørende containere i Kubernetes-klyngen.

10. Opret tokens til integrationer

Følgende valgfrie funktionalitet kræver, at du opretter og konfigurerer tokens til (eksterne) integrationer. De er alle valgfrie.

  • OpenAI-integration til AI-funktionalitet. Angiv en gyldig OpenAI API-nøgle som værdien for ideanote.api.openai.key. Læs mere om konfiguration af OpenAI-integrationen her.
  • Sendgrid-integration til funktionalitet for e-mailnotifikationer. Angiv en gyldig Sendgrid API-nøgle som værdien for ideanote.api.sendgrid.key. Læs mere om konfiguration af Sendgrid-integrationen her.
  • SAML-integration til single sign-on-funktionalitet. Læs mere om konfiguration af SAML-integrationen her.
  • LDAP-integration til single sign-on-funktionalitet. Læs mere om konfiguration af LDAP-integrationen her.

11. Opdater konfigurationen i filen values.yaml

Den values.yaml, der følger med ZIP-folder, som Ideanote-teamet leverer, indeholder standardkonfigurationen for Ideanote Helm Chart.

Standardkonfigurationen er ikke beregnet til produktion, men kan bruges som udgangspunkt for at tilpasse Helm-diagrammet til dine behov.

Påkrævede værdier:

  • global.ingress.url (påkrævet): Den URL, som Ideanote skal køre under. Eksempler: https://domain.com, https://poc.domain.com, http://192.0.2.0. Læs mere om load-balancing her.
  • cert-manager.email (påkrævet, hvis du vælger standard-load balancer og cert-manager): Din e-mailadresse, så Let’s Encrypt kan udstede et certifikat. Læs mere om cert-manager her.

Installation af Ideanote

Før du installerer Helm-diagrammet, skal du opfylde alle de 11 ovenstående forudsætninger.

Kør følgende kommando for at installere Ideanote Helm Chart.
Dette forudsætter, at du har konfigureret values.yaml i overensstemmelse med forudsætningerne og dine behov.

helm install ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --create-namespace --namespace ideanote --wait --timeout 10m -f values.yaml

Dette installerer Ideanote-tjenesterne i din Kubernetes-klynge i et nyt navnerum med navnet ideanote og et release-navn på ideanote.
Vent et par minutter, mens alle ressourcer tildeles, og tjenesterne starter.

Du kan kontrollere status for hver pod ved at køre følgende kommando:

kubectl get pods -n ideanote --watch

Følg disse trin for at fuldføre installationen

Disse trin forudsætter, at du installerer Ideanote Helm Chart med den medfølgende ingress-nginx load-balancer og cert-manager-underdiagrammer.

1․ Hent den IP-adresse, der er blevet tildelt dynamisk til den installerede NGINX Ingress:

kubectl get ingress -l "app.kubernetes.io/part-of"=ideanote --namespace ideanote

2․ Føj denne IP-adresse til DNS-posterne for det domæne, du har angivet i filen values.yaml.

3․ Vent et par minutter, mens DNS-posterne udbredes, og cert-manager udsteder SSL-certifikaterne. Kontrollér certifikaternes status ved at køre følgende kommandoer:

kubectl describe certificate -l "app.kubernetes.io/part-of"=ideanote --namespace ideanote

kubectl get certificaterequest -n ideanote
kubectl describe CertificateRequest ideanote-tls-1 -n ideanote

4․ Gå til sidst til den URL, du har angivet i filen values.yaml, for at konfigurere Ideanote.

Konfiguration af dit Ideanote-workspace

Nu hvor du har installeret Ideanote i din Kubernetes-klynge, er det sidste trin at konfigurere dit Ideanote-workspace.
Du kan få adgang til dit Ideanote-workspace ved at besøge den URL, du angav i filen values.yaml, og følge instruktionerne på skærmen.

Konfiguration af workspace med mulighederne Fra bunden og Importér data

Du kan konfigurere dit workspace på to måder:

  • Fra bunden: Du kan vælge at konfigurere et workspace fra bunden. Dette guider dig gennem processen med at oprette en Ideanote-ejerkonto og et workspace.
  • Importér data: Hvis du tidligere har brugt Ideanote på ideanote.io, kan du vælge at importere hele dit workspace til dit on-premise-miljø. For at gøre dette bedes du kontakte Ideanote-teamet, som vil levere en TAR-folder, der indeholder alle dine workspace-data. Denne TAR-file skal importeres under opsætningen af dit workspace, når du bliver bedt om det.

Eksempler på implementeringer

Dette afsnit indeholder eksempler på, hvordan Ideanote kan implementeres hos forskellige cloududbydere og i forskellige miljøer.
Dette kan tjene som inspiration til, hvordan du implementerer Ideanote i dit eget miljø.
Du kan installere Ideanote hos en cloududbyder efter eget valg, men vi anbefaler at bruge AWS, Azure eller Google Cloud Platform.
Du kan også installere Ideanote på en lokal Kubernetes-klynge ved hjælp af Minikube.

Alle eksempler på installationer forudsætter, at du har fulgt forudsætningerne og konfigureret filen values.yaml efter dine behov.

Minikube

Konfigurationen af Minikube deaktiverer det inkluderede nginx load-balancing-subdiagram og bruger i stedet det indbyggede routingtilføjelsesprogram, der leveres af minikube.

Følg disse trin for at installere Ideanote på Minikube:

1․ Installer Docker

2․ Installer Minikube

3․ Start Minikube med følgende kommando. Den tildeler 4 CPU'er og 8 GB RAM til klyngen:

minikube start --cpus 4 --memory 8192

4․ Aktivér de nødvendige tilføjelsesprogrammer:

minikube addons enable metrics-server
minikube addons enable ingress

5․ Sørg for, at følgende konfiguration er angivet i filen values.yaml:

global:
  ideanote:
    ingress:
      # `minikube tunnel` will expose the load balancer on this IP
      url: "http://127.0.0.1"
      tls:
        enabled: false

# Disable both cert-manager and nginx because Minikube is using its own routing addon
cert-manager:
  install: false

ingress-nginx:
  install: false

6․ Installer Ideanotes Helm-diagram:

helm install ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --create-namespace --namespace ideanote --wait --timeout 10m -f values.yaml

7․ Start Minikube-tunnelen (og dashboardet):

minikube tunnel
minikube dashboard

8․ Gå til: http://127.0.0.1, og konfigurer din Ideanote-instans.

Azure Kubernetes Service (AKS)

Konfigurationen af Azure vil bruge den inkluderede nginx Ingress-controller og cert-manager leveret af Ideanote Helm Chart.
Hvis du i stedet vælger at bruge Azures oprindelige routing add-on til Kubernetes, kan du gøre det ved at følge disse instruktioner og deaktivere de inkluderede tjenester nginx og cert-manager (se her, hvordan du deaktiverer disse tjenester her).

1․ Opret en Azure Kubernetes Service (AKS)-klynge med mindst 2 vCPU og 8 GB hukommelse (for eksempel ved hjælp af Standard_DS2_v2). Læs denne vejledning for at få flere oplysninger om, hvordan du opretter en Azure Kubernetes-klynge.

2․ Installer Azure CLI på din lokale maskine. Læs denne vejledning for at få flere oplysninger.

3․ Kør følgende kommando for at konfigurere kubectl til at oprette forbindelse til din AKS-klynge:

az aks get-credentials --resource-group Ideanote --name Ideanote

4․ Konfigurer values.yaml i henhold til forudsætningerne og dine behov. Angiv global.ingress.url som det domænenavn, du vil bruge til Ideanote. Senere i denne vejledning skal du oprette en DNS-post for dette domæne.

5․ Installer Ideanotes Helm-diagram:

helm install ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --create-namespace --namespace ideanote --wait --timeout 10m -f values.yaml

6․ Vent et par minutter, indtil alle tjenester er startet, og hent den IP-adresse, som Azure har tildelt dynamisk til den installerede NGINX Ingress:

kubectl get ingress -l "app.kubernetes.io/part-of"=ideanote --namespace ideanote

7․ Føj denne IP-adresse til DNS-posterne for det domæne, du har angivet i filen values.yaml.

8․ Vent et par minutter, mens DNS-posterne bliver udbredt, og besøg derefter den URL, du angav i values.yaml-filen, for at konfigurere Ideanote. Læs venligst fejlfindingsvejledningen troubleshooting, hvis du har problemer med URL'en/IP-adressen.

Konfiguration af nginx Ingress-controlleren med LoadBalancer til Azure

Hvis du har brug for at konfigurere den inkluderede LoadBalancer nginx Ingress-controller til Azure, kan du gøre det ved at tilføje disse annoteringer til values.yaml-filen.
Du kan også bruge disse annoteringer til at tildele en statisk IP-adresse til LoadBalancer ved at følge denne vejledning.
Eksempel:

ingress-nginx:
  controller:
    service:
      annotations:
        "service.beta.kubernetes.io/azure-load-balancer-resource-group": "MC_Ideanote_Ideanote_francecentral"
        "service.beta.kubernetes.io/azure-pip-name": "public-cluster-load-balancer-ip"

Brug af Azure Spot Nodes

Føj følgende til filen values.yaml for at køre alle udrulninger på Azure Spot Nodes:

tolerationsAndAffinity: &tolerationsAndAffinity
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
          - matchExpressions:
              - key: "kubernetes.azure.com/scalesetpriority"
                operator: In
                values:
                  - "spot"
  tolerations:
    - key: "kubernetes.azure.com/scalesetpriority"
      operator: "Equal"
      value: "spot"
      effect: "NoSchedule"

postgresql:
  primary:
    <<: *tolerationsAndAffinity

redis:
  master:
    <<: *tolerationsAndAffinity

ingress-nginx:
  controller:
    <<: *tolerationsAndAffinity

cert-manager:
  <<: *tolerationsAndAffinity
  cainjector:
    <<: *tolerationsAndAffinity
  webhook:
    <<: *tolerationsAndAffinity
  startupapicheck:
    <<: *tolerationsAndAffinity

global:
  ideanote:
    <<: *tolerationsAndAffinity

Google Cloud Platform (GKE)

Dette eksempel viser, hvordan du konfigurerer Ideanote på en GCP Kubernetes Autopilot-klynge (GKE).
Klyngen vil være produktionsklar med en administreret PostgreSQL og en administreret LoadBalancer, inklusive CDN caching af aktiver.

Forudsætninger:

  • Opfyld alle primære forudsætninger
  • Du skal eje et domæne, som du kan tilføje en DNS-post til
  • Du skal have en Google Cloud Platform-konto

1․ Opret et nyt VPC-netværk
2․ Opret en ny Kubernetes Autopilot-klynge

  • Tilknyt det VPC-netværk, du oprettede i trin 1

3․ Opret en ny PostgreSQL-instans

  • Tilknyt det VPC-netværk, du oprettede i trin 1
  • Opret en ny database med navnet ideanote
  • Opret en ny bruger med navnet ideanote, og skriv adgangskoden ned

4. Installer gcloud cli, og log ind på din GCP-konto
5. Konfigurer kubectl, så den opretter forbindelse til din GCP-klynge

gcloud container clusters get-credentials <cluster> --region <region> --project <project>

6. Opret en ny statisk IP-adresse til LoadBalancer, og noter IP-adressen:

gcloud compute addresses create ideanote-global --global
gcloud compute addresses list --project ideanote-sa

7. Gå til din DNS-udbyder, og tilføj en A-post for det domæne, du vil bruge til Ideanote. Ret A-posten mod den statiske IP-adresse, du oprettede i trin 6.

8. Konfigurer filen values.yaml med følgende værdier. Udfyld værdier for global.ideanote.psql.host, global.ideanote.psql.passwordSecret.password, global.ideanote.ingress.url og global.ideanote.gke.ingress.staticIPName.

global:
  # This will create GKE-specific resources such as selecting the native GCP ingress controller, creating backend/frontend configs and activating CDN caching for assets
  cloudProvider: GKE

  gke:
    ingress:
      staticIPName: "<static-google-cloud-ip-name>"

  ideanote:
    ingress:
      url: "https://<your-domain>"

    autoscaling:
      enabled: true

    resources:
      enabled: true

    psql:
      database: "ideanote"
      username: "ideanote"
      host: "<google-cloud-sql-ip>"
      passwordSecret:
        password: "<google-cloud-sql-password>"

    storage:
      persistence:
        size: "50Gi"

cert-manager:
  install: false

ingress-nginx:
  install: false

postgresql:
  install: false

redis:
  install: true
  master:
    persistence:
      size: 5Gi

9. (Valgfrit) Ret standard Storage Class med allowVolumeExpansion: true, så PVC'er nemt kan ændres i størrelse:

kubectl patch storageclass standard-rwo -p '{"allowVolumeExpansion": true}'

10. Installer Ideanotes Helm-diagram:

helm install ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --create-namespace --namespace ideanote --wait --timeout 10m -f values.yaml

11. Vent, indtil klyngen er klar, og besøg den URL, der er angivet i values.yaml. Det kan tage lang tid for Autopilot-klynger at allokere ressourcer første gang. Vent desuden op til 1 time på, at Google Cloud udsteder SSL-certifikatet.

Gør din GKE-klynge klar til produktion

12. Ret volume claims med persistentVolumeReclaimPolicy: Retain for at forhindre datatab, når Helm-versionen slettes:

kubectl patch pvc -n ideanote ideanote-storage-data -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
kubectl patch pvc -n ideanote redis-data-ideanote-redis-master-0 -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'

13. Konfigurer sikkerhedskopiering af PostgreSQL-databasen. Du kan bruge Cloud SQL-sikkerhedskopier eller en tredjepartsløsning til sikkerhedskopiering.

14. Konfigurer sikkerhedskopiering af hele Kubernetes-klyngen, herunder VPCs (Persistent Volume Claims), ved at følge denne vejledning.

Brug af GCP-spotnoder

Føj venligst følgende til values.yaml-filen for at køre implementeringer på GCP-spot-VM'er:

nodeSelector: &nodeSelector
  nodeSelector:
    cloud.google.com/gke-spot: "true"

redis:
  master:
    <<: *nodeSelector

global:
  ideanote:
    <<: *nodeSelector

Ubuntu 24 med MicroK8s (AWS EC2-instans, enkeltknudeklynge)

Denne vejledning viser dig, hvordan du installerer Ideanote på en Kubernetes-klynge med én node ved hjælp af MicroK8s på en AWS EC2-instans.
Den bruger de inkluderede MicroK8s tilføjelser nginx til belastningsfordeling og hostpath-storage-tilføjelsen til lagring.
Overvej at erstatte disse tilføjelser med en produktionsklar løsning som openebs til lagring og AWS ELB til belastningsfordeling i et produktionsmiljø.

1. Opret en ny Ubuntu 24 EC2-instans

  • Mindst 4 CPU'er og 8 GB RAM (for eksempel med instanstypen t1.large).
  • Mindst 30 GB lagerplads.
  • Kontrollér Allow HTTPS traffic from the internet
  • Kontrollér Allow HTTP traffic from the internet
  • Opret, tilknyt og download nøgle-værdiparret til SSH-adgang.
Opsætning af Amazon EC2-instans med Ubuntu valgt og en knap med teksten Launch instance

2. Tilknyt instansens IP-adresse til et domænenavn

Notér instansens offentlige IP-adresse, og knyt den til et domænenavn, du ejer, ved at tilføje en A-post til domænets DNS-indstillinger.
Eksempel: ideanote.your-domain.com eller your-domain.com.

3. Opret forbindelse til instansen via SSH

4. Installer MicroK8s

# Update the system
sudo apt update && sudo apt upgrade -y

# Install MicroK8s
sudo snap install microk8s --classic --channel=1.31

# Join the `microk8s` group
sudo usermod -a -G microk8s ubuntu
sudo chown -R ubuntu ~/.kube
newgrp microk8s

# Wait for all services to be running
microk8s status --wait-ready
microk8s kubectl get nodes
microk8s kubectl get services

# Alias `kubectl` to `microk8s kubectl`
alias kubectl='microk8s kubectl'

# Alias 'helm' to 'microk8s helm'
alias helm='microk8s helm'

# Add the above aliases to the `.bashrc` file
echo -e "\n# Alias kubectl to microk8s kubectl\nalias kubectl='microk8s kubectl'\n# Alias helm to microk8s helm\nalias helm='microk8s helm'" >> ~/.bashrc && source ~/.bashrc

5. Aktivér tilføjelser

# Required addons
microk8s enable ingress
microk8s enable hostpath-storage # Consider using "openebs" in production environment

# Optional addons
microk8s enable dashboard
microk8s enable metrics-server

6. Upload ZIP-folder, som Ideanote-teamet har leveret, til instansen

# Run this on your local machine
chmod 400 <key>.pem
scp -i <key>.pem ideanote-on-premise.zip ubuntu@<instance ip address>:/home/ubuntu

7. Pak ZIP-folder ud på EC2-instansen, og godkend dig med Helm-registret

sudo apt install unzip
cd /home/ubuntu
unzip ideanote-on-premise.zip
cat helm-access-token.json | helm registry login -u _json_key --password-stdin europe-west3-docker.pkg.dev

8. Opdater filen values.yaml med følgende værdier

cert-manager:
  install: true
  email: <your-email-address>

# Don't install the included `nginx` Ingress controller as we are using the MicroK8s `ingress` addon
ingress-nginx:
  install: false

global:
  ideanote:
    ingress:
      url: "https://your-domain.com"

9. Installer Ideanote Helm-diagrammet

helm install ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --create-namespace --namespace ideanote --wait --timeout 10m -f values.yaml

10. Vent et par minutter, mens alle tjenester starter, og SSL-certifikaterne udstedes af cert-manager

kubectl get deployments -n ideanote --watch
kubectl get certificaterequest -n ideanote --watch

11. Besøg til sidst https://your-domain.com for at konfigurere dit Ideanote-workspace

Konfigurér values.yaml

Følgende tabel viser de konfigurerbare parametre for Ideanote-diagrammet og deres standardværdier.

Nøgle

Type

Standard

Beskrivelse

cert-manager.email

string

Angiv den e-mailadresse, der skal bruges til ACME-kontoen. Denne værdi er påkrævet, hvis du vælger at installere og bruge det inkluderede cert-manager diagram.

cert-manager.install

boolean

true

Installér det medfølgende cert-manager-underdiagram

cert-manager.resources.requests.cpu

string

"50m"

CPU-ressourceanmodninger for cert-manager-tjenesten

cert-manager.resources.requests.memory

string

"128Mi"

Hukommelsesressourceanmodninger for cert-manager-tjenesten

cert-manager.server

string

"https://acme-v02.api.letsencrypt.org/directory"

Angiv ACME-serverens URL. Brug staging-serveren "https://acme-staging-v02.api.letsencrypt.org/directory" til test.

cert-manager.solvers

array

[{http01:{ingress:{ingressClassName:nginx}}}]

Konfigurér ACME-udstederen for cert-manager-diagrammet. Læs mere her

global.cloudProvider

GKE / EKS / AKS

Den cloududbyder, der skal bruges til implementeringen. Hvis du angiver denne værdi, vil implementeringen prioritere indbyggede komponenter fra den angivne cloududbyder, såsom en indbygget belastningsfordeler. I øjeblikket understøttes kun GKE.

global.clusterDomain

string

"cluster.local"

Angiv eventuelt cluster-domænet for implementeringen. Denne værdi bruges til at generere interne tjeneste-URL-adresser

global.ideanote.affinity

object

{}

Tilføj affinity til alle Ideanote-implementeringer

global.ideanote.annotations

object

{}

Tilføj annoteringer til alle Ideanote-implementeringer

global.ideanote.autoRefreshBrowser

boolean

true

Som standard opdateres webappen automatisk, hver gang en ny version implementeres. Dette gør det muligt for brugere at få den nyeste version af webappen uden selv at skulle opdatere siden.

global.ideanote.autoscaling.enabled

boolean

false

Aktivér eller deaktiver automatisk skalering for alle Ideanote-implementeringer

global.ideanote.autoscaling.maxReplicas

number

Overskriv det maksimale antal replikaer for alle Ideanote-implementeringer

global.ideanote.autoscaling.minReplicas

number

Overskriv det minimale antal replikaer for alle Ideanote-implementeringer

global.ideanote.autoscaling.targetCPUUtilizationPercentage

number

Overskriv den ønskede CPU-udnyttelsesprocent for alle Ideanote-implementeringer

global.ideanote.autoscaling.targetMemoryUtilizationPercentage

number

Overskriv den ønskede hukommelsesudnyttelsesprocent for alle Ideanote-implementeringer

global.ideanote.features.featureSuggestions

boolean

true

Dette aktiverer knappen "foreslå funktion" i brugergrænsefladen, så brugere kan foreslå nye funktionsønsker direkte til Ideanote-teamet.

global.ideanote.features.issueReporting

boolean

true

Dette aktiverer knappen "rapportér problem" i brugergrænsefladen, så brugere kan rapportere problemer direkte til Ideanote-teamet.

global.ideanote.image.credentials.email

string

Angiv den e-mailadresse, der bruges til at godkende med Docker-registret. Denne værdi leveres af Ideanote.

global.ideanote.image.credentials.password

string

Angiv den adgangskode, der bruges til at godkende forbindelse til Docker-registreringsdatabasen. Denne værdi leveres af Ideanote.

global.ideanote.image.pullPolicy

string

"IfNotPresent"

Tilsidesæt politikken for hentning af afbildninger for alle Ideanote-implementeringer

global.ideanote.image.repository

string

"europe-west3-docker.pkg.dev/ideanote/ideanote"

Tilsidesæt afbildningslageret for alle Ideanote-implementeringer

global.ideanote.image.tag

string

Tilsidesæt afbildningstagget for alle Ideanote-implementeringer

global.ideanote.ingress.annotations

object

{}

Tilføj yderligere annotationer til ingress-objektet, der oprettes for Ideanote. Se en liste over tilladte annotationer for det inkluderede nginx-ingress chart her

global.ideanote.ingress.className

string

Angiv ingress-klassenavnet for Ideanotes ingress-objekt

global.ideanote.ingress.enabled

boolean

true

Aktivér oprettelse af ingress-objektet for Ideanote

global.ideanote.ingress.tls.certManagerIssuerName

string

"letsencrypt"

cert-manager-udstederen, der skal bruges til TLS-certifikatet.

global.ideanote.ingress.tls.enabled

boolean

true

Aktivér eller deaktiver TLS for ingress-objektet, der oprettes for Ideanote. Skal være aktiveret, hvis du vil bruge cert-manager sub-chart.

global.ideanote.ingress.tls.secretName

string

"ideanote-tls"

Angiv hemmelighedens navn for TLS-certifikatet. Påkrævet, hvis du deaktiverer cert-manager underdiagrammet og aktiverer TLS.

global.ideanote.ingress.url

string

Angiv ingress-URL'en for Ideanote. Det skal være et domæne, som du ejer, og hvorfra Ideanote skal leveres. Værdien kan også indeholde et underdomæne. Denne værdi er påkrævet.

global.ideanote.logLevel

error, warn, info, verbose, debug

"info"

Angiv logLevel for alle Ideanote-tjenester.

global.ideanote.networkPolicies.enabled

boolean

true

Dette opretter netværkspolitikker for alle Ideanote-tjenester. Netværkspolitikker bruges til at begrænse trafik til og fra tjenester og anvender som standard princippet om mindst mulige rettigheder.

global.ideanote.nodeSelector

object

{}

Tilføj nodeSelector til alle Ideanote-implementeringer

global.ideanote.podDisruptionBudget.enabled

boolean

true

Aktivér eller deaktiver oprettelse af en PodDisruptionBudget for alle Ideanote-implementeringer

global.ideanote.podDisruptionBudget.minAvailable

number

1

Angiv det mindste antal tilgængelige pods for alle Ideanote-implementeringer under afbrydelser

global.ideanote.psql.database

string

"ideanote"

Navnet på den postgresql-database, der skal bruges til Ideanote-tjenesten

global.ideanote.psql.host

string

"The host of the postgresql sub-chart service"

Værten, der skal bruges ved forbindelse til postgresql-databasen

global.ideanote.psql.passwordSecret.key

string

"postgres-password-user"

Tilsidesæt den nøgle, der bruges til at gemme adgangskoden for databasebrugeren i hemmeligheden.

global.ideanote.psql.passwordSecret.name

string

Hvis du vælger at oprette din egen adgangskodehemmelighed til redis ved hjælp af "kubectl", skal du angive hemmelighedens navn her. Hemmeligheden skal indeholde nøglen "global.ideanote.psql.passwordSecret.key".

global.ideanote.psql.passwordSecret.password

string

"A randomly generated password"

Angiv adgangskoden for databasebrugeren

global.ideanote.psql.port

number

5432

Porten, der skal bruges ved forbindelse til postgresql-databasen

global.ideanote.psql.username

string

"ideanote"

Brugernavnet til postgresql, der skal bruges til Ideanote-tjenesten

global.ideanote.redis.database

integer

Databasenummeret for redis, der skal bruges til Ideanote-tjenesten

global.ideanote.redis.host

string

"The host of the redis sub-chart service"

Værten, der skal bruges ved forbindelse til redis-databasen

global.ideanote.redis.passwordSecret.key

string

"redis-password"

Tilsidesæt nøglen, der bruges til at gemme adgangskoden for redis-brugeren i hemmeligheden.

global.ideanote.redis.passwordSecret.name

string

Hvis du vælger at oprette din egen adgangskodehemmelighed til redis ved hjælp af "kubectl", skal du angive hemmelighedens navn her. Hemmeligheden skal indeholde nøglen "global.ideanote.redis.passwordSecret.key".

global.ideanote.redis.passwordSecret.password

string

Angiv adgangskoden for redis-brugeren

global.ideanote.redis.port

number

6379

Den port, der skal bruges ved oprettelse af forbindelse til redis-databasen

global.ideanote.redis.username

string

redis-brugernavnet, der skal bruges til Ideanote-tjenesten

global.ideanote.resources.enabled

boolean

false

Aktivér eller deaktiver ressourceanmodninger for alle Ideanote-implementeringer

global.ideanote.resources.limits.cpu

string

Tilsidesæt CPU-grænsen for alle Ideanote-implementeringer

global.ideanote.resources.limits.memory

string

Tilsidesæt hukommelsesgrænsen for alle Ideanote-implementeringer

global.ideanote.resources.requests.cpu

string

Tilsidesæt CPU-anmodningen for alle Ideanote-implementeringer

global.ideanote.resources.requests.memory

string

Tilsidesæt hukommelsesanmodningen for alle Ideanote-implementeringer

global.ideanote.restartDeploymentsWhenConfigChanges

boolean

true

Alle tjenester genstartes, hver gang konfigurationen ændres, for at sikre, at den nye konfiguration anvendes med det samme.

global.ideanote.service.annotations

object

{}

Føj annoteringer til alle Ideanote-tjenester

global.ideanote.service.externalPort

number

Tilsidesæt den eksterne tjenesteport for alle Ideanote-tjenester

global.ideanote.service.internalPort

number

Tilsidesæt den interne tjenesteport for alle Ideanote-tjenester

global.ideanote.service.type

string

Tilsidesæt tjenestetypen for alle Ideanote-tjenester

global.ideanote.serviceAccount.annotations

object

{}

Føj annoteringer til den serviceAccount, der oprettes af Ideanote

global.ideanote.serviceAccount.enabled

boolean

true

Tillad, at Ideanote-implementeringer bruger en serviceAccount, der automatisk oprettes af Ideanotes Helm-diagram

global.ideanote.serviceAccount.name

string

""

Tilsidesæt navnet på Ideanotes serviceAccount

global.ideanote.sso.saml.cert

string

SAML-certifikat til konfiguration af Ideanote som tjenesteudbyder

global.ideanote.sso.saml.key

string

SAML-privatnøgle til konfiguration af Ideanote som tjenesteudbyder

global.ideanote.tolerations

array

[]

Føj tolerations til alle Ideanote-implementeringer

global.leaderElection.namespace

string

"kube-system"

cert-manager installerer som standard ressourcer i navnerummet "kube-system". Skift denne værdi, hvis du ikke ønsker, at navnerummet "kube-system" ændres.

ideanote.api.affinity

object

Angiv affinitet for api-tjenesten

ideanote.api.annotations

object

{}

Føj yderligere annoteringer til api-implementeringen

ideanote.api.autoscaling.enabled

boolean

true

Aktivér automatisk skalering for api-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.autoscaling.enabled.

ideanote.api.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for api-tjenesten

ideanote.api.autoscaling.minReplicas

number

2

Minimum antal replikaer for api-tjenesten

ideanote.api.autoscaling.targetCPUUtilizationPercentage

number

60

Målprocent for CPU-udnyttelse for api-tjenesten

ideanote.api.autoscaling.targetMemoryUtilizationPercentage

number

70

Målprocent for hukommelsesudnyttelse for api-tjenesten

ideanote.api.enableMigrationSchemaValidation

boolean

false

Aktivér denne værdi for at få poden til straks at fejle, hvis den finder et mismatch i databaseskemaet. Dette sker typisk under en tilbagerulning af tjenesten api, efter at databaseskemaet er blevet opdateret med et nyere skema, men før databasen er blevet rullet tilbage til det tidligere skema.

ideanote.api.nodeSelector

object

Angiv nodeSelector for api-tjenesten

ideanote.api.openai.key

string

Angiv en OpenAI API-nøgle for at aktivere OpenAI API

ideanote.api.path

string

"api"

Stien eller underdomænet for api-tjenesten. Denne værdi bruges til at oprette URL'en for ingress-objektet.

ideanote.api.replicaCount

number

1

Antal replikaer for api-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi.

ideanote.api.resources.enabled

boolean

true

Angiv true for at aktivere ressourceanmodninger for api-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.api.resources.limits.cpu

string

"1500m"

CPU- og hukommelsesressourcegrænser for api-tjenesten

ideanote.api.resources.limits.memory

string

"2Gi"

Hukommelsesressourcegrænser for api-tjenesten

ideanote.api.resources.requests.cpu

string

"250m"

CPU- og hukommelsesressourceanmodninger for api-tjenesten

ideanote.api.resources.requests.memory

string

"1Gi"

Hukommelsesressourceanmodninger for api-tjenesten

ideanote.api.sendgrid.key

string

Angiv en Sendgrid API-nøgle for at aktivere Ideanoate til at sende e-mails

ideanote.api.service.annotations

object

{}

Tilføj yderligere annotationer til api-tjenesten

ideanote.api.service.externalPort

number

80

Ekstern port for api

ideanote.api.service.internalPort

number

3000

Intern port for api

ideanote.api.service.type

string

"ClusterIP"

Tjenestetype for api

ideanote.api.tolerations

array

Angiv tolerations for api-tjenesten

ideanote.convert.affinity

object

Angiv affinity for convert-tjenesten

ideanote.convert.annotations

object

{}

Tilføj yderligere annotationer til convert-implementeringen

ideanote.convert.autoscaling.enabled

boolean

true

Aktivér automatisk skalering for convert-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.autoscaling.enabled.

ideanote.convert.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for convert-tjenesten

ideanote.convert.autoscaling.minReplicas

number

1

Mindste antal replikaer for convert-tjenesten

ideanote.convert.autoscaling.targetCPUUtilizationPercentage

number

60

Målprocent for CPU-udnyttelse for convert-tjenesten

ideanote.convert.autoscaling.targetMemoryUtilizationPercentage

number

70

Målprocent for hukommelsesudnyttelse for convert-tjenesten

ideanote.convert.nodeSelector

object

Angiv nodeSelector for convert-tjenesten

ideanote.convert.replicaCount

number

1

Antal replikaer for convert-tjenesten. Aktivering af automatisk skalering tilsidesætter denne værdi.

ideanote.convert.resources.enabled

boolean

true

Indstil til true for at aktivere ressourceanmodninger for convert-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.convert.resources.limits.cpu

string

"2000m"

CPU- og hukommelsesgrænser for convert-tjenesten

ideanote.convert.resources.limits.memory

string

"5Gi"

Hukommelsesgrænser for convert-tjenesten

ideanote.convert.resources.requests.cpu

string

"500m"

CPU- og hukommelsesanmodninger for convert-tjenesten

ideanote.convert.resources.requests.memory

string

"1Gi"

Hukommelsesanmodninger for convert-tjenesten

ideanote.convert.service.annotations

object

{}

Tilføj yderligere annoteringer til convert-tjenesten

ideanote.convert.service.externalPort

number

80

Ekstern port for convert

ideanote.convert.service.internalPort

number

3000

Intern port for convert

ideanote.convert.service.type

string

"ClusterIP"

Tjenestetype for convert

ideanote.convert.tolerations

array

Angiv tolerationer for convert-tjenesten

ideanote.html-renderer.affinity

object

Angiv affinity for html-renderer-tjenesten

ideanote.html-renderer.annotations

object

{}

Tilføj yderligere annotationer til html-renderer-implementeringen

ideanote.html-renderer.autoscaling.enabled

boolean

true

Aktivér autoskalering for html-renderer-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.autoscaling.enabled.

ideanote.html-renderer.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for html-renderer-tjenesten

ideanote.html-renderer.autoscaling.minReplicas

number

1

Mindste antal replikaer for html-renderer-tjenesten

ideanote.html-renderer.autoscaling.targetCPUUtilizationPercentage

number

60

Målværdi for CPU-udnyttelse i procent for html-renderer-tjenesten

ideanote.html-renderer.autoscaling.targetMemoryUtilizationPercentage

number

70

Målværdi for hukommelsesudnyttelse i procent for html-renderer-tjenesten

ideanote.html-renderer.nodeSelector

object

Angiv nodeSelector for html-renderer-tjenesten

ideanote.html-renderer.replicaCount

number

1

Antal replikaer for html-renderer-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi.

ideanote.html-renderer.resources.enabled

boolean

true

Indstil til true for at aktivere ressourceanmodninger for tjenesten html-renderer. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.html-renderer.resources.limits.cpu

string

"1500m"

CPU- og hukommelsesressourcegrænser for tjenesten html-renderer

ideanote.html-renderer.resources.limits.memory

string

"2Gi"

Hukommelsesressourcegrænser for tjenesten html-renderer

ideanote.html-renderer.resources.requests.cpu

string

"250m"

CPU- og hukommelsesressourceanmodninger for tjenesten html-renderer

ideanote.html-renderer.resources.requests.memory

string

"500Mi"

Hukommelsesressourceanmodninger for tjenesten html-renderer

ideanote.html-renderer.service.annotations

object

{}

Tilføj yderligere annoteringer til tjenesten html-renderer

ideanote.html-renderer.service.externalPort

number

80

Ekstern port for html-renderer

ideanote.html-renderer.service.internalPort

number

3000

Intern port for html-renderer

ideanote.html-renderer.service.type

string

"ClusterIP"

Tjenestetype for html-renderer

ideanote.html-renderer.tolerations

array

Angiv tolerationer for tjenesten html-renderer

ideanote.idea-widget.affinity

object

Angiv affinity for tjenesten idea-widget

ideanote.idea-widget.annotations

object

{}

Tilføj yderligere annoteringer til udrulningen af idea-widget

ideanote.idea-widget.autoscaling.enabled

boolean

true

Aktivér automatisk skalering for tjenesten idea-widget. Dette kan tilsidesættes ved at bruge global.ideanote.autoscaling.enabled.

ideanote.idea-widget.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for tjenesten idea-widget

ideanote.idea-widget.autoscaling.minReplicas

number

1

Mindste antal replikaer for tjenesten idea-widget

ideanote.idea-widget.autoscaling.targetCPUUtilizationPercentage

number

60

Målværdi for CPU-udnyttelse i procent for tjenesten idea-widget

ideanote.idea-widget.autoscaling.targetMemoryUtilizationPercentage

number

70

Målværdi for hukommelsesudnyttelse i procent for tjenesten idea-widget

ideanote.idea-widget.nodeSelector

object

Angiv nodeSelector for tjenesten idea-widget

ideanote.idea-widget.path

string

"widget"

Stien eller underdomænet for tjenesten idea-widget. Denne værdi bruges til at oprette URL'en for ingress-objektet.

ideanote.idea-widget.replicaCount

number

1

Antal replikaer for tjenesten idea-widget. Aktivering af automatisk skalering tilsidesætter denne værdi.

ideanote.idea-widget.resources.enabled

boolean

true

Indstil til true for at aktivere ressourceanmodninger for tjenesten idea-widget. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.idea-widget.resources.limits.cpu

string

"1500m"

CPU- og hukommelsesressourcegrænser for tjenesten idea-widget

ideanote.idea-widget.resources.limits.memory

string

"2Gi"

Hukommelsesressourcegrænser for tjenesten idea-widget

ideanote.idea-widget.resources.requests.cpu

string

"250m"

CPU- og hukommelsesressourceanmodninger for tjenesten idea-widget

ideanote.idea-widget.resources.requests.memory

string

"1Gi"

Hukommelsesressourceanmodninger for tjenesten idea-widget

ideanote.idea-widget.service.annotations

object

{}

Føj yderligere annoteringer til idea-widget-tjenesten

ideanote.idea-widget.service.externalPort

number

80

Ekstern port til idea-widget

ideanote.idea-widget.service.internalPort

number

3000

Intern port til idea-widget

ideanote.idea-widget.service.type

string

"ClusterIP"

Tjenestetype for idea-widget

ideanote.idea-widget.tolerations

array

Angiv tolerationer for idea-widget-tjenesten

ideanote.storage.affinity

object

Angiv affinity for lagertjenesten

ideanote.storage.annotations

object

{}

Tilføj yderligere annoteringer til "storage"-deploymentet

ideanote.storage.autoscaling.enabled

boolean

false

Autoskalering er ikke aktiveret som standard for tjenesten "storage". Skift "ideanote.storage.persistence.accessMode" til "ReadWriteMany", hvis du aktiverer den.

ideanote.storage.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for storage-tjenesten

ideanote.storage.autoscaling.minReplicas

number

1

Minimalt antal replikaer for storage-tjenesten

ideanote.storage.autoscaling.targetCPUUtilizationPercentage

number

60

Målværdi for CPU-udnyttelse i procent for storage-tjenesten

ideanote.storage.autoscaling.targetMemoryUtilizationPercentage

number

70

Målværdi for hukommelsesudnyttelse i procent for storage-tjenesten

ideanote.storage.maxUploadSize

string

"500m"

Maksimal uploadstørrelse for storage-tjenesten. Denne værdi bruges til at angive "client_max_body_size" i nginx-konfigurationen for det inkluderede nginx-ingress-diagram.

ideanote.storage.nodeSelector

object

Angiv nodeSelector for lagertjenesten

ideanote.storage.path

string

"files"

Stien eller underdomænet for storage-tjenesten. Denne værdi bruges til at oprette URL'en for ingress-objektet.

ideanote.storage.persistence.accessMode

string

"ReadWriteOnce"

Adgangstilstand for PVC'en

ideanote.storage.persistence.enabled

boolean

true

Angiv true for at aktivere vedvarende lagring for storage-tjenesten

ideanote.storage.persistence.existingClaim

string

Hvis der skal bruges en eksisterende PVC til storage-tjenesten, skal du angive navnet her. Dette Helm-diagram opretter så ikke automatisk en ny PVC.

ideanote.storage.persistence.size

string

"4Gi"

Lagerstørrelse for PVC'en

ideanote.storage.persistence.storageClassName

string

Lagerklasse for PVC'en

ideanote.storage.persistence.volumeMode

string

"Filesystem"

Volumentilstand for PVC'en

ideanote.storage.replicaCount

number

1

Antal replikaer for storage-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi.

ideanote.storage.resources.enabled

boolean

true

Angiv true for at aktivere ressourceanmodninger for storage-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.storage.resources.limits.cpu

string

"1500m"

CPU- og hukommelsesressourcegrænser for storage-tjenesten

ideanote.storage.resources.limits.memory

string

"2Gi"

Grænse for hukommelsesressourcen for storage-tjenesten

ideanote.storage.resources.requests.cpu

string

"100m"

CPU- og hukommelsesressourceanmodninger for storage-tjenesten

ideanote.storage.resources.requests.memory

string

"500Mi"

Anmodning om hukommelsesressource for storage-tjenesten

ideanote.storage.service.annotations

object

{}

Tilføj yderligere annoteringer til storage-tjenesten

ideanote.storage.service.externalPort

number

80

Ekstern port for storage-tjenesten

ideanote.storage.service.internalPort

number

3000

Intern port for storage-tjenesten

ideanote.storage.service.type

string

"ClusterIP"

Tjenestetype for storage-tjenesten

ideanote.storage.tolerations

array

Angiv tolerationer for lagringstjenesten

ideanote.webapp.affinity

object

Angiv affinity for webapp-tjenesten

ideanote.webapp.annotations

object

{}

Tilføj yderligere annotations til webapp-implementeringen

ideanote.webapp.autoscaling.enabled

boolean

true

Aktivér autoskalering for webapp-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.autoscaling.enabled.

ideanote.webapp.autoscaling.maxReplicas

number

4

Maksimalt antal replikaer for webapp-tjenesten

ideanote.webapp.autoscaling.minReplicas

number

2

Mindste antal replikaer for webapp-tjenesten

ideanote.webapp.autoscaling.targetCPUUtilizationPercentage

number

60

Målværdi for CPU-udnyttelse i procent for webapp-tjenesten

ideanote.webapp.autoscaling.targetMemoryUtilizationPercentage

number

70

Målværdi for hukommelsesudnyttelse i procent for webapp-tjenesten

ideanote.webapp.nodeSelector

object

Angiv nodeSelector for webapp-tjenesten

ideanote.webapp.path

string

""

Webapp-tjenestens sti eller underdomæne. Denne værdi bruges til at oprette URL'en for ingress-objektet.

ideanote.webapp.replicaCount

number

1

Antal replikaer for webapp-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi.

ideanote.webapp.resources.enabled

boolean

true

Angiv true for at aktivere ressourceanmodninger for webapp-tjenesten. Dette kan tilsidesættes ved at bruge global.ideanote.resources.enabled.

ideanote.webapp.resources.limits.cpu

string

"1500m"

CPU- og hukommelsesressourcebegrænsninger for webapp-tjenesten

ideanote.webapp.resources.limits.memory

string

"2Gi"

Begrænsninger for hukommelsesressourcer for webapp-tjenesten

ideanote.webapp.resources.requests.cpu

string

"250m"

Anmodninger om CPU- og hukommelsesressourcer for webapp-tjenesten

ideanote.webapp.resources.requests.memory

string

"1Gi"

Anmodninger om hukommelsesressourcer for webapp-tjenesten

ideanote.webapp.service.annotations

object

{}

Tilføj yderligere annotations til webapp-tjenesten

ideanote.webapp.service.externalPort

number

80

Ekstern port for webapp-tjenesten

ideanote.webapp.service.internalPort

number

3000

Intern port for webapp-tjenesten

ideanote.webapp.service.type

string

"ClusterIP"

Tjenestetype for webapp-tjenesten

ideanote.webapp.tolerations

array

Angiv tolerationer for webapp-tjenesten

ingress-nginx.controller.service.type

string

"LoadBalancer"

Typen af tjeneste, der skal oprettes for Ingress-controlleren

ingress-nginx.install

boolean

true

Installér det inkluderede ingress-nginx-undordiagram

postgresql.install

boolean

true

Installér det inkluderede PostgreSQL-underdiagram

postgresql.primary.persistence.size

string

"5Gi"

Lagerstørrelse for den inkluderede PostgreSQL-tjenestes PVC

postgresql.primary.resourcesPreset

string

"small"

Forudindstilling for PostgreSQL-ressourcer

redis.install

boolean

true

Installér det inkluderede Redis-underdiagram

redis.master.persistence.size

string

"3Gi"

Lagerstørrelse for den inkluderede Redis-tjenestes PVC

redis.master.resourcesPreset

string

"micro"

Forudindstilling for Redis-ressourcer

Konfigurér inkluderede underdiagrammer

Konfiguration af det inkluderede postgresql underdiagram

Det Ideanote Helm Chart installerer som standard Bitnami PostgreSQL-diagrammet som et underdiagram.
Dette konfigurerer en PostgreSQL database til Ideanote-tjenesten.

Du kan konfigurere PostgreSQL-underdiagrammet ved at ændre værdierne i filen values.yaml under nøglen postgresql.
Se denne liste over tilladte værdier for det inkluderede PostgreSQL-underdiagram her
Eksempel på konfiguration:

postgresql:
  install: true
  primary:
    persistence:
      size: 5Gi
    resources:
      requests:
        memory: 1Gi
        cpu: 250m
      limits:
        memory: 2Gi
        cpu: 500m

Adgangskode

Det inkluderede PostgreSQL-underdiagram opretter automatisk en hemmelighed med adgangskoden til databasebrugeren og administratoren.
Du kan tilsidesætte den automatisk genererede adgangskode til databasen ved at angive værdien global.ideanote.psql.passwordSecret.password i filen values.yaml.

Opret forbindelse til postgresql-databasen udefra klyngen

Kør følgende kommandoer for at oprette forbindelse til databasen udefra klyngen:

kubectl get secret -n ideanote ideanote-postgres-password -o jsonpath="{.data.postgres-password-user}" | base64 -d

kubectl exec -it -n ideanote svc/ideanote-postgresql -- psql -U ideanote -d ideanote
# or
kubectl port-forward -n ideanote svc/ideanote-postgresql 5432:5432 &
psql --host 127.0.0.1 -d postgres -p 5432 -U postgres

Konfiguration af det inkluderede redis-underdiagram

Det Ideanote Helm Chart installerer som standard Bitnami Redis-diagrammet som et underdiagram.
Dette konfigurerer en Redis database til Ideanote-tjenesten.

Du kan konfigurere Redis-underdiagrammet ved at ændre værdierne i filen values.yaml under nøglen redis.
Se denne liste over tilladte værdier for det inkluderede Redis-underdiagram her.
Eksempel på konfiguration:

redis:
  install: true
  master:
    persistence:
      size: 5Gi
    resources:
      requests:
        memory: 1Gi
        cpu: 250m
      limits:
        memory: 2Gi
        cpu: 500m

Opret forbindelse til databasen redis udefra klyngen

Kør følgende kommandoer for at oprette forbindelse til din redis-database udefra klyngen:

kubectl exec -it -n ideanote svc/ideanote-redis-master -- redis-cli
# or
kubectl port-forward -n ideanote svc/ideanote-redis-master 6379:6379
redis-cli -h localhost -p 6379

Konfiguration af det inkluderede ingress-nginx-underdiagram

Det Ideanote Helm Chart installerer som standard ingress-nginx-diagrammet som et underdiagram.
Dette konfigurerer en load balancer til Ideanote-tjenesten og bruges som ingress-controller for Ideanotes ingress-objekt.

Du kan konfigurere ingress-nginx-underdiagrammet ved at ændre værdierne i filen values.yaml under nøglen ingress-nginx.
Se denne liste over tilladte værdier for det inkluderede ingress-nginx-underdiagram her.

Eksempel på konfiguration:

ingress-nginx:
  enabled: true
  controller:
    service:
      annotations:
        cloud.google.com/load-balancer-type: "Internal"
    resources:
      requests:
        memory: 1Gi
        cpu: 250m
      limits:
        memory: 2Gi
        cpu: 500m

Konfiguration af det inkluderede cert-managerund diagram

Det Ideanote Helm Chart installerer som standard cert-manager-diagrammet som et underdiagram.
Dette konfigurerer cert-manager til automatisk at oprette og administrere TLS-certifikater til Ideanote-tjenesten.

Du kan konfigurere cert-managerund diagrammet ved at ændre værdierne i filen values.yaml under nøglen cert-manager.
Se denne liste over tilladte værdier for det inkluderede cert-managerund diagram her.

Eksempel på konfiguration:

cert-manager:
  install: true
  installCRDs: false
  replicaCount: 2

Interaktion med cert-managertjenesten

Vi anbefaler at installere cmctl for at interagere med cert-managertjenesten.
Dette CLI-værktøj kan hjælpe dig med at administrere cert-manager-ressourcer i din klynge.

Med dette værktøj kan du for eksempel forny certifikatet ved at køre følgende kommando:

cmctl renew ideanote-tls -n ideanote

kubectl get certificaterequest -n ideanote

Konfigurer eksterne/administrerede tjenester

Ideanote leveres med inkluderede underordnede charts til PostgreSQL, Redis og Load-balancer-tjenester.
Disse tjenester administreres af Ideanote Helm Chart og installeres som standard, når Ideanote udrulles.
Vi anbefaler dog at anvende eksterne/administrerede tjenester til så mange af disse tjenester som muligt, når Ideanote køres i et produktionsmiljø.
Dette sikrer, at du har en pålidelig og skalerbar infrastruktur.

Denne sektion indeholdt en vejledning i, hvordan eksterne/administrerede tjenester konfigureres til PostgreSQL, Redis og Load-balancer (kombinationen af ingress-nginx og cert-manager).

Konfigurer en ekstern PostgreSQL-instans

For at bruge en ekstern PostgreSQL-instans sammen med Ideanote skal du angive forbindelsesoplysningerne, når du installerer Ideanote Helm Chart.
Her er et eksempel på en konfiguration til forbindelse til en ekstern PostgreSQL-instans:

global:
  ideanote:
    psql:
      database: <database>
      username: <username>
      host: <host>
      passwordSecret:
        password: <password>

      # You can also instead create a secret object yourself with "kubectl" and provide it here
      # passwordSecret:
      #   name: <secret-name>
      #   key: postgres-password      # The key in the secret object where the password is stored

postgresql:
  install: false

Konfigurer en ekstern Redis-instans

For at bruge en ekstern Redis-instans sammen med Ideanote skal du angive forbindelsesoplysningerne, når du installerer Ideanote Helm Chart.
Her er et eksempel på en konfiguration til forbindelse til en ekstern Redis-instans:

global:
  ideanote:
    redis:
      username: <username>
      host: <host>
      passwordSecret:
        password: <password>

      # You can also instead create a secret object yourself with "kubectl" and provide it here
      # passwordSecret:
      #   name: <secret-name>
      #   key: redis-password      # The key in the secret object where the password is stored

redis:
  install: false

Konfigurer en brugerdefineret load-balancer

Vi anbefaler, at du bruger en load balancer fra din cloududbyder til ingress-controlleren.
Cloududbydere tilbyder ofte administrerede load balancere, der kan bruges sammen med Kubernetes ved at angive ingress class eller ved at tilføje annoteringer til ingress-objektet.
Du kan tilføje disse værdier ved hjælp af følgende konfiguration:

global:
  ideanote:
    ingress:
      annotations: <annotations>
      className: <ingress-class>

cert-manager:
  install: false

ingress-nginx:
  install: false

Konfigurer integrationer

Her finder du vejledninger til konfiguration af de forskellige integrationer, som Ideanote understøtter.
Ingen af disse integrationer er nødvendige for at køre Ideanote lokalt, men de kan udvide funktionaliteten i dit workspace.

Konfigurer Sendgrid-integration

For at Ideanote kan sende e-mails, skal du angive en Sendgrid API-nøgle, når du installerer Ideanote Helm Chart.
Følg denne vejledning for at konfigurere integrationen med Sendgrid:

1․ Opret en Sendgrid-konto, hvis du ikke allerede har en.

2․ Opret en API-nøgle i Sendgrid-dashboardet. Den skal som minimum have Mail Send-funktioner.

Sendgrid API-nøgle

3․ Angiv API-nøglen i filen values.yaml:

ideanote:
  api:
    sendgrid:
      key: "SG........."

Konfigurer OpenAI-integration

For at Ideanote-platformen kan levere AI-funktionalitet, skal du angive en OpenAI API-nøgle, når du installerer Ideanote Helm Chart.
Følg denne vejledning for at konfigurere integrationen med OpenAI:

1․ Opret en OpenAI-konto, hvis du ikke allerede har en.

2․ Opret en API-nøgle i OpenAI-dashboardet. Den skal have All-tilladelser.

OpenAI API-nøgle

3․ Angiv API-nøglen i filen values.yaml:

ideanote:
  api:
    openai:
      key: "sk-........."

Konfigurer SAML-integration

Ideanote Helm Chart understøtter opsætning af din installation som en SAML-tjenesteudbyder, så du kan bruge din egen identitetsudbyder til godkendelse.
Dette kræver, at du angiver et certifikat, når du konfigurerer SAML-integrationen.

Følg denne vejledning for at konfigurere SAML-integrationen:

1․ Opret et selvsigneret certifikat med følgende kommando:

openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=my-service.example.com"

2․ Angiv certifikatet og nøglen i filen values.yaml, og installer Ideanote Helm Chart:

global:
  ideanote:
    saml:
      cert: |
        -----BEGIN CERTIFICATE-----
        ...
        -----END CERTIFICATE-----
      key: ....

3․ Besøg https://<your-domain>/api/sso/saml/metadata.xml; dette er nu metadataendepunktet for din Ideanote SAML-tjenesteudbyder.

4․ Konfigurer din identitetsudbyder. Følg denne vejledning for at få flere oplysninger, og husk at erstatte metadata.xml URL'en med din egen.

Konfigurér LDAP-integrationen

Ideanote understøtter LDAP-protokollen til integration med din eksisterende mappe over brugere og grupper, såsom Microsoft Active Directory og Entra ID. Du kan bruge LDAP til at godkende og synkronisere brugere, både til klargøring lige ved login på dit workspace og på forhånd via et klargøringstrin, der er indbygget direkte i LDAP-konfigurationsguiden. LDAP kan ikke konfigureres ved hjælp af values.yaml-konfigurationen, men skal i stedet konfigureres efter eller under opsætningen af dit Ideanote-workspace.

Hvis du ønsker at bruge LDAP, men endnu ikke har implementeret LDAP i din IT-infrastruktur, bedes du se den relevante dokumentation om implementering af LDAP, der passer til din IT-infrastruktur. Vi anbefaler følgende ressourcer:

I denne vejledning gennemgår vi opsætningsprocessen på Ideanote-platformen.

Konfiguration af LDAP i dit workspace

LDAP-illustration 1
  1. Gå til Indstillinger.
  2. Gå til Godkendelse.
  3. Klik på Tilføj for at oprette en ny loginmulighed.
  4. Vælg LDAP på listen over muligheder.

Konfiguration af LDAP

LDAP-illustration 2
  1. Klik på Tilføj konfiguration.
  2. Indtast URL'en til din LDAP-server, uden ldap://-protokollen og uden porten.
  3. Indtast Bind DN/UPN, som er Distinguished Name (DN) eller User Principal Name (UPN) i visse miljøer, f.eks. Microsoft Active Directory eller Microsoft Entra ID, og som bruges til at binde (godkende) til din LDAP-katalogtjeneste. Det angiver den post i kataloget, som Ideanote bruger til godkendelse og søgning. Denne konto skal have læseadgang til kataloget. En UPN kan f.eks. se sådan ud: you@your-domain.com, hvilket gør den lettere at huske og bruge. Alternativt kan et mere traditionelt Bind DN se sådan ud: CN=Admin,OU=Users,DC=your-domain,DC=com, hvilket angiver en administrativ bruger i organisationsenheden Users i domænet your-domain.com.
  4. Indtast Bind Password. Dette er den adgangskode, der er knyttet til Bind Distinguished Name (Bind DN/UPN). Ideanote bruger denne adgangskode til at godkende det angivne Bind DN ved tilslutning til LDAP-kataloget. Adgangskoden skal svare til den konto, der er angivet i feltet Bind DN/UPN, uanset om det er et User Principal Name (UPN) som you@your-domain.com eller et traditionelt LDAP Distinguished Name som CN=Admin,OU=Users,DC=your-domain,DC=com. Denne adgangskode er afgørende for at oprette en sikker forbindelse, så der kan udføres søgninger og hentes brugeroplysninger til godkendelsesprocesser. Den gemte værdi vil være AES-256krypteret.
  5. Klik på Test Connection for at kontrollere, at der kan oprettes forbindelse til LDAP Server URL, og at du kan binde til den ("godkende") med det angivne Bind DN/UPN og Bind Password. Hvis forbindelsen lykkes, vises teksten LDAP connection successfully established ved siden af knappen Test Connection.

Hvis du støder på et problem, kan du se afsnittet Fejlfinding af forbindelse.

LDAP-illustration 3

Yderligere konfigurationsfelter

LDAP-illustration 4
  1. Base DN repræsenterer det øverste niveau i dit bibliotekstræ, der skal gennemsøges, når brugere og grupper provisioneres. Du kan bruge dette til at begrænse, hvilken gren af dit bibliotek du vil fokusere på. Bind DN skal have læseadgang til Base DN og dets objekter.
  2. Hvis angivet, anvendes LDAP-filteret, når der søges i den mappe, du har konfigureret i dit Base DN. Det er nyttigt, hvis du vil begrænse, hvilke brugere der kan provisioneres og logge ind på dit workspace. Du skal bruge standard LDAP-forespørgselssyntaks som beskrevet i RFC 4515. For eksempel: (&(givenName=you)(sn=yourlastname)).
  3. Når du aktiverer Use SSL/TLS, aktiveres LDAP over SSL (ldaps). Flere yderligere
    felter bliver synlige, og du kan læse mere her.
  4. Når du slår Use StartTLS til, bruges StartTLS først til at oprette en ukrypteret forbindelse via LDAP-standardporten (389). Derefter opgraderes forbindelsen til TLS via en StartTLS-handling. Flere felter bliver synlige, og du kan læse mere her.

Konfigurer LDAPS eller StartTLS

LDAP-illustration 6

Når Use SSL/TLS eller Use StartTLS er slået til, vises yderligere valgfrie konfigurationsfelter nedenfor:

  1. LDAP-serverens CA-certifikat(er): Angiv det eller de certifikater fra en certifikatmyndighed (CA), der har signeret LDAP-serverens SSL-certifikat. Dette er påkrævet, hvis LDAP-serveren bruger selvsignerede certifikater eller certifikater udstedt af en privat CA. Certifikatet eller certifikaterne skal være i PEM-format.
  2. Klientcertifikat: Angiv det klientcertifikat, der skal præsenteres for LDAP-serveren til godkendelse. Dette er påkrævet, hvis LDAP-serveren kræver godkendelse med klientcertifikat. Certifikatet skal være i PEM-format.
  3. Klientens private nøgle: Angiv den private nøgle, der hører til dit klientcertifikat. Dette er påkrævet, hvis du har angivet et klientcertifikat. Den private nøgle skal være i PEM-format og må ikke være beskyttet med en adgangskode.
  4. Tillad selvsignerede certifikater: Aktivér dette for at tillade forbindelser til LDAP-servere, der bruger selvsignerede certifikater, uden at verificere CA'en. Advarsel: Hvis du aktiverer denne indstilling, kan forbindelsen blive sårbar over for man-in-the-middle-angreb.

Attributtilknytning

LDAP-illustration 9

Mange moderne LDAPv3-kompatible servere understøtter forespørgsler om det understøttede skema for tilgængelige attributter. Når det er muligt, registrerer Ideanote skemaet og kommer med gode standardforslag til, hvordan du kan tilknytte dataene i din mappe til tilsvarende bruger-/teamegenskaber i Ideanote. Du kan se og tilpasse disse tilknytninger på siden Attributtilknytning.


  1. LDAP-attribut repræsenterer attributter, der er fundet i dit LDAP-serverskema. De kommer fra din katalogudbyder, f.eks. Microsoft Active Directory eller Microsoft Entra ID. Hvis din LDAP-server af en eller anden grund ikke overholder LDAPv3, forsøger vi i stedet at gætte, hvad attributnavnene kan være, ud fra historiske konventioner og attributtyperne, der er beskrevet i RFC4519. For eksempel givenName repræsenterer typisk en persons fornavn, mens sn typisk repræsenterer en persons efternavn.


  2. Type repræsenterer en forenklet version af Syntax-definitionen for en LDAP-attribut. Der findes mange sådanne syntaksdefinitioner, som alle er beskrevet her i RFC4517, men for enkelthedens skyld samler Ideanote dem i følgende definitioner:







    • string: Repræsenterer en sekvens af tegn. LDAP-syntaksdefinitioner såsom DirectoryString, PrintableString, TelephoneNumber, NumericString og andre vil alle bruge denne type.

    • date: Repræsenterer en dato med et tidsstempel, enten i Generalized Time (YYYYMMDDHHMMSSZ) eller i UTCTime (YYMMDDHHMMSSZ). Ideanote forstår og fortolker dette, så du kan knytte det til datoegenskaber for Ideanote-brugere/-teams.

    • integer: Selvom LDAP ikke har syntaksdefinitioner for flydende kommaværdier (disse bruger i stedet syntaksdefinitioner såsom NumericString, som knyttes til string i Ideanote), repræsenterer typen `integer` hele tal, som kan knyttes til numeriske bruger-/team-egenskaber i Ideanote.

    • boolean: de booleske værdier true og false.

    • binary: Nogle LDAP-attributter repræsenterer binære data, såsom den almindelige thumbnailPhoto-attribut til brugerprofilavatarer. Disse kan typisk kun knyttes til avatar for Ideanote-brugere og logo for Ideanote-teams.

    • reference: LDAP-syntaksdefinitionen DN (Distinguished Name) henviser til en anden enhed med dette DN og bruges typisk til attributtilknytning på Ideanote-platformen til at knytte memberOf-attributten for gruppetilknytninger for en bruger til tilsvarende Ideanote-teams.

  3. Tilsvarende Ideanote-attribut repræsenterer den dataegenskab for brugere/teams, som LDAP-attributten skal tilknyttes. Du kan tilpasse den ved at klikke på rullemenuen for hver række på listen. De tilgængelige valgmuligheder afhænger af LDAP-attributtens type. For eksempel kan en LDAP-attribut af typen date ikke tilknyttes First name.

Ændring af synkronisering af brugergrupper/team

LDAP-illustration 10

Hvis du vil synkronisere (eller stoppe med at synkronisere) en brugers teammedlemskaber, når vedkommende logger ind på Ideanote (eller når vedkommende er forhåndsprovisioneret via provisioneringstrinnet), skal du identificere den LDAP-attribut, der repræsenterer den eller de grupper, brugeren er en del af.

Med Microsoft Active Directory og Microsoft Entra ID kaldes denne attribut normalt memberOf, og den har typen reference i Ideanote.

Som standard er dette allerede knyttet til den særlige Teams Ideanote-brugeregenskab, som vist i illustrationen ovenfor.

Hvis De vil stoppe synkroniseringen af teams:

  1. Identificer LDAP-attributten memberOf (eller den tilsvarende egenskab i dit LDAP-serverskema)
  2. Klik på rullemenuen i den pågældende række i kolonnen Tilsvarende Ideanote-attribut.
  3. Vælg Importer ikke.

Oprettelse af en brugerdefineret attributtilknytning

LDAP-illustration 8

De tilknytninger, Ideanote som standard viser, er baseret på vores forsøg på at finde frem til gode standardindstillinger. Hvis du vil knytte andre attributter til Ideanote, kan du også klikke på knappen Tilføj attribut, som findes under både bruger- og gruppe-/teamtabellen.

LDAP-illustration 11

I den dialogboks, der vises, kan du indtaste et brugerdefineret attributnavn og angive den datatype, der passer bedst til det. I tekstfeltet vises alle andre attributter, der er fundet på din LDAP-server, og som ikke indgår i forslagene til standardtilknytninger. Du behøver ikke vælge nogen af dem, selvom det er meget sandsynligt, at din LDAP-server kun understøtter nogle af de foreslåede attributnavne.

Attributtilknytninger, som De har oprettet via dialogboksen Tilføj attribut, kan slettes ved at klikke på krydsikonet ud for rækken som vist nedenfor eller ved at ændre tilknytningen til Do Not Import.

LDAP-illustration 12

Provisionering

Når dine brugere logger ind på dit Workspace, bliver de provisioneret. Det betyder, at deres datarepræsentation i din mappe synkroniseres med den tilsvarende Ideanote-bruger i henhold til de regler for attributtilknytning, du har defineret.

Der er dog mange tilfælde, hvor det giver mening at provisionere brugere på forhånd. Et populært anvendelsestilfælde er at forhåndsprovisionere alle Deres brugere og teams, så De kan konfigurere adgange på tværs af Deres idesamlinger, før De formelt inviterer dem til at bidrage i Deres Workspace.

Trinnet Provisionering i LDAP-indstillingerne gør det muligt at gøre dette.

LDAP-illustration 13
  1. Feltet Søg gør det muligt at udføre en søgning direkte i din LDAP-mappe. Din indtastning søger i de almindelige LDAP-attributter distinguishedName, userPrincipalName, sAMAccountName, mail, displayName og cn.
  2. Den tabel viser alle posterne, der blev hentet fra din mappe, samt relevante oplysninger om hver enkelt, såsom om de repræsenterer en bruger eller en gruppe, hvornår de sidst blev synkroniseret til dit workspace osv.
  3. Med Filter kan du indsnævre søgeresultaterne yderligere. Du kan vælge kun at vise grupper eller brugere samt kun at vise enheder, der aldrig er blevet klargjort på dit workspace.
  4. Knappen Start Provisioning Button starter klargøringsprocessen. Du kan følge status i en statuslinje ved siden af knappen. Når klargøringen er i gang, kan du også klikke på Annuller for at forhindre, at yderligere enheder klargøres.
LDAP-illustration 14

Fejlfinding af forbindelse

LDAP-illustration 5

Når LDAP er konfigureret korrekt, vises teksten LDAP connection successfully established ved siden af Test Connectionknappen.

Du kan dog støde på nogle almindelige problemer. Nedenfor finder du tip til fejlfinding af hver potentiel fejlmeddelelse:

Fejl: LDAP-serveren kunne ikke findes. Kontrollér, at du har indtastet den korrekte server-URL, og at dit aktuelle netværk kan oprette forbindelse til den.

Mulige årsager:

  • LDAP-serverens URL kan være indtastet forkert eller være ugyldig.
  • Programmet kan ikke nå LDAP-serveren på grund af netværksbegrænsninger.

Fejlfindingstrin:

  • Kontrollér, at værtsnavnet eller IP-adressen ikke indeholder slåfejl.
  • Bekræft, at LDAP-serveren er på det samme virtuelle netværk som din Ideanote-implementering. Hvis ikke, skal du konfigurere netværkspeering eller en VPN, så de to netværk kan kommunikere.
  • Sørg for, at udgående forbindelser fra Kubernetes-klyngen, der kører Ideanotes lokale implementering, er tilladt på følgende porte:

    • 389 til LDAP (som standard)
    • 636 til LDAPS (som standard)
  • Opdater firewallreglerne, så trafik til LDAP-serveren på disse porte tillades.
  • Hvis du bruger et værtsnavn, skal du kontrollere, at DNS-opløsningen er konfigureret korrekt i Kubernetes-klyngen.
  • Hvis du bruger Microsoft Entra ID og netop har konfigureret Microsoft Entra Domain Services for at aktivere LDAP-integrationen, skal du genstarte Kubernetes-klyngen helt, før den kan finde værtsnavnet.

Fejl: LDAP-godkendelse med det angivne Bind DN og den angivne Bind Password mislykkedes.

Mulige årsager:

  • Legitimationsoplysningerne er forkerte.
  • Synkronisering af adgangskodehash er ikke aktiveret (et almindeligt problem med Microsoft Entra Domain Services)
  • Bind-brugerens konto er deaktiveret, låst eller udløbet.
  • LDAP-serveren kræver LDAPS, og du har muligvis ikke aktiveret til/fra-knappen Use SSL/TLS eller angivet forkerte certifikater/nøgler.

Fejlfindingstrin:

  • Kontrollér, at Bind DN har korrekt syntaks og ikke indeholder tastefejl.

    • Bind DN skal være brugerens fulde DN (f.eks. cn=admin,dc=example,dc=com) eller brugerens UPN, f.eks. you@your-domain.com, når du bruger Microsoft Entra ID eller Microsoft Active Directory.
  • Kontrollér, at Bind Password er korrekt.
  • Godkend ved hjælp af en LDAP-klient med Bind DN og Bind Password for at bekræfte, at de fungerer uden for Ideanote.
  • Når du bruger Microsoft Entra Domain Services, skal du sikre dig, at synkronisering af adgangskodehash er aktiveret. Hvis du for nylig har konfigureret Microsoft Entra DOmain Services, skal du muligvis nulstille adgangskoden for den Bind DN-konto, du forsøger at godkende med. Her er vejledningen til brugerkonti, der kun findes i skyen, og her er vejledningen til synkroniserede brugerkonti.
  • Kontrollér, at bind-brugerens konto er aktiv og ikke er underlagt nogen begrænsninger.
  • Find ud af, om LDAP-serveren kræver SSL/TLS.

    • Hvis det er tilfældet, skal du aktivere Use SSL/TLS for at bruge ldaps:// i Server URL. Sørg også for, at LDAP Server PORT peger på den korrekte port, som som standard er 636 for LDAPS.
    • Kontrollér, at du har angivet det korrekte LDAP-server-CA-certifikat, klientcertifikat og klientens private nøgle (hvis påkrævet).
    • Undersøg, om det løser problemet at aktivere 'Allow Self-Signed Certificates'.
    • Sørg for, at Kubernetes-klyngen har tillid til LDAP-serverens SSL-certifikat.
    • Importér om nødvendigt LDAP-serverens certifikat til klyngens trust store.

Fejl: LDAP-godkendelsen lykkedes, men der kunne ikke søges i det angivne Base DN.

Mulige årsager:

  • Base DN er forkert eller peger på en forkert placering i kataloget.
  • Bind-brugeren har ikke tilladelse til at søge i den angivne Base DN.

Fejlfindingstrin:

  • Sørg for, at Base DN er korrekt formateret (f.eks. DC=your-domain,DC=com).
  • Kontrollér, om der er tastefejl eller kommaer og lighedstegn, der er placeret forkert.
  • Bekræft, at bind-brugeren, der er angivet i Bind DN, har læse-/søgetilladelser til Base DN.
  • Brug en LDAP-klient (f.eks. ldapsearch) til at teste søgning i Base DN med bind-brugerens legitimationsoplysninger.
  • Sørg for, at katalogstrukturen under Base DN indeholder de brugerposter, du ønsker at få adgang til.

Hvis ingen af disse fejlfindingstip hjælper, bedes du konsultere den dokumentation, som din infrastrukturoperatør stiller til rådighed, eller kontakte Ideanote for yderligere hjælp til fejlfinding.

Konfiguration til produktion

Dette afsnit indeholder anbefalinger til konfiguration af Ideanote Helm Chart til produktionsmiljøer.

Eksterne tjenester

Vi anbefaler, at du overlader så mange tjenester som muligt til eksterne/administrerede tjenester, når du kører Ideanote i et produktionsmiljø.
Det er for at sikre, at du har en pålidelig og skalerbar infrastruktur.

Især bør tjenesten PostgreSQL administreres eksternt, da det inkluderede PostgreSQL underdiagram ikke som standard understøtter høj tilgængelighed, sikkerhedskopiering og skalering ud.

Se afsnittet Konfigurer eksterne/administrerede tjenester for at få flere oplysninger om konfiguration af eksterne tjenester.

Automatisk skalering

Som standard aktiverer Ideanote Helm Chart ikke automatisk skalering af tjenesterne.
Alle tjenester har som standard et replikaantal på 1 og kan skaleres manuelt ved at ændre værdien replicaCount i filen values.yaml.

Du kan aktivere automatisk skalering af tjenesterne ved at føje følgende til filen values.yaml:

global:
  ideanote:
    autoscaling:
      enabled: true

ingress-nginx:
  controller:
    autoscaling:
      enabled: true
      minReplicas: 2
      maxReplicas: 6

Dette opretter en Horizontal Pod Autoscaler (HPA) for hver Ideanote-tjeneste og skalerer antallet af replikaer baseret på tjenestens CPU- og hukommelsesudnyttelse.
Tjenesterne api og webapp skaleres som standard mellem 2 og 4 replikaer, mens de øvrige skaleres mellem 1 og 4. Du kan dog ændre minimums- og maksimumantallet af replikaer ved at ændre værdierne for minReplicas og maxReplicas i filen values.yaml for hver tjeneste.
Eksempel på konfiguration:

ideanote:
  api:
    autoscaling:
      minReplicas: 3
      maxReplicas: 5

  html-renderer:
    autoscaling:
      enabled: false

  convert:
    autoscaling:
      minReplicas: 2
      maxReplicas: 3

Ressourceanmodninger

Som standard angiver Ideanote Helm Chart ikke ressourceanmodninger for Ideanote-tjenesterne.
Det gør det muligt for tjenesterne at køre på klynger med begrænsede ressourcer.

I produktionsmiljøer anbefaler vi, at ressourceanmodninger aktiveres globalt ved at føje følgende til filen values.yaml:

global:
  ideanote:
    resources:
      enabled: true

Hver tjeneste har standardværdier for CPU-/hukommelsesanmodninger og -grænser, som bør fungere til de fleste anvendelser, så det bør være tilstrækkeligt at aktivere ressourcer globalt.
Hvis du imidlertid har brug for at ændre ressourceanmodningerne for en bestemt tjeneste, kan du gøre det ved at ændre værdierne i filen values.yaml under den tilsvarende tjenestenøgle.
For eksempel:

global:
  ideanote:
    resources:
      enabled: true

ideanote:
  api:
    resources:
      requests:
        memory: 1Gi
        cpu: 250m
      # Disable limits
      limits:
        memory: null
        cpu: null

postgresql:
  primary:
    resources:
      requests:
        memory: 1024Mi
        cpu: 500m
      limits:
        memory: 1536Mi
        cpu: 750m

redis:
  master:
    resources:
    requests:
        memory 512Mi
        cpu: 500m
    limits:
        memory: 768Mi
        cpu: 750m

ingress-nginx:
  controller:
    resources:
      requests:
        memory: 256Mi
        cpu: 250m
      limits:
        memory: 512Mi
        cpu: 500m

cert-manager:
  cainjector:
    resources:
      requests:
        cpu: 50m
        memory: 128Mi
  webhook:
    resources:
      requests:
        cpu: 50m
        memory: 128Mi
  startupapicheck:
    resources:
      requests:
        cpu: 50m
        memory: 128Mi
  resources:
    requests:
      cpu: 50m
      memory: 128M

Vedvarende diskenheder og sikkerhedskopier

Hvis du installerer Ideanote Helm Chart med alle inkluderede underdiagrammer, opretter det 3 PVCs (Persistent Volume Claims) i din klynge:

  • data-<release>-postgresql-0 til PostgreSQL-databasen
  • redis-data-<release>-redis-master-0 til Redis-databasen
  • <release>-storage-data til Ideanotes medieuploads

Kubernetes tildeler tilsvarende PVs (Persistent Volumes) til disse PVCs, og dataene gemmes på disse diskenheder.

Til produktionsinstallationer anbefaler vi, at du udfører følgende 3 opgaver:

1․ Den standardlagerplads, der er tildelt tjenester, er sat til et minimum. Vi anbefaler, at du øger lagerpladsen efter behov ved at ændre filen values.yaml:

postgresql:
  primary:
    persistence:
      # Used as primary database. Critical to increase if you expect a large amount usage.
      size: 10Gi

redis:
  master:
    persistence:
      # Used as a memory cache. Not necessarily critical to increase.
      size: 5Gi

ideanote:
  storage:
    persistence:
      # User uploaded files will be stored here. Increase if you expect large file uploads.
      size: 20Gi

2․ PVs oprettes som standard med genvindingspolitikken Delete, hvilket betyder, at når PVC slettes, slettes PV og dataene på den også. Derfor anbefaler vi at ændre genvindingspolitikken til Retain for PVs, der oprettes af Ideanote Helm Chart. Det kan du gøre ved at patche den tildelte PVs med følgende kommando:

# Set all PVs in the ideanote namespace to "Retain"
kubectl get pv -n ideanote -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -I {} kubectl patch pv {} -n ideanote -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'

# Check that the PVs have been patched
kubectl get pv -n ideanote

# Patch individual PVs with the reclaim policy Retain
kubectl patch pv <pv-name> -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' -n ideanote

3․ Vi anbefaler også, at du konfigurerer en automatisk backupstrategi for alle volumes.

Logning og overvågning

Ideanote tilbyder i øjeblikket ikke en indbygget logningsløsning sammen med Helm-diagrammet, men vi anbefaler, at der konfigureres en overvågningsløsning i produktionsmiljøer.

I produktionsmiljøer anbefaler vi også, at global.ideanote.logLevel justeres til info eller warn i filen values.yaml for at reducere mængden af logfiler, der genereres af tjenesterne.

Vi anbefaler også, at der konfigureres sundhedstjek for at overvåge tilgængeligheden af din Ideanote-installation.
Hvis du vælger at konfigurere sundhedstjek, skal du overvåge følgende stier:

Eksterne sundhedstjek

Service

Sti

webapplikation

<domain>/healthz

api

<domain>/api/healthz

idea-widget

<domain>/widget/healthz

lager

<domain>/files/healthz

Interne sundhedstjek

Service

Sti

konverter

ideanote-convert.ideanote.svc.cluster.local/healthz

html-renderer

ideanote-html-renderer.ideanote.svc.cluster.local/healthz

Belastningsfordeling og CDN

Hvis det er muligt i dit miljø, anbefaler vi, at du konfigurerer et CDN foran Ideanotes load balancer for at cache statiske ressourcer og reducere belastningen på tjenesten.
CDN'et bør helst konfigureres til at cache alle stier, der begynder med /files og /chunk-.

Opgradering

Når du kører Ideanote lokalt, skal du opgradere til en ny version, når en ny udgivelse bliver tilgængelig.
Ideanote giver dig besked, når en ny udgivelse bliver tilgængelig, og leverer udgivelsesnoter til hver ny version. Disse indeholder oplysninger om ændringer, der kan medføre afbrydelser, og nye funktioner.

I produktionsmiljøer skal du være særligt opmærksom på den opgraderingsvejledning, som Ideanote stiller til rådighed, for at undgå nedetid eller datatab.

Fejlfinding

Kontakt developer@ideanote.io, hvis du oplever problemer med at køre Ideanote lokalt.
Ideanote hjælper med fejlfinding og vejleder dig i, hvordan problemet løses i henhold til den gældende aftale.
Før du kontakter os, skal du gennemgå følgende fejlfindingsvejledning for at forstå problemet og eventuelt løse det selv.

Helm-diagrammet kan ikke installeres

Hvis Ideanote Helm Chart ikke kan installeres, skal du køre installationskommandoen med flaget --debug for at få flere oplysninger om fejlen.
Dette giver mere detaljerede oplysninger om fejlen og hjælper dig med at forstå, hvad der forårsager problemet.

Hvis du ikke kan løse problemet, bedes du kontakte developer@ideanote.io for at få yderligere hjælp.
Medtag så mange oplysninger om problemet som muligt, herunder outputtet fra installationen med --debug og filen values.yaml.

Du kan også få et overblik over komponenter, der fejler, ved at køre følgende kommando:

kubectl get all,certificaterequests,issuer -n ideanote

Helm-chartet sidder fast i en afventende tilstand eller en fejltilstand

Se Helm-chartets status ved at køre følgende kommando:

helm status ideanote -n ideanote
# or
helm history ideanote -n ideanote

Hvis Helm-chartet sidder fast i en afventende tilstand eller en fejltilstand, kan det være nødvendigt at rulle tilbage ved hjælp af følgende kommando:

helm rollback ideanote -n ideanote

Min URL/IP-adresse eller mit SSL-certifikat fungerer ikke

Du kan teste, om den IP-adresse, der er knyttet til din load balancer, svarer korrekt, ved at køre følgende kommandoer:

1․ Find den IP-adresse, der er blevet tildelt dynamisk til din load balancer. Sørg for, at ingress er knyttet til en IP-adresse og værtsnavne.

kubectl get ingress -n ideanote

2․ Kontrollér, om din Kubernetes-klynge reagerer korrekt på forespørgsler, ved at bruge denne curl-kommando med værdierne (den tilknyttede IP-adresse og et værtsnavn) fra kommandoen ovenfor. Sørg for, at den svarer med statuskoden 200 OK og index-html for Ideanote-tjenesten.

# With only host
curl -kivL <host>

# With host and IP-address
curl -kivL -H 'Host: <host>' <ip-address>

3․ Med det inkluderede nginx ingress-controller-subchart bør tjenesten være tilgængelig med et TLS-certifikat efter et par minutter. Indtil certifikatet er blevet oprettet, bruger tjenesten et selvsigneret certifikat, som ingress-nginx-controller leverer som standard. Browsere viser en advarsel om, at certifikatet er ugyldigt. Efter et par minutter bør certifikatet være oprettet, og tjenesten bør være tilgængelig med et gyldigt certifikat.

4․ Du kan kontrollere status for CertificateRequest ved at køre følgende kommando:

kubectl get certificaterequest -n ideanote
kubectl describe CertificateRequest ideanote-tls-1 -n ideanote
kubectl get Issuer -n ideanote

API-tjenesten bliver ved med at gå ned, fordi den ikke kan oprette forbindelse til databasen/redis

Hvis tjenesten api går ned, fordi den ikke kan oprette forbindelse til databasen eller Redis, skal du kontrollere følgende.

2․ Kontrollér loggene for tjenesten api:

kubectl logs -n ideanote svc/ideanote-api

2․ Kontrollér, om postgres og redis kører (følg trinnene )

kubectl get pods -n ideanote

Nogle gange skal du måske blot gennemtvinge en genstart af tjenesten api for at få den til at oprette forbindelse til databasen og Redis igen.

kubectl get pods -n ideanote
kubectl delete pod <pod-name> -n ideanote --force
kubectl run --rm -it --image=busybox test-pod -- /bin/sh
ping <redis-service-ip>
nc -zv <redis-service-ip> 6379

ping <postgres-service-ip>
nc -zv <postgres-service-ip> 5432
kubectl exec -it -n ideanote svc/ideanote-api -- /bin/sh

Jeg ser mange TypeError: fetch failed-fejl i loggene

Kontrollér først, at alle pods kører:

kubectl get pods -n ideanote

Du kan også kontrollere, om du kan slå tjenestens DNS op direkte fra pod'en. For eksempel:

kubectl exec svc/ideanote-api -n ideanote -- nslookup ideanote-convert.ideanote.svc.cluster.local

Du kan kontrollere, om du kan pinge andre tjenester direkte fra pod'en. For eksempel:

kubectl exec svc/ideanote-webapp -n ideanote -- wget -qO- http://ideanote-api.ideanote.svc.cluster.local

Det kan også skyldes netværkspolitikker, som nogle gange kan blokere kommunikationen mellem tjenester.
Du skal muligvis midlertidigt deaktivere netværkspolitikker for Ideanote for at se, om det er årsagen.
Du kan deaktivere netværkspolitikker ved at indstille global.ideanote.networkPolicies.enabled til false i filen values.yaml.

Overvåg netværkstrafikken i din klynge

Du kan bruge https://www.kubeshark.co/ til at overvåge netværkstrafikken i din klynge.

1․ Installer kubeshark

sh <(curl -Ls https://kubeshark.co/install)

# OR

brew install kubeshark

2․ Begynd kubeshark

kubeshark tap -n ideanote

3․ Åbn dashboardet kubeshark i din browser, og overvåg trafikken

Kubeshark

Kontrol af hver tjenestes tilgængelighed

Her er en oversigt over, hvordan du tester hver tjenestes tilgængelighed.
Brug denne vejledning som reference til, hvordan du tester hver tjeneste, hvis der opstår problemer.

Streaming af logfiler

Hvis du vil se logfilerne for en bestemt tjeneste, kan du bruge følgende kommando.

kubectl logs -n ideanote svc/ideanote-api

Dette er nyttigt til fejlfinding af problemer med tjenesten. Du kan også udskrive logfiler for alle pods i navnerummet ideanote ved at køre følgende kommando:

kubectl get pods -n ideanote -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -I {} kubectl logs -n ideanote {} --all-containers=true

Hvis du vil streame logfiler for alle tjenester på én gang, anbefaler vi, at du installerer kubetail og kører følgende kommando:

kubetail -n ideanote

Under fejlfinding anbefaler vi også, at du ændrer global.ideanote.logLevel til debug i filen values.yaml for at øge mængden af logfiler, som tjenesterne genererer.

Kontrollér tjenesternes status

Du kan køre følgende kommando for at kontrollere, om implementeringerne er klar. Den bør vise 1/1 READY for hver tjeneste.

kubectl get deployments -n ideanote

Hvis en af tjenesterne ikke er klar, kan du kontrollere tjenesten ved at køre følgende kommando:

kubectl describe deployment <service-name> -n ideanote

Hvis du vil have en mere detaljeret visning af tjenesterne, anbefaler vi, at du installerer k9s og kører følgende kommando:

k9s -n ideanote

webapplikation

Tjenesten webapp bør være tilgængelig på stien /. Følgende kommando bør returnere statuskoden 200 OK med index-html:

curl -kL your-domain.com

Alternativt kan du videresende tjenestens port til din lokale maskine og teste den med curl:

kubectl port-forward --namespace ideanote svc/ideanote-webapp 3000:80
curl -kL localhost:3000

api

Tjenesten api bør være tilgængelig på stien /api. Følgende kommando bør returnere statuskoden 200 OK med teksten "Ideanote API":

curl -kL your-domain.com/api

Alternativt kan du videresende tjenestens port til din lokale maskine og teste den med curl:

kubectl port-forward --namespace ideanote svc/ideanote-webapp 3000:80
curl -kL localhost:3000

Hvis du vil inspicere den interne meddelelseskø i Ideanote API, kan du gå til stien /api/bullmq.
Kør følgende kommando for at hente legitimationsoplysningerne til API-meddelelseskøen:

kubectl get secret --namespace ideanote ideanote-api -o jsonpath="{.data.API_BULLMQ_CREDENTIALS}" | base64 -d

idea-widget

Tjenesten idea-widget bør være tilgængelig på stien /widget. Følgende kommando bør returnere statuskoden 200 OK med index-html:

curl -kL your-domain.com/widget

Alternativt kan du videresende tjenestens port til din lokale maskine og teste den med curl:

kubectl port-forward --namespace ideanote svc/ideanote-idea-widget 3000:80
curl -kL localhost:3000

lagring

Tjenesten storage bør være tilgængelig på stien /files. Følgende kommando bør returnere statuskoden 200 OK med teksten "Ideanote Storage":

curl -kL your-domain.com/files

Alternativt kan du videresende tjenestens port til din lokale maskine og teste den med curl. Den bør returnere statuskoden 200 OK med teksten "Ideanote Convert":

kubectl port-forward --namespace ideanote svc/ideanote-storage 3000:80
curl -kL localhost:3000

konvertere

Tjenesten convert er ikke eksponeret mod internettet, men du kan teste den ved at videresende tjenestens port til din lokale maskine og teste den med curl.
Den bør returnere statuskoden 200 OK med teksten "Ideanote Convert":

kubectl port-forward --namespace ideanote svc/ideanote-convert 3000:80
curl -kL localhost:3000

Du kan også kontrollere tilstanden for konverteringsjobbene for medieupload ved at besøge stien /bullmq.

# 1: Port-forward the service to your local machine
kubectl port-forward --namespace ideanote svc/ideanote-convert 3000:80
# 2: Visit the /bullmq path in a browser:
http://localhost:3000/bullmq

html-renderer

Tjenesten html-renderer er ikke eksponeret mod internettet, men du kan teste den ved at videresende tjenestens port til din lokale maskine og teste den med curl.
Den bør returnere statuskoden 200 OK med teksten "Ideanote HTML Renderer":

kubectl port-forward --namespace ideanote svc/ideanote-html-renderer 3000:80
curl -kL localhost:3000

postgresql

For at kontrollere, om tjenesten PostgreSQL er tilgængelig, kan du videresende tjenestens port til din lokale maskine og teste den med psql.

# 1. Get the password for the database
kubectl get secret --namespace ideanote ideanote-postgres-password -o jsonpath="{.data.postgres-password-user}" | base64 -d

# 2. Open a connection to the database
kubectl exec -it -n ideanote svc/ideanote-postgresql -- psql -U ideanote -d ideanote

# 3. Check that the API has correctly run migrations in the database.
#    It should show a list of tables.
#    If this command shows "Did not find any relations." it means that the API hasn't been able to connect to the database.
ideanote=> \d

# 4. Exit psql
ideanote=> \q

redis

For at kontrollere, om tjenesten Redis er tilgængelig, kan du videresende tjenestens port til din lokale maskine og teste den med redis-cli.

# 1. Port-forward the service to your local machine
kubectl port-forward --namespace ideanote svc/ideanote-redis-master 6379:6379

# 2. Initiate a connection to the database
redis-cli -h localhost -p 6379

# 3. Check that the api and convert services have been able to connect to the database.
127.0.0.1:6379> CLIENT LIST

# 4. Check that the api and convert services have been able to create keys in the database.
127.0.0.1:6379> KEYS *

cert-manager

Se venligst den officielle vejledning for at få at vide, hvordan du verificerer, at cert-manager er installeret korrekt.

Hvis dit certifikat ikke bliver oprettet, kan du kontrollere status for CertificateRequest ved at køre følgende kommando:

kubectl get certificaterequest -n ideanote
kubectl describe CertificateRequest ideanote-tls-1 -n ideanote

Du kan også kontrollere status for Issuer ved at køre følgende kommando:

kubectl get Issuer -n ideanote

Det er også nyttigt at kontrollere logfilerne for tjenesten cert-manager for at se, om der er problemer.

ingress-nginx

For at kontrollere status for tjenesten ingress-nginx skal du først kontrollere, at den kører:

kubectl get deployments -l app.kubernetes.io/name=ingress-nginx -n ideanote

Prøv at videresende tjenestens port til din lokale maskine, og test den med curl (som bør returnere statuskoden "404 Not Found"):

kubectl port-forward --namespace ideanote svc/ideanote-ingress-nginx-controller 8080:80
curl -kL localhost:8080

Du bør også kontrollere, at den er blevet tildelt en IP-adresse:

kubectl get svc -l app.kubernetes.io/name=ingress-nginx -n ideanote

Kontrollér også, at Ideanote ingress-objektet er blevet korrekt tilknyttet ingress-nginx-belastningsfordeleren.
Den bør vise den samme IP-adresse som ingress-nginx-tjenesten samt det forventede værtsnavn, som du angav i values.yaml-filen, da du installerede Ideanote Helm Chart.

kubectl get ingresses -n ideanote

Prøv at bruge curl på IP-adressen. Den bør returnere statuskoden "404 Not Found":

curl -kL <ip-address>

Prøv nu at inkludere en "Host"-header i anmodningen.
Den bør svare med index-HTML-filen fra Ideanotes webapptjeneste:

curl -kL -H 'Host: <host>' <ip-address>

Prøv til sidst at besøge domænet i en browser. Den bør vise Ideanotes webapp.

Opgradering af Ideanote til en ny version

Ideanote udgiver med jævne mellemrum nye versioner af Ideanote Helm Chart med nye funktioner og fejlrettelser.
Når du opgraderer til en ny version, skal du følge den opgraderingsvejledning, som Ideanote stiller til rådighed, for at undgå driftsafbrydelser eller datatab.

Alle tjenester er designet til at være tilstandsløse (bortset fra redis, postgres og storage) og kan opgraderes uden nedetid ved hjælp af en strategi med løbende opdateringer.

Udgivelser og databasemigreringer sker automatisk og udvikles med henblik på at minimere nedetiden.
Under databasemigreringer, som typisk tager et par minutter, vil tjenesterne stadig være tilgængelige, men nogle funktioner kan være deaktiveret eller blive langsommere, indtil migreringen er fuldført.
Se udgivelsesnoterne for hver ny version for at se, om der er migreringer, du bør være opmærksom på.

Vi sørger for at teste udgivelser i vores egne produktionsmiljøer, før vi gør dem offentligt tilgængelige, men vi anbefaler, at du tester den nye version i et stagingmiljø, før du opgraderer produktionsmiljøet.

Følg disse trin, før du opgraderer til en ny version

1․ Se release notes for at finde ud af, om der er ændringer, der ikke er bagudkompatible, eller nye funktioner.

2․ Tag en sikkerhedskopi af dine data. Vi anbefaler, at du sikkerhedskopierer databaserne PostgreSQL og Redis, før du opgraderer til en ny version. Sørg desuden for at have en tydelig og afprøvet plan for tilbagerulning af databasen, hvis opgraderingen mislykkes.

3․ Vi anbefaler, at du installerer helm-diff-pluginet og kører følgende kommando for at se præcis, hvilke ændringer der foretages i din Kubernetes-klynge:

HELM_DIFF_USE_INSECURE_SERVER_SIDE_DRY_RUN=true helm diff upgrade oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --namespace ideanote --values values.yaml --dry-run=server

Følg disse trin, når du opgraderer til en ny version:

1․ Opgrader Ideanote Helm Chart til den nye version:

helm upgrade ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --namespace ideanote --wait --timeout 10m -f values.yaml

2․ Kontrollér opgraderingens status:

helm status ideanote --namespace ideanote

helm history ideanote --namespace ideanote

kubectl get pods -n ideanote --watch

3․ api er den vigtigste tjeneste at kontrollere efter en opgradering, fordi migreringer kan tage et par minutter og potentielt mislykkes, hvilket kan medføre nedetid. Følg API-loggene for at overvåge migreringerne:

kubectl logs svc/ideanote-api -n ideanote -f

Følg disse trin, når du ruller tilbage til en tidligere version:

1․ Kontrollér, om der er kørt migreringer i tjenesten api:

kubectl logs svc/ideanote-api -n ideanote

Du kan også kontrollere status for migreringerne af api ved hjælp af psql:

# 1. Get the password for the database
kubectl get secret --namespace ideanote ideanote-postgres-password -o jsonpath="{.data.postgres-password-user}" | base64 -d

# 2. Open a connection to the database
kubectl exec -it -n ideanote svc/ideanote-postgresql -- psql -U ideanote -d ideanote

# 3. Check if the API has ran migrations in the database. You can compare "migration_time" with the current date.
ideanote=> select * from knex_migrations order by migration_time desc limit 10;

2․ Rul Helm tilbage til den forrige version:

helm rollback ideanote --namespace ideanote

3․ Tjek rollbackens status:

helm status ideanote --namespace ideanote

4․ Hvis nogen migreringer rent faktisk blev gennemført i api-tjenesten, og du har brug for at rulle ændringerne tilbage, er det afgørende, at du også ruller databasen tilbage til den tidligere tilstand, fordi det nye databaseskema muligvis ikke er kompatibelt med den gamle version af api-tjenesten, og api-poden ikke vil kunne starte på grund af et mismatch i databaseskemaet.

Helm-diagramudgivelser

Her er en liste over udgivelserne af Ideanote Helm Chart og ændringerne i hver udgivelse.

1.0.0

Den første udgivelse af den offentlige Ideanote Helm Chart.

Ændring af values.yaml efter installation

Hvis du ændrer filen values.yaml efter installationen af Ideanote Helm Chart, kan du opgradere udgivelsen med følgende kommando:

helm upgrade ideanote oci://europe-west3-docker.pkg.dev/ideanote/charts/ideanote --version 1.0.0 --namespace ideanote --wait --timeout 10m -f values.yaml

Afinstallation af Ideanote

Afinstaller Ideanote Helm Chart ved at køre følgende kommando:

helm uninstall ideanote --namespace ideanote

Dette fjerner alle ressourcer og tjenester, der er knyttet til Ideanote Helm Chart, fra din Kubernetes-klynge.

Det er dog ikke alle ressourcer, der afinstalleres, og du skal manuelt fjerne følgende ressourcer:

# Delete all PVCs associated with the Ideanote Helm Chart
kubectl delete pvc -l app.kubernetes.io/name=postgresql -n ideanote
kubectl delete pvc -l app.kubernetes.io/name=redis -n ideanote
kubectl delete pvc -l app.kubernetes.io/name=storage -n ideanote

# Delete all PV's associated with the Ideanote Helm Chart
kubectl get pv -n ideanote
kubectl delete pv <pv-name>

# Delete global CustomResourceDefinitions (don't do this if you have multiple Ideanote installations in the same cluster)
kubectl delete crd \
  issuers.cert-manager.io \
  clusterissuers.cert-manager.io \
  certificates.cert-manager.io \
  certificaterequests.cert-manager.io \
  orders.acme.cert-manager.io \
  challenges.acme.cert-manager.io

# Delete the namespace
kubectl delete namespace ideanote