Sari la conținut

JSON and YAML Configuration

Configurați binarul probod direct cu un fișier JSON sau YAML transmis prin fișierul -cfg, structura de acoperire, protecția secretelor și rezolvarea problemelor.

View as Markdown

The probod Binary citește configurația completă a timpului de execuție dintr-un fișier JSON sau YAML. -cfg-file:

probod -cfg-file /etc/probod/config.yml

probod nu caută un fișier implicit atunci când binarul este executat direct. Validează fișierul selectat înainte de a începe și se retrage dacă setările necesare lipsesc sau sunt malformate.

The root object contains two sections:

  • unit configures process-level metrics and OpenTelemetry export.
  • probod Configurează aplicația, baza de date, autentificarea, stocarea, notificările, integrările și lucrătorii.

Următorul YAML prezintă forma unei configurații tipice de producție. Este un exemplu mai degrabă decât o schemă completă; câmpurile disponibile se pot schimba între versiuni.

unit:
  metrics:
    addr: "0.0.0.0:8081"
  tracing:
    addr: "otel-collector:4318"
    max-batch-size: 512
    batch-timeout: 5
    export-timeout: 30
    max-queue-size: 2048

probod:
  base-url: "https://probo.example.com"
  encryption-key: "<base64-encoded 32-byte key>"
  chrome-dp-addr: "chrome:9222"

  api:
    addr: "0.0.0.0:8080"
    cors:
      allowed-origins:
        - "https://probo.example.com"

  pg:
    addr: "postgres.example.com:5432"
    username: "probod"
    password: "<database password>"
    database: "probod"
    pool-size: 100
    min-pool-size: 10

  auth:
    disable-signup: false
    cookie:
      domain: "probo.example.com"
      secret: "<base64-encoded 32-byte key>"
      duration: 24
      secure: true
      same-site: "lax"
    password:
      pepper: "<base64-encoded 32-byte key>"
      iterations: 1000000
    oauth2-server:
      signing-keys:
        - private-key: |
            <PEM private key content goes here>
          kid: "default"
          active: true

  aws:
    region: "eu-west-1"
    bucket: "probo-production"

  notifications:
    mailer:
      sender-name: "Probo"
      sender-email: "no-reply@example.com"
      smtp:
        addr: "smtp.example.com:587"
        tls-required: true

Omiteți urmărirea atunci când nu rulați un colector OpenTelemetry. Pentru S3 pe AWS, omiteți cheile de acces statice atunci când sarcina de lucru are un rol IAM. Pentru un alt serviciu compatibil cu S3, setați endpoint În cazul în care este necesar, use-path-style: true.

JSON utilizează aceeași ierarhie și nume de câmp ca YAML.

Un fișier de configurare conține secrete în text simplu. Păstrați-l în afara controlului sursă, restricționați accesul de citire la contul care rulează probod, și protejează copiile stocate cu aceleași controale ca și alte credențiale de producție.

chmod 600 /etc/probod/config.yml

Valorile dintr-un fișier gestionat direct sunt literale. referințe secrete, cum ar fi awssm://secret-id and awsps:///parameter-name Acestea sunt interpretate doar de probod-bootstrap; probod does not resolve them.

Cheia de criptare, secretul cookie-ului de sesiune, piperul de parolă și cheia de semnare a tokenului trebuie să rămână disponibile pe durata de viață a implementării. Set persistent secrets before first boot before creating a production file.

Configurarea este încărcată o dată în timpul procesului de pornire. Pentru a aplica o actualizare:

  1. Pregătiți și protejați fișierul de înlocuire.
  2. Restart every probod cu aceeaşi configuraţie.
  3. Confirmă că fiecare instanță începe cu succes înainte de a elimina fișierul anterior.

Păstrați configurația protejată anterior disponibilă pentru rollback. O înlocuire defectuoasă sau incompletă împiedică probod from starting.

When probod exits during startup:

  1. Citiți prima eroare din jurnal; eșecurile ulterioare pot fi consecințe ale acesteia.
  2. Confirm that -cfg-file points to a readable file.
  3. Verificați sintaxa JSON sau YAML, indentarea și tipurile scalare.
  4. Verificați dacă valorile necesare sunt prezente și cheile PEM multiline sau certificatele sunt complete.
  5. Dacă parsarea reușește, verificați conectivitatea la baza de date configurată, la stocarea obiectelor, la serverul SMTP, la punctul de terminare Chrome și la colectorul de telemetrie.

Schema de configurare evoluează odată cu platforma. Revizuirea modificărilor de configurare înainte de upgrade și utilizarea schemei din aceeași versiune ca și versiunea binară de rulare. pkg/probodconfig types.

Ultima actualizare: