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 till8080. - Svara på
GET /healthzmed 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 enPOSTtill/— se Timertriggrar. - Läsa hemligheter från
/secrets/env.json. VariablernaSTSH_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
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.0runtimekrävs; det är avbilden som avgör vad som faktiskt körs.- Utan
triggerblir 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:
stsh functions function update my-namespace orders -g my-resource-group \
--set image=ghcr.io/acme/orders:1.4.1Anvä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.