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:
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:
resources:
- name: db
type: postgres
availability: "[%db_availability%]"
storage: 10Gi
exposes:
- output: connectionString
vaultKey: connectionstring_dbenv:
- 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 |
sourceRefanger ett privat register anslutet till boundaryn som avbilden hämtas via — oftast en parameter av typenDeploymentSource,sourceRef: "[%registry%]". Tomt betyder en publik avbild.- En container läser en hemlighet via
secretRefmedvault: "[%instance_vault%]"och parameterns namn, ellervaultKeyför en resurs output, somkey.vaultmåste vara exakt"[%instance_vault%]"; en mall som pekar ut något annat valv nekas. - Steget Beräkning hos den som driftsätter anger
computePlanochreplicasper 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änderdefaultnä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å:
blueprints/
my-app/
template.yaml
icon.svg
my-db/
template.yaml- Katalogens namn är blueprintens slug, oavsett vad
metadata.slugsäger. - Ikonen är den första av
icon.svg,icon.png,icon.jpgellericon.webpsom finns bredvidtemplate.yaml. Finns ingen användsmetadata.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.