Hoppa till innehållet
Stackship-dokumentation English

FunktionerAnvändareMaskinöversatt

Kör en avbild från din egen pipeline

Peka en funktion på en containeravbild som din egen CI/CD-pipeline bygger, släpp nya versioner av den, och vad avbilden måste göra.

Kräver: functions/write

En funktion kan köra en containeravbild som byggts utanför plattformen i stället för kod som skrivits i portalen. Plattformen varken bygger eller pushar den avbilden: din pipeline pushar den till ett register, och du talar om för funktionen vilken avbild den ska köra. Det går inte att ställa in i portalen; använd CLI:t eller API:et, med functions/write i resursgruppen — rollerna Owner, Contributor och Functions Operator har den.

Vad avbilden måste göra

  • Betjäna HTTP på port 8080; variabeln PORT är satt till 8080.
  • Svara på GET /healthz med en 2xx-status inom 30 sekunder efter start, och fortsätta svara. En replik får inga anrop förrän den gör det; den startas om när den inte har svarat efter 30 sekunder, eller när den slutar svara senare.
  • Betjäna funktionens rutt: HTTP-anrop kommer med hela sin sökväg, /<route> eller en sökväg under den. Timerkörningar kommer som en POST till / — se Timertriggrar.
  • Läsa hemligheter från /secrets/env.json. Variablerna STSH_ sätts av koden i plattformens egna körmiljöavbilder, så en egen avbild får bara filen — se Läs värdena i din kod.

När funktionen har autentisering påslagen kontrollerar namnutrymmets proxy token innan anropet når avbilden; avbilden får inställningarna i STACKSHIP_AUTH_ENABLED, STACKSHIP_OIDC_ISSUER och STACKSHIP_OIDC_AUDIENCE. De andra variablerna som en funktion får finns i Miljö.

Viktigt

Proxyns kontroll är den enda som en egen avbild får om den inte själv kontrollerar token. Arbetslaster i boundaryn kan anropa avbilden direkt inuti klustret, utan att passera proxyn, och ett sådant anrop kan också bära X-Stackship-User-*-huvuden som proxyn aldrig satte. Om funktionen behöver autentisering, verifiera token i avbilden också.

Skapa funktionen

bash
stsh functions function create my-namespace orders -g my-resource-group \
  --set source=external \
  --set runtime=Node \
  --set image=ghcr.io/acme/orders:1.4.0
  • runtime krävs; det är avbilden som avgör vad som faktiskt körs.
  • Utan trigger blir funktionen en HTTP-funktion på /<function name> som tar emot alla metoder. För att välja, lägg till till exempel --set 'trigger={"type":"Http","methods":["GET","POST"]}', eller --set 'trigger={"type":"Timer","schedule":"0 7 * * *"}' för en timer.

Funktionen driftsätts så fort den skapas; med standardvärdet minst 0 replikor vilar den fram till sitt första anrop. I portalen syns den i namnutrymmets lista Funktioner; dess sida har ingen flik Kod.

Släpp en ny version

Pusha den nya avbilden med en ny tagg och peka sedan funktionen på den:

bash
stsh functions function update my-namespace orders -g my-resource-group \
  --set image=ghcr.io/acme/orders:1.4.1

Använd en ny tagg för varje version. Funktionen driftsätts om bara när avbildsreferensen ändras, och en nod som redan har en avbild med den taggen hämtar den inte igen, så nytt innehåll som pushas under samma tagg når inte funktionen.

I en pipeline kör du CLI:t som ett tjänstekonto — se Tokens för CLI:t i automatisering — med en roll som har functions/write på resursgruppen, till exempel Functions Operator.

Vilka avbilder som kan användas

  • Om dina plattformsadministratörer har begränsat vilka register avbilder får komma från avvisas en avbild från något annat register när du sparar.
  • En funktion har ingen inställning för registerinloggning: använd en avbild som klustret kan hämta utan sådan.