LProbe: Et alt-i-ett-verktøy for sikre, lokale helsesjekker Lenke til overskrift
Selv om appen din fungerer, betyr ikke det alltid at den fungerer korrekt. For at du sikkert og enkelt skal kunne sikre at din lokale container er frisk før systemet feiler, utviklet FivexL en åpen kildekode automatisert løsning for lokale helsesjekker - LProbe.
Et tydelig eksempel er en evig timeout: appen din krasjer ikke, men venter kontinuerlig på et systemrespons. Hvis du ikke mottar noen varsling om at det ikke kommer noe svar innen, la oss si, 30 sekunder, kan det hende du ikke merker at noe er galt. Her kommer en helsesjekk inn for å sikre at appen din fungerer som den skal.
Hva er en helsesjekk? Lenke til overskrift
Helsesjekk er en prosess for å sjekke om en spesifikk ressurs inne i din lokale container fungerer korrekt. Kommandoen utfører regelmessige helsesjekker innenfor satte tidsintervaller og varsler deg hvis systemet ikke fungerer som det skal. Slik fungerer LProbe.
Anta at du trenger å validere eksterne systemer og finne ut om appen din kan få tilgang til en database eller bucket, registrere noe osv. For at du ikke skal gå glipp av et problem, kjører LProbe automatisk kommandoen innenfor et forhåndsdefinert intervall for å sikre at containeren din er frisk. Hvis den ikke er det, prøv å slå den av og på igjen eller last inn containeren på nytt.
En rask påminnelse: all videre informasjon er relevant for både API og Web Services. LProbe kan også dekke de fleste behov for begge, siden det ikke dekker behovene til en app uten noe grensesnitt i det hele tatt.
Hvordan ble problemet løst før LProbe? Lenke til overskrift
I dag finnes det flere tradisjonelle metoder for å kjøre helsesjekker: curl eller wget-kommandoer. Selv om du ikke har dem, vil guider anbefale deg å installere og kjøre dem, uten å ta hensyn til alle sikkerhetsforholdsregler.
I realiteten undergraver du appens beskyttelse betydelig, siden wget/curl-kommandoer brukes i skript og tillater nedlasting av andre verktøy for videre angrep. Hvis en angriper er inne i filsystemet ditt og det ikke er skrivebeskyttet, vil de kunne laste ned informasjon fra nettet og kjøre kode eller binærfiler—alt dette åpner et stort mulighetsvindu for en inntrenger.
Hvis du ønsker et sikrere alternativ, vil guider foreslå at du skriver din egen kode, noe som krever ekstra tid og innsats for å integrere og vedlikeholde. FivexL utviklet en pålitelig og godt beskyttet lokal helsesjekkløsning - LProbe. La oss finne ut hvorfor den er mer praktisk og sikker sammenlignet med eksisterende helsesjekkalternativer.
Tradisjonelle metoder for helsesjekk for Docker, ECS og Kubernetes (mTLS og Istio-tilfeller) Lenke til overskrift
Hvis du googler hvordan du utfører en lokal helsesjekk, vil de øverste resultatene stadig hevde én ting: at wget og curl er dine beste alternativer. Vi har gjennomført forskning for å finne ut hva som foreslås for ulike lokale helsesjekker.
Docker Health Check
Hvis du trenger en kommando for å få docker til å sikre at containeren din fungerer korrekt, anbefaler 99 % av guider å bruke en tradisjonell CMD curl eller CMD wget, som i dette eksempelet.
HEALTCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
Når det gjelder kode, må du være oppmerksom på output. Sett opp kun to utganger: 0 - for en vellykket helsesjekk, som betyr at alt fungerer som det skal, og 1 - for en usunn status.
Amazon ECS Health Check
Amazon ECS Container-dokumentasjonen fokuserer på de samme kommandoene og skisserer to alternativer for å kjøre en helsesjekk-kommando:
- Standard er CMD, som kjører direkte. Det er det eneste alternativet for containere uten shell.
- Det andre er CMD-SHELL, som kjører med containerens standard shell.
Hvorfor nevner vi dette? Dokumentasjonen har bare ett eksempel på CMD-SHELL, og dette bruker også curl-verktøyet. Du kan prøve å søke etter mer informasjon om helsesjekker for containere i re:post, men du vil fortsatt finne anbefalinger om CMD-SHELL + curl/wget. Her er ett eksempel.
Alt dette beviser nok en gang at curl og wget nå er dypt forankret i folks hoder.
Kubernetes Health Check
Kubernetes har innebygde funksjoner for å kjøre helsesjekker uten ekstra innsats. Du kan initiere det med en HTTP-get-kommando eller kjøre en gRPC liveness probe for Kubernetes v. 1.24. Dette er ikke lenger et alternativ når du legger til Istio Sidecar med mTLS fordi liveness probes foregår utenfor servicemesh.
Her går all ære igjen til den beryktede wget (en standard kommando-probe), exec kjøres, og du får helsesjekkresultater.
Hvilken helsesjekkløsning foreslår ChatGPT? Lenke til overskrift
Selv AI kan ikke finne et bedre alternativ enn å bruke usikre kommandoer eller tredjepartsverktøy som er sårbare for inntrengere. For å bevise dette spurte vi ChatGPT om en helsesjekkløsning. FivexL-teamet ba om følgende:
“Jeg vil at du skal opptre som en Cloud Engineer med fokus på AWS og Container Security. Du skal gi råd om Docker Containers og Dockerfiles og hjelpe til med å lage den mest sikre Dockerfile, og den skal ikke være tom. Min første forespørsel er, “Jeg trenger en Dockerfile med en HEALTHCHECK-instruksjon i den. Vennligst bruk det sikreste verktøyet eller kommandoen for å kjøre helsesjekken”
Her er hva ChatGPT foreslo:
FROM alpine:latest
RUN apk add --no-cache curl
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost/ || exit 1
CMD ["/bin/sh"]
Denne Dockerfilen spesifiserer at helsesjekken skal kjøres hvert 30. sekund, med en timeout på 30 sekunder og en startperiode på 5 sekunder. Den spesifiserer også at helsesjekken skal prøves på nytt 3 ganger hvis den feiler. Curl-kommandoen brukes for å sjekke statusen til http://localhost/-endepunktet. Hvis curl-kommandoen returnerer en feil, vil helsesjekken feile og containeren vil bli ansett som usunn.
Du kan også bruke andre verktøy eller kommandoer for å utføre helsesjekken, avhengig av dine spesifikke krav. For eksempel kan du bruke wget eller httpie i stedet for curl, eller du kan bruke et verktøy som nmap for å utføre en nettverksskanning. Til syvende og sist vil valget av verktøy eller kommando avhenge av dine spesifikke behov og ressursene som er tilgjengelige i containeren din.
En løsning for alle: LProbe Lenke til overskrift
Foretak koder vanligvis sitt eget proprietære binærverktøy og legger det til i et docker-image for å kjøre helsesjekker samtidig som de opprettholder et riktig sikkerhetsnivå. Selv om koden er enkel, krever det tid å skrive og vedlikeholde den. For å gjøre denne oppgaven én gang for alle, har vi i FivexL laget LProbe — et åpen kildekode-verktøy for å kjøre helsesjekker.
Med et navn som stammer fra “local probe,” kan LProbe bli et alt-i-ett-verktøy for helsesjekk for enhver oppstartsbedrift som ønsker å fokusere på kjerneproduktet:
- De som lager sikre containere basert på et scratch-image uten shell eller andre verktøy
- De som bruker ECS
- De som bruker Kubernetes med Istio og må slite med en CMD-probe.
Det beste — det er en ferdiglaget åpen kildekode-løsning for å sikkert kjøre helsesjekkene dine. Den støtter nå to protokoller: HTTP og GRPC. Sistnevnte er designet takket være Grpc health probe, lagt til av Google i Kubernetes 1.23. På forespørsel kan vi legge til andre protokoller som Apache JServ Protocol.
I nær fremtid planlegger vi å videreutvikle verktøyets funksjonalitet for å sikre at det møter kravene til så mange selskaper som mulig. Hvis du har spesifikke krav eller ideer om hvordan vi kan gjøre LProbe bedre, er du velkommen til å dele tilbakemeldinger.
Vi vil sette pris på om du samarbeider med oss for sikre lokale helsesjekker. Vi vil også sette pris på om du anmelder LProbe på GitHub for å fremme tillit i fellesskapet.