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.
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.devValgfrit: 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.06. 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 databaseRedis, 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:
- Inkluderede underdiagrammer: Lad Helm-diagrammet automatisk installere
RedisogPostgreSQLi din klynge. Dette er standardindstillingen.. Læs mere her om, hvordan du konfigurerer disse inkluderede kernetjenester. - Administrerede kernetjenester: Brug administrerede tjenester til
Redisog/ellerPostgreSQL. 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-nginxIngress-controller/load balancer, der bruges til at dirigere trafik til Ideanotes tjenester.cert-managerder 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:
- Inkluderede underordnede charts: Lad Helm-chartet automatisk installere
ingress-nginxbelastningsfordeleren ogcert-manageri 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. - 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 afOpenAI-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 afSendgrid-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 omload-balancingher.cert-manager.email(påkrævet, hvis du vælger standard-load balancer og cert-manager): Din e-mailadresse, såLet’s Encryptkan udstede et certifikat. Læs mere omcert-managerher.
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.yamlDette 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 --watchFø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 ideanote2․ 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 ideanote4․ 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.
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. DenneTAR-fileskal 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:
3․ Start Minikube med følgende kommando. Den tildeler 4 CPU'er og 8 GB RAM til klyngen:
minikube start --cpus 4 --memory 81924․ Aktivér de nødvendige tilføjelsesprogrammer:
minikube addons enable metrics-server
minikube addons enable ingress5․ 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: false6․ 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.yaml7․ Start Minikube-tunnelen (og dashboardet):
minikube tunnel
minikube dashboard8․ 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 Ideanote4․ 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.yaml6․ 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 ideanote7․ 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:
<<: *tolerationsAndAffinityGoogle 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-sa7. 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: 5Gi9. (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.yaml11. 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:
<<: *nodeSelectorUbuntu 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.
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
# 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 ~/.bashrc5. 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-server6. 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/ubuntu7. 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.dev8. 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.yaml10. 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 --watch11. 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 |
|---|---|---|---|
|
| 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 | |
|
|
| Installér det medfølgende cert-manager-underdiagram |
|
|
| CPU-ressourceanmodninger for cert-manager-tjenesten |
|
|
| Hukommelsesressourceanmodninger for cert-manager-tjenesten |
|
|
| Angiv ACME-serverens URL. Brug staging-serveren "https://acme-staging-v02.api.letsencrypt.org/directory" til test. |
|
|
| Konfigurér ACME-udstederen for cert-manager-diagrammet. Læs mere her |
|
| 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. | |
|
|
| Angiv eventuelt cluster-domænet for implementeringen. Denne værdi bruges til at generere interne tjeneste-URL-adresser |
|
|
| Tilføj affinity til alle Ideanote-implementeringer |
|
|
| Tilføj annoteringer til alle Ideanote-implementeringer |
|
|
| 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. |
|
|
| Aktivér eller deaktiver automatisk skalering for alle Ideanote-implementeringer |
|
| Overskriv det maksimale antal replikaer for alle Ideanote-implementeringer | |
|
| Overskriv det minimale antal replikaer for alle Ideanote-implementeringer | |
|
| Overskriv den ønskede CPU-udnyttelsesprocent for alle Ideanote-implementeringer | |
|
| Overskriv den ønskede hukommelsesudnyttelsesprocent for alle Ideanote-implementeringer | |
|
|
| Dette aktiverer knappen "foreslå funktion" i brugergrænsefladen, så brugere kan foreslå nye funktionsønsker direkte til Ideanote-teamet. |
|
|
| Dette aktiverer knappen "rapportér problem" i brugergrænsefladen, så brugere kan rapportere problemer direkte til Ideanote-teamet. |
|
| Angiv den e-mailadresse, der bruges til at godkende med Docker-registret. Denne værdi leveres af Ideanote. | |
|
| Angiv den adgangskode, der bruges til at godkende forbindelse til Docker-registreringsdatabasen. Denne værdi leveres af Ideanote. | |
|
|
| Tilsidesæt politikken for hentning af afbildninger for alle Ideanote-implementeringer |
|
|
| Tilsidesæt afbildningslageret for alle Ideanote-implementeringer |
|
| Tilsidesæt afbildningstagget for alle Ideanote-implementeringer | |
|
|
| Tilføj yderligere annotationer til ingress-objektet, der oprettes for Ideanote. Se en liste over tilladte annotationer for det inkluderede |
|
| Angiv ingress-klassenavnet for Ideanotes ingress-objekt | |
|
|
| Aktivér oprettelse af ingress-objektet for Ideanote |
|
|
| cert-manager-udstederen, der skal bruges til TLS-certifikatet. |
|
|
| Aktivér eller deaktiver TLS for ingress-objektet, der oprettes for Ideanote. Skal være aktiveret, hvis du vil bruge |
|
|
| Angiv hemmelighedens navn for TLS-certifikatet. Påkrævet, hvis du deaktiverer |
|
| 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. | |
|
|
| Angiv logLevel for alle Ideanote-tjenester. |
|
|
| 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. |
|
|
| Tilføj nodeSelector til alle Ideanote-implementeringer |
|
|
| Aktivér eller deaktiver oprettelse af en PodDisruptionBudget for alle Ideanote-implementeringer |
|
|
| Angiv det mindste antal tilgængelige pods for alle Ideanote-implementeringer under afbrydelser |
|
|
| Navnet på den postgresql-database, der skal bruges til Ideanote-tjenesten |
|
|
| Værten, der skal bruges ved forbindelse til postgresql-databasen |
|
|
| Tilsidesæt den nøgle, der bruges til at gemme adgangskoden for databasebrugeren i hemmeligheden. |
|
| 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". | |
|
|
| Angiv adgangskoden for databasebrugeren |
|
|
| Porten, der skal bruges ved forbindelse til postgresql-databasen |
|
|
| Brugernavnet til postgresql, der skal bruges til Ideanote-tjenesten |
|
| Databasenummeret for redis, der skal bruges til Ideanote-tjenesten | |
|
|
| Værten, der skal bruges ved forbindelse til redis-databasen |
|
|
| Tilsidesæt nøglen, der bruges til at gemme adgangskoden for redis-brugeren i hemmeligheden. |
|
| 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". | |
|
| Angiv adgangskoden for redis-brugeren | |
|
|
| Den port, der skal bruges ved oprettelse af forbindelse til redis-databasen |
|
| redis-brugernavnet, der skal bruges til Ideanote-tjenesten | |
|
|
| Aktivér eller deaktiver ressourceanmodninger for alle Ideanote-implementeringer |
|
| Tilsidesæt CPU-grænsen for alle Ideanote-implementeringer | |
|
| Tilsidesæt hukommelsesgrænsen for alle Ideanote-implementeringer | |
|
| Tilsidesæt CPU-anmodningen for alle Ideanote-implementeringer | |
|
| Tilsidesæt hukommelsesanmodningen for alle Ideanote-implementeringer | |
|
|
| Alle tjenester genstartes, hver gang konfigurationen ændres, for at sikre, at den nye konfiguration anvendes med det samme. |
|
|
| Føj annoteringer til alle Ideanote-tjenester |
|
| Tilsidesæt den eksterne tjenesteport for alle Ideanote-tjenester | |
|
| Tilsidesæt den interne tjenesteport for alle Ideanote-tjenester | |
|
| Tilsidesæt tjenestetypen for alle Ideanote-tjenester | |
|
|
| Føj annoteringer til den serviceAccount, der oprettes af Ideanote |
|
|
| Tillad, at Ideanote-implementeringer bruger en serviceAccount, der automatisk oprettes af Ideanotes Helm-diagram |
|
|
| Tilsidesæt navnet på Ideanotes serviceAccount |
|
| SAML-certifikat til konfiguration af Ideanote som tjenesteudbyder | |
|
| SAML-privatnøgle til konfiguration af Ideanote som tjenesteudbyder | |
|
|
| Føj tolerations til alle Ideanote-implementeringer |
|
|
| cert-manager installerer som standard ressourcer i navnerummet "kube-system". Skift denne værdi, hvis du ikke ønsker, at navnerummet "kube-system" ændres. |
|
| Angiv affinitet for api-tjenesten | |
|
|
| Føj yderligere annoteringer til api-implementeringen |
|
|
| Aktivér automatisk skalering for api-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| Maksimalt antal replikaer for api-tjenesten |
|
|
| Minimum antal replikaer for api-tjenesten |
|
|
| Målprocent for CPU-udnyttelse for api-tjenesten |
|
|
| Målprocent for hukommelsesudnyttelse for api-tjenesten |
|
|
| 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 |
|
| Angiv nodeSelector for api-tjenesten | |
|
| Angiv en OpenAI API-nøgle for at aktivere OpenAI API | |
|
|
| Stien eller underdomænet for api-tjenesten. Denne værdi bruges til at oprette URL'en for ingress-objektet. |
|
|
| Antal replikaer for api-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi. |
|
|
| Angiv true for at aktivere ressourceanmodninger for api-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesressourcegrænser for api-tjenesten |
|
|
| Hukommelsesressourcegrænser for api-tjenesten |
|
|
| CPU- og hukommelsesressourceanmodninger for api-tjenesten |
|
|
| Hukommelsesressourceanmodninger for api-tjenesten |
|
| Angiv en Sendgrid API-nøgle for at aktivere Ideanoate til at sende e-mails | |
|
|
| Tilføj yderligere annotationer til api-tjenesten |
|
|
| Ekstern port for api |
|
|
| Intern port for api |
|
|
| Tjenestetype for api |
|
| Angiv tolerations for api-tjenesten | |
|
| Angiv affinity for convert-tjenesten | |
|
|
| Tilføj yderligere annotationer til convert-implementeringen |
|
|
| Aktivér automatisk skalering for convert-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| Maksimalt antal replikaer for convert-tjenesten |
|
|
| Mindste antal replikaer for convert-tjenesten |
|
|
| Målprocent for CPU-udnyttelse for convert-tjenesten |
|
|
| Målprocent for hukommelsesudnyttelse for convert-tjenesten |
|
| Angiv nodeSelector for convert-tjenesten | |
|
|
| Antal replikaer for convert-tjenesten. Aktivering af automatisk skalering tilsidesætter denne værdi. |
|
|
| Indstil til true for at aktivere ressourceanmodninger for convert-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesgrænser for convert-tjenesten |
|
|
| Hukommelsesgrænser for convert-tjenesten |
|
|
| CPU- og hukommelsesanmodninger for convert-tjenesten |
|
|
| Hukommelsesanmodninger for convert-tjenesten |
|
|
| Tilføj yderligere annoteringer til convert-tjenesten |
|
|
| Ekstern port for convert |
|
|
| Intern port for convert |
|
|
| Tjenestetype for convert |
|
| Angiv tolerationer for convert-tjenesten | |
|
| Angiv affinity for html-renderer-tjenesten | |
|
|
| Tilføj yderligere annotationer til html-renderer-implementeringen |
|
|
| Aktivér autoskalering for html-renderer-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| Maksimalt antal replikaer for html-renderer-tjenesten |
|
|
| Mindste antal replikaer for html-renderer-tjenesten |
|
|
| Målværdi for CPU-udnyttelse i procent for html-renderer-tjenesten |
|
|
| Målværdi for hukommelsesudnyttelse i procent for html-renderer-tjenesten |
|
| Angiv nodeSelector for html-renderer-tjenesten | |
|
|
| Antal replikaer for html-renderer-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi. |
|
|
| Indstil til true for at aktivere ressourceanmodninger for tjenesten html-renderer. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesressourcegrænser for tjenesten html-renderer |
|
|
| Hukommelsesressourcegrænser for tjenesten html-renderer |
|
|
| CPU- og hukommelsesressourceanmodninger for tjenesten html-renderer |
|
|
| Hukommelsesressourceanmodninger for tjenesten html-renderer |
|
|
| Tilføj yderligere annoteringer til tjenesten html-renderer |
|
|
| Ekstern port for html-renderer |
|
|
| Intern port for html-renderer |
|
|
| Tjenestetype for html-renderer |
|
| Angiv tolerationer for tjenesten html-renderer | |
|
| Angiv affinity for tjenesten idea-widget | |
|
|
| Tilføj yderligere annoteringer til udrulningen af idea-widget |
|
|
| Aktivér automatisk skalering for tjenesten idea-widget. Dette kan tilsidesættes ved at bruge |
|
|
| Maksimalt antal replikaer for tjenesten idea-widget |
|
|
| Mindste antal replikaer for tjenesten idea-widget |
|
|
| Målværdi for CPU-udnyttelse i procent for tjenesten idea-widget |
|
|
| Målværdi for hukommelsesudnyttelse i procent for tjenesten idea-widget |
|
| Angiv nodeSelector for tjenesten idea-widget | |
|
|
| Stien eller underdomænet for tjenesten idea-widget. Denne værdi bruges til at oprette URL'en for ingress-objektet. |
|
|
| Antal replikaer for tjenesten idea-widget. Aktivering af automatisk skalering tilsidesætter denne værdi. |
|
|
| Indstil til true for at aktivere ressourceanmodninger for tjenesten idea-widget. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesressourcegrænser for tjenesten idea-widget |
|
|
| Hukommelsesressourcegrænser for tjenesten idea-widget |
|
|
| CPU- og hukommelsesressourceanmodninger for tjenesten idea-widget |
|
|
| Hukommelsesressourceanmodninger for tjenesten idea-widget |
|
|
| Føj yderligere annoteringer til idea-widget-tjenesten |
|
|
| Ekstern port til idea-widget |
|
|
| Intern port til idea-widget |
|
|
| Tjenestetype for idea-widget |
|
| Angiv tolerationer for idea-widget-tjenesten | |
|
| Angiv affinity for lagertjenesten | |
|
|
| Tilføj yderligere annoteringer til "storage"-deploymentet |
|
|
| Autoskalering er ikke aktiveret som standard for tjenesten "storage". Skift "ideanote.storage.persistence.accessMode" til "ReadWriteMany", hvis du aktiverer den. |
|
|
| Maksimalt antal replikaer for storage-tjenesten |
|
|
| Minimalt antal replikaer for storage-tjenesten |
|
|
| Målværdi for CPU-udnyttelse i procent for storage-tjenesten |
|
|
| Målværdi for hukommelsesudnyttelse i procent for storage-tjenesten |
|
|
| 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. |
|
| Angiv nodeSelector for lagertjenesten | |
|
|
| Stien eller underdomænet for storage-tjenesten. Denne værdi bruges til at oprette URL'en for ingress-objektet. |
|
|
| Adgangstilstand for PVC'en |
|
|
| Angiv true for at aktivere vedvarende lagring for storage-tjenesten |
|
| 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. | |
|
|
| Lagerstørrelse for PVC'en |
|
| Lagerklasse for PVC'en | |
|
|
| Volumentilstand for PVC'en |
|
|
| Antal replikaer for storage-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi. |
|
|
| Angiv true for at aktivere ressourceanmodninger for storage-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesressourcegrænser for storage-tjenesten |
|
|
| Grænse for hukommelsesressourcen for storage-tjenesten |
|
|
| CPU- og hukommelsesressourceanmodninger for storage-tjenesten |
|
|
| Anmodning om hukommelsesressource for storage-tjenesten |
|
|
| Tilføj yderligere annoteringer til storage-tjenesten |
|
|
| Ekstern port for storage-tjenesten |
|
|
| Intern port for storage-tjenesten |
|
|
| Tjenestetype for storage-tjenesten |
|
| Angiv tolerationer for lagringstjenesten | |
|
| Angiv affinity for webapp-tjenesten | |
|
|
| Tilføj yderligere annotations til webapp-implementeringen |
|
|
| Aktivér autoskalering for webapp-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| Maksimalt antal replikaer for webapp-tjenesten |
|
|
| Mindste antal replikaer for webapp-tjenesten |
|
|
| Målværdi for CPU-udnyttelse i procent for webapp-tjenesten |
|
|
| Målværdi for hukommelsesudnyttelse i procent for webapp-tjenesten |
|
| Angiv nodeSelector for webapp-tjenesten | |
|
|
| Webapp-tjenestens sti eller underdomæne. Denne værdi bruges til at oprette URL'en for ingress-objektet. |
|
|
| Antal replikaer for webapp-tjenesten. Aktivering af autoskalering tilsidesætter denne værdi. |
|
|
| Angiv true for at aktivere ressourceanmodninger for webapp-tjenesten. Dette kan tilsidesættes ved at bruge |
|
|
| CPU- og hukommelsesressourcebegrænsninger for webapp-tjenesten |
|
|
| Begrænsninger for hukommelsesressourcer for webapp-tjenesten |
|
|
| Anmodninger om CPU- og hukommelsesressourcer for webapp-tjenesten |
|
|
| Anmodninger om hukommelsesressourcer for webapp-tjenesten |
|
|
| Tilføj yderligere annotations til webapp-tjenesten |
|
|
| Ekstern port for webapp-tjenesten |
|
|
| Intern port for webapp-tjenesten |
|
|
| Tjenestetype for webapp-tjenesten |
|
| Angiv tolerationer for webapp-tjenesten | |
|
|
| Typen af tjeneste, der skal oprettes for Ingress-controlleren |
|
|
| Installér det inkluderede ingress-nginx-undordiagram |
|
|
| Installér det inkluderede PostgreSQL-underdiagram |
|
|
| Lagerstørrelse for den inkluderede PostgreSQL-tjenestes PVC |
|
|
| Forudindstilling for PostgreSQL-ressourcer |
|
|
| Installér det inkluderede Redis-underdiagram |
|
|
| Lagerstørrelse for den inkluderede Redis-tjenestes PVC |
|
|
| 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: 500mAdgangskode
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 postgresKonfiguration 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: 500mOpret 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 6379Konfiguration 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: 500mKonfiguration 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: 2Interaktion 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 ideanoteKonfigurer 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: falseKonfigurer 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: falseKonfigurer 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: falseKonfigurer 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.
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.
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:
- LDAP-godkendelse med Microsoft Entra ID
- Trinvis vejledning til konfiguration af LDAPS på Windows Server
I denne vejledning gennemgår vi opsætningsprocessen på Ideanote-platformen.
Konfiguration af LDAP i dit workspace
- Gå til Indstillinger.
- Gå til Godkendelse.
- Klik på Tilføj for at oprette en ny loginmulighed.
- Vælg LDAP på listen over muligheder.
Konfiguration af LDAP
- Klik på Tilføj konfiguration.
- Indtast URL'en til din LDAP-server, uden
ldap://-protokollen og uden porten. - 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 organisationsenhedenUsersi domænetyour-domain.com. - 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) somyou@your-domain.comeller et traditionelt LDAP Distinguished Name somCN=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æreAES-256krypteret. - Klik på
Test Connectionfor 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 knappenTest Connection.
Hvis du støder på et problem, kan du se afsnittet Fejlfinding af forbindelse.
Yderligere konfigurationsfelter
- 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.
- 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)). - Når du aktiverer
Use SSL/TLS, aktiveres LDAP over SSL (ldaps). Flere yderligere
felter bliver synlige, og du kan læse mere her. - Når du slår
Use StartTLStil, 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
Når Use SSL/TLS eller Use StartTLS er slået til, vises yderligere valgfrie konfigurationsfelter nedenfor:
- 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.
- 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.
- 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.
- 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
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.
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 eksempelgivenNamerepræsenterer typisk en persons fornavn, menssntypisk repræsenterer en persons efternavn.
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åsomDirectoryString,PrintableString,TelephoneNumber,NumericStringog 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åsomNumericString, som knyttes tilstringi Ideanote), repræsenterer typen `integer` hele tal, som kan knyttes til numeriske bruger-/team-egenskaber i Ideanote.
boolean: de booleske værdiertrueogfalse.
binary: Nogle LDAP-attributter repræsenterer binære data, såsom den almindeligethumbnailPhoto-attribut til brugerprofilavatarer. Disse kan typisk kun knyttes tilavatarfor Ideanote-brugere oglogofor 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 knyttememberOf-attributten for gruppetilknytninger for en bruger til tilsvarende Ideanote-teams.
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 typendateikke tilknyttesFirst name.
Ændring af synkronisering af brugergrupper/team
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:
- Identificer LDAP-attributten
memberOf(eller den tilsvarende egenskab i dit LDAP-serverskema) - Klik på rullemenuen i den pågældende række i kolonnen Tilsvarende Ideanote-attribut.
- Vælg Importer ikke.
Oprettelse af en brugerdefineret attributtilknytning
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.
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.
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.
- 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.
- 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.
- 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.
- 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.
Fejlfinding af forbindelse
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/TLSeller 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.
- Bind DN skal være brugerens fulde DN (f.eks.
- 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/TLSfor at brugeldaps://i Server URL. Sørg også for, atLDAP Server PORTpeger på den korrekte port, som som standard er636forLDAPS. - 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.
- Hvis det er tilfældet, skal du aktivere
Fejl: LDAP-godkendelsen lykkedes, men der kunne ikke søges i det angivne Base DN.
Mulige årsager:
Base DNer 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: 6Dette 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: 3Ressourceanmodninger
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: 128MVedvarende 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-0til PostgreSQL-databasenredis-data-<release>-redis-master-0til Redis-databasen<release>-storage-datatil 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: 20Gi2․ 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 ideanote3․ 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 |
|
api |
|
idea-widget |
|
lager |
|
Interne sundhedstjek
Service | Sti |
|---|---|
konverter |
|
html-renderer |
|
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 ideanoteHelm-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 ideanoteHvis 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 ideanoteMin 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 ideanote2․ 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 ideanoteAPI-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-api2․ Kontrollér, om postgres og redis kører (følg trinnene )
kubectl get pods -n ideanoteNogle 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 --forcekubectl 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> 5432kubectl exec -it -n ideanote svc/ideanote-api -- /bin/shJeg ser mange TypeError: fetch failed-fejl i loggene
Kontrollér først, at alle pods kører:
kubectl get pods -n ideanoteDu 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.localDu 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.localDet 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 kubeshark2․ Begynd kubeshark
kubeshark tap -n ideanote3․ Åbn dashboardet kubeshark i din browser, og overvåg trafikken
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-apiDette 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=trueHvis du vil streame logfiler for alle tjenester på én gang, anbefaler vi, at du installerer kubetail og kører følgende kommando:
kubetail -n ideanoteUnder 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 ideanoteHvis en af tjenesterne ikke er klar, kan du kontrollere tjenesten ved at køre følgende kommando:
kubectl describe deployment <service-name> -n ideanoteHvis du vil have en mere detaljeret visning af tjenesterne, anbefaler vi, at du installerer k9s og kører følgende kommando:
k9s -n ideanotewebapplikation
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.comAlternativt 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:3000api
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/apiAlternativt 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:3000Hvis 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 -didea-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/widgetAlternativt 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:3000lagring
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/filesAlternativt 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:3000konvertere
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:3000Du 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/bullmqhtml-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:3000postgresql
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=> \qredis
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 ideanoteDu kan også kontrollere status for Issuer ved at køre følgende kommando:
kubectl get Issuer -n ideanoteDet 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 ideanotePrø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:8080Du bør også kontrollere, at den er blevet tildelt en IP-adresse:
kubectl get svc -l app.kubernetes.io/name=ingress-nginx -n ideanoteKontrollé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 ideanotePrø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=serverFø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.yaml2․ Kontrollér opgraderingens status:
helm status ideanote --namespace ideanote
helm history ideanote --namespace ideanote
kubectl get pods -n ideanote --watch3․ 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 -fFø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 ideanoteDu 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 ideanote3․ Tjek rollbackens status:
helm status ideanote --namespace ideanote4․ 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.yamlAfinstallation af Ideanote
Afinstaller Ideanote Helm Chart ved at køre følgende kommando:
helm uninstall ideanote --namespace ideanoteDette 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