IvyLabs Wiki
भाषा: हिन्दी

Helm के साथ Kubernetes पर डिप्लॉय करें

BostonIvy का Helm चार्ट सर्वर (API, MCP, CalDAV और बैकग्राउंड जॉब), उसी पते पर उसके आगे BostonIvy Web, और जल्दी शुरू करने के लिए एक बंडल्ड PostgreSQL चलाता है। सर्वर की हर रिलीज़ के साथ नया चार्ट oci://ghcr.io/ivylabsapp/charts/bostonivy पर प्रकाशित होता है।

शुरू करने से पहले

इंस्टॉल करें

  1. एक नेमस्पेस और प्राइवेट इमेज खींचने के लिए एक पुल सीक्रेट बनाएँ:

    kubectl create namespace bostonivy
    kubectl -n bostonivy create secret docker-registry ghcr \
      --docker-server=ghcr.io --docker-username=<आपका GitHub यूज़रनेम> --docker-password=<read:packages वाला टोकन>
    
  2. Helm को रजिस्ट्री में साइन इन कराएँ, ताकि वह चार्ट ला सके:

    echo "$GITHUB_TOKEN" | helm registry login ghcr.io -u <आपका GitHub यूज़रनेम> --password-stdin
    
  3. अपनी सेटिंग एक फ़ाइल में लिखें, जैसे values.yaml। url ज़रूरी है: ईमेल के लिंक, शेयर लिंक, और OAuth व OIDC कॉलबैक इसी का इस्तेमाल करते हैं।

    url: https://tasks.example.com
    imagePullSecrets:
      - name: ghcr
    ingress:
      enabled: true
      className: nginx
      annotations:
        # लाइव अपडेट /api/v1/realtime पर लंबे चलने वाले WebSocket हैं; अपलोड 64 MiB तक
        nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
        nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
        nginx.ingress.kubernetes.io/proxy-body-size: 64m
      tls:
        - secretName: bostonivy-tls
          hosts: [tasks.example.com]
    

    bostonivy-tls आपके डोमेन का सर्टिफ़िकेट है: आपका बनाया TLS Secret, या cert-manager का बनाया हुआ।

  4. इंस्टॉल करें:

    helm install ivy oci://ghcr.io/ivylabsapp/charts/bostonivy --version 0.7.0 -n bostonivy -f values.yaml
    

    इस पेज के उदाहरणों में रिलीज़ का नाम ivy है, इसलिए उसके रिसोर्स ivy-bostonivy-… कहलाते हैं। bostonivy-os का चेकआउट हो तो आप deploy/helm/bostonivy से भी इंस्टॉल कर सकते हैं।

पहला एडमिनिस्ट्रेटर बनाएँ

इंस्टॉल के बाद Helm भी ये कदम दिखाता है। पासवर्ड बिना दिखाए पढ़ा जाता है:

printf 'Password: '; read -rs PW; echo
printf '%s\n' "$PW" | kubectl -n bostonivy exec -i deploy/ivy-bostonivy-server -- bostonivy admin create-user <यूज़रनेम> <ईमेल> --admin
unset PW

सर्वर सीक्रेट का बैकअप लें

सर्वर सीक्रेट और बंडल्ड डेटाबेस का पासवर्ड इंस्टॉल के समय बनते हैं, हर अपग्रेड में बने रहते हैं, और Secret ivy-bostonivy-secrets में रखे जाते हैं, जिसे Helm अनइंस्टॉल करने पर भी नहीं हटाता। सभी साइनिंग और एन्क्रिप्शन कुंजियाँ सर्वर सीक्रेट से बनती हैं: यह खो जाए तो सबको दोबारा साइन इन करना होगा, और सहेजे गए TOTP और webhook सीक्रेट पढ़े नहीं जा सकेंगे। इसे अभी किसी सुरक्षित जगह कॉपी कर लें:

kubectl -n bostonivy get secret ivy-bostonivy-secrets -o jsonpath='{.data.auth-secret}' | base64 -d

अपना सीक्रेट इस्तेमाल करना हो तो auth.secret सेट करें, या उसे अपने मैनेज किए Secret की auth-secret की में रखकर auth.existingSecret सेट करें।

Ingress के बिना आज़माएँ

ingress.enabled बंद रहने दें, auth.cookieSecure=false सेट करें, फिर वेब सर्विस को अपनी मशीन पर फ़ॉरवर्ड करें:

kubectl -n bostonivy port-forward svc/ivy-bostonivy-web 8080:80

और http://localhost:8080 खोलें। जैसे ही BostonIvy HTTPS पर चलने लगे, auth.cookieSecure को फिर से true कर दें।

वैल्यू

वैल्यू डिफ़ॉल्ट काम
url ज़रूरी वह पता जहाँ लोग BostonIvy खोलते हैं; लिंक, OAuth और OIDC कॉलबैक इसी का इस्तेमाल करते हैं
imagePullSecrets [] प्राइवेट इमेज खींचने के पुल सीक्रेट
auth.secret, auth.existingSecret अपने-आप बनता है सर्वर सीक्रेट, सीधे दिया गया या आपके अपने Secret (की auth-secret) से
auth.cookieSecure true HTTPS के पीछे चालू रखें; सिर्फ़ सादे http पर आज़माने के लिए बंद करें
database.url, database.existingSecret बंडल्ड बाहरी PostgreSQL 16 या नया; ख़ाली हो तो बंडल्ड वाला इस्तेमाल होता है
postgresql.enabled true क्लस्टर में एक PostgreSQL, आज़माने या छोटे सेटअप के लिए
mail.smtpUrl, mail.from ख़ाली जैसे smtp://user:password@host:587, या log; ख़ाली हो तो ईमेल नहीं जाते
config ख़ाली TOML में सर्वर की अतिरिक्त सेटिंग, जैसे [[auth.oidc]] साइन-इन प्रोवाइडर
server.env, server.envFrom [] कोई भी दूसरी BOSTONIVY_<सेक्शन>__<की> सेटिंग
server.replicas 1 एक से ज़्यादा के लिए S3 स्टोरेज और worker.separate चाहिए
worker.separate, worker.replicas false, 1 बैकग्राउंड जॉब (ईमेल, webhook, रिमाइंडर, मेंटेनेंस) अलग पॉड में चलाता है
persistence.* 10Gi, ReadWriteOnce लोकल स्टोरेज रहने तक अटैचमेंट और अवतार
web.image.tag 0.2.0 परोसी जाने वाली BostonIvy Web रिलीज़
ingress.* बंद होस्ट डिफ़ॉल्ट रूप से url वाला होता है; लाइव अपडेट के लिए लंबे WebSocket रीड की अनुमति दें

डेटाबेस

बंडल्ड PostgreSQL एक ही पॉड है, जो आज़माने और छोटे सेटअप के लिए ठीक है। प्रोडक्शन में मैनेज्ड डेटाबेस या ऑपरेटर इस्तेमाल करें, और BostonIvy को उसकी ओर पॉइंट करें:

postgresql:
  enabled: false
database:
  url: postgres://bostonivy:<पासवर्ड>@db.example.com:5432/bostonivy

या पता अपने Secret में रखें और database.existingSecret सेट करें। BostonIvy को PostgreSQL 16 या नया चाहिए।

ईमेल, साइन-इन और दूसरी सेटिंग

स्केल करें

लोकल रखी फ़ाइलों को छोड़कर सर्वर अपनी कोई स्थिति नहीं रखता। एक से ज़्यादा रेप्लिका के लिए:

server:
  replicas: 3
  env:
    - name: BOSTONIVY_STORAGE__KIND
      value: s3
    # और bostonivy.example.toml के [storage] वाली बकेट सेटिंग
worker:
  separate: true
persistence:
  enabled: false

अपग्रेड और बैकअप

नई रिलीज़ के चार्ट से अपग्रेड करें:

helm upgrade ivy oci://ghcr.io/ivylabsapp/charts/bostonivy --version <नया वर्ज़न> -n bostonivy -f values.yaml

सर्वर पॉड एक-एक करके बदलते हैं, और नया वर्ज़न शुरू होते समय डेटाबेस माइग्रेट करता है। माइग्रेशन सिर्फ़ जोड़ते हैं, कभी हटाते नहीं, इसलिए बैकअप के साथ आप वापस जा सकते हैं।

तीन चीज़ों का बैकअप लें: