Hoppa till innehållet
Stackship-dokumentation English

BlueprintsAnvändareMaskinöversatt

Mallformat

Varje fält i en blueprint-mall — metadata, hanterade resurser, outputs och containerinstansen — med token, plattformsvärden och förrådets struktur.

Dokument

En mall är ett enda YAML- eller JSON-dokument. Okända fält är fel.

Fält Krävs Innehåll
apiVersion Nej blueprints.stackship.se/v2, vilket också är vad ett utelämnat värde betyder
kind Nej BlueprintTemplate, vilket också är vad ett utelämnat värde betyder
metadata Ja Hur blueprinten visas i katalogen — Metadata
parameters Nej Vad den som driftsätter fyller i — Parametrar
resources Nej Hanterade resurser som ska skapas — Hanterade resurser
outputs Nej Värden som beskriver den driftsatta instansen — Outputs
instance Ja Containerinstansen som ska skapas, med minst en komponent — Instans

En minimal mall:

yaml
apiVersion: blueprints.stackship.se/v2
kind: BlueprintTemplate

metadata:
  slug: hello
  title: Hello
  version: "1.0.0"
  category: Tools
  tags: [example]

parameters:
  - name: ingress_host
    type: String
    label: Public Hostname
    default: "[%name%].{{domain_suffix}}"

instance:
  components:
    - name: web
      computePlan: small
      containers:
        - name: web
          image: docker.io/nginxinc/nginx-unprivileged
          tag: "1.31-alpine"
          ports:
            - name: http
              port: 8080
          probes:
            readiness:
              type: http
              port: http
              path: /
  endpoints:
    - name: web
      component: web
      port: http
      hostname: "[%ingress_host%]"

Metadata

Fält Innehåll
slug Krävs. Blueprintens identifierare. I ett förråd används katalogens namn i stället
title Krävs. Namnet som visas i katalogen
version Visas i katalogen och registreras på varje instans som driftsätts från den; 1.0 när den saknas
description Visas på kortet och i guiden
category Delar in katalogen i flikar, till exempel Databases, Platforms, Tools
tags Söktermer och filter. stackship placerar blueprinten under I fokus i katalogen
documentation En URL som guiden länkar till
icon En inbäddad data:-URI, base64-kodad, av typen image/svg+xml, image/png, image/webp eller image/jpeg, högst 128 KiB avkodad. En URL avvisas. I ett förråd används i stället en ikonfil bredvid mallen — se Förrådets struktur
hidden true håller blueprinten utanför kataloglistan men låter den fortfarande driftsättas via sin slug. Gäller blueprints som läses från ett förråd; en mall som sparats via API:t listas alltid

Hanterade resurser

Varje post i resources ber plattformen skapa en resurs innan containerinstansen skapas, och skriva dess anslutningsuppgifter till instansens valv. Alla fält godtar token.

Fält Innehåll
name Resursens namn i mallen. Den skapade resursen heter <instance>-<name>
type postgres — den enda typen i dag. Alla andra typer nekas innan driftsättningen börjar
availability Single (standard) eller HighAvailable, som skapar tre databasinstanser. High Available, HighlyAvailable och HA tolkas på samma sätt; allt annat betyder en instans
storage Volymens storlek, 10Gi när den saknas
exposes Anslutningsuppgifter att skriva till valvet: en lista med output och vaultKey. Samma output får skrivas under flera nycklar

En postgres-resurs exponerar dessa outputs:

output Värde
connectionString Anslutningssträngen i formen nyckel=värde som .NET och Npgsql förväntar sig
uri postgres://-URI:n som de flesta andra klienter förväntar sig
host, port, database, username, password Delarna, en i taget

Driftsättningen väntar upp till fem minuter på att databasen tar emot anslutningar innan den skapar containerinstansen. En container läser en uppgift via en secretRef till instansens valv:

yaml
resources:
  - name: db
    type: postgres
    availability: "[%db_availability%]"
    storage: 10Gi
    exposes:
      - output: connectionString
        vaultKey: connectionstring_db
yaml
env:
  - name: ConnectionStrings__Default
    secretRef: { vault: "[%instance_vault%]", key: connectionstring_db }

Outputs

Varje post i outputs har ett name, en label, en description, en type — string (standard) eller url — en flagga secret, och ett value med token. Outputs lagras med mallen, men portalen visar dem inte någonstans i dag.

Instans

instance är containerinstansen som ska skapas: components och endpoints, i den form som API:t för containerinstanser tar emot. Vad varje inställning gör beskrivs med containerinstanserna — se Skapa en containerinstans och Slutpunkter. Instansens egna regler, som högst 16 komponenter och 0 till 10 repliker, tillämpas när driftsättningen skapar den.

Nivå Fält
Komponent name, condition, replicas (standard 1), startupOrder (standard 1), computePlan, minComputePlan, cpu, memory, hardened, runAsUser, runAsGroup, identityInjection, initContainers, containers, volumes, scaling
Container, init-container name, condition, image, tag (standard latest), sourceRef, command, args, env, ports, probes, mounts
Post i env name, och value eller secretRef (vault, key)
Post i ports name, port, protocol (TCP eller UDP)
probes readiness, liveness, startup, var och en med type (tcp, http eller exec), port, path, command, initialDelaySeconds, periodSeconds, timeoutSeconds, failureThreshold
Post i mounts volume, path, subPath, readOnly
Post i volumes name, och en av emptyDir (sizeLimit), persistent (size, tier, storageClass, retainOnDelete — standard true, fsGroup) eller files (sensitive, content — filnamn till innehåll)
scaling strategy (Manual, standard, eller Hpa) och hpa (minReplicas 1, maxReplicas 3, targetCpuPercent 80 som standard)
Slutpunkt name, condition, component, port (ett portnamn), expose (ingress, standard, eller loadBalancer), hostname, paths, ssl, issuer, authGuard
  • sourceRef anger ett privat register anslutet till boundaryn som avbilden hämtas via — oftast en parameter av typen DeploymentSource, sourceRef: "[%registry%]". Tomt betyder en publik avbild.
  • En container läser en hemlighet via secretRef med vault: "[%instance_vault%]" och parameterns namn, eller vaultKey för en resurs output, som key. vault måste vara exakt "[%instance_vault%]"; en mall som pekar ut något annat valv nekas.
  • Steget Beräkning hos den som driftsätter anger computePlan och replicas per komponent; mallens värden är de standardvärden som visas där.
  • minComputePlan är den minsta plan en komponent kan köras på. Steget Beräkning stänger av planer med mindre processor eller mindre minne, och driftsättningen nekar dem. Ange den för komponenter som inte klarar sig på en liten plan, så att den som inte känner till storlekarna inte kan välja en.

Villkor

condition på en komponent, en container, en init-container eller en slutpunkt anger en parameter av typen Boolean. Om den parametern inte är true utelämnas elementet innan något annat renderas, och en slutpunkt vars komponent utelämnades följer med. Ett villkor som anger en parameter som inte finns räknas som av.

Varning

Portalens steg Beräkning skickar inställningar för varje komponent som mallen deklarerar. När en komponents villkor utelämnar den misslyckas en driftsättning från portalen vid Create the container instance med The template has no component named '<component>'. Villkora hellre containrar, init-containrar eller slutpunkter än hela komponenter där det går.

Token

[%parameter%] i vilken sträng som helst i instance och resources — nycklar i en files-volym inräknade — ersätts vid driftsättningen.

  • [%name%] är instansnamnet och [%instance_vault%] namnet på instansens valv. En mall som deklarerar parametrar med de namnen nekas.
  • [%parameter:type:default%] använder default när det inte finns någon parameter med det namnet.
  • [%parameter_urlencoded%] är parameterns värde URL-kodat, för att bygga URI:er av genererade lösenord.
  • Parametrarnas standardvärden kan också innehålla token, till exempel default: "[%name%].example.com".
  • En token som inget fyller i lämnas kvar exakt som den skrevs.

En token lägger in värdet i containerinstansens egna inställningar som klartext, läsbart för alla som kan läsa instansen. Skicka hemligheter via secretRef, aldrig som en token i ett env-värde.

Plattformsvärden

När plattformen läser en mall från ett förråd — plattformskatalogen eller en katalogkälla — ersätter den två värden i parametrarnas standardvärden, i outputs värden och i slutpunkters värdnamn och utfärdare:

Värde Blir
{{domain_suffix}} Plattformens appdomän, apps.example.com
{{cert_issuer}} Certifikatutfärdaren som plattformen installerades med

En mall som sparas via API:t lagras som den skickades: skriv ut dessa värden i sin helhet där.

Förrådets struktur

Ett förråd publicerar en blueprint per katalog, under den mapp som källan eller plattformskatalogen pekar på:

text
blueprints/
  my-app/
    template.yaml
    icon.svg
  my-db/
    template.yaml
  • Katalogens namn är blueprintens slug, oavsett vad metadata.slug säger.
  • Ikonen är den första av icon.svg, icon.png, icon.jpg eller icon.webp som finns bredvid template.yaml. Finns ingen används metadata.icon.
  • Varje katalog läses som en blueprint. En utan template.yaml, eller med en som inte går att tolka, hoppas över och de andra läses ändå in.
  • Undermoduler klonas inte.