Docker och Kubernetes för utvecklare · Lektion

Utöka API-servern med admission-webhooks

Fånga upp och validera eller förändra Kubernetes API-begäranden i realtid med validerande och transformerande admission-webhooks för att upprätthålla klusterpolicyer.

Lektion 4 av 413 steg

Utöka API-servern med admission-webhooks är en gratis lektion i Docker och Kubernetes för utvecklare på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Docker och Kubernetes för utvecklare, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Docker och Kubernetes för utvecklare innehåller totalt 4 lektioner.

Vad är åtkomstkontroll

Efter autentisering och auktorisering passerar förfrågningar genom admission controllers som kan validera eller ändra objekt innan de sparas.

Två typer av webhooks

Dynamisk admission använder webhooks: mutating-webhooks ändrar objekt och validating-webhooks godkänner eller avvisar dem.

Var de befinner sig i pipelinen

API-servern kör mutating-webhooks först och därefter validating-webhooks, så att en ändring kan lägga till standardvärden innan valideringen granskar det slutliga objektet.

Ett användningsfall

Exempel: injicera en sidecar (mutating), kräva att varje Pod anger resursgränser (validating) eller blockera avbildningar från opålitliga register.

MutatingWebhookConfiguration

Den här resursen registrerar webhookens endpoint hos API-servern.

apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
  name: add-defaults
webhooks:
  - name: defaults.example.com
    clientConfig:
      service:
        name: webhook-svc
        namespace: default
        path: /mutate
      caBundle: <base64-ca>
    rules:
      - operations: ["CREATE"]
        apiGroups: [""]
        apiVersions: ["v1"]
        resources: ["pods"]

AdmissionReview-nyttolasten

API-servern skickar JSON i form av en AdmissionReview till webhooken och förväntar sig ett AdmissionReview-svar med allowed true/false samt en JSONPatch vid ändring.

Returnera en JSON Patch

En mutating-webhook returnerar en base64-kodad JSONPatch som beskriver ändringarna som ska tillämpas.

{"response":{"allowed":true,"patchType":"JSONPatch","patch":"<base64-patch>"}}

failurePolicy är viktigt

failurePolicy: Fail blockerar förfrågningar om webhooken ligger nere, vilket är säkert men kan låsa klustret; Ignore släpper igenom förfrågningar, vilket är riskabelt för säkerhetspolicyer.

Avgränsa med selectors

Använd namespaceSelector och objectSelector för att begränsa vilka förfrågningar som når er webhook och undvika onödig belastning samt oavsiktlig utvidgning av omfattningen.

Policy-motorer som alternativ

I stället för att skriva webhook-servrar tillhandahåller verktyg som OPA Gatekeeper och Kyverno deklarativa policyer ovanpå samma admission-mekanism.

apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: require-limits
spec:
  validationFailureAction: Enforce
  rules:
    - name: check-limits
      match:
        any:
          - resources:
              kinds: [Pod]
      validate:
        message: "CPU and memory limits are required"
        pattern:
          spec:
            containers:
              - resources:
                  limits:
                    memory: "?*"

TLS krävs

Webhook-slutpunkter måste tillhandahålla HTTPS med ett certifikat som är betrott via caBundle, eftersom API-servern endast anropar webhookar över TLS.

Snabbtest

Testa vad ni har lärt er.

Sammanfattning

Ni har lärt er hur admission-webhookar utökar API-servern: muterande webhookar ändrar objekt och validerande webhookar upprätthåller policyer, flödet för AdmissionReview, failurePolicy och selektorer, krav på TLS samt policymotorer som Kyverno och Gatekeeper.

Gratis att börja

Lär dig Docker och Kubernetes för utvecklare med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Utöka API-servern med admission-webhooks” gratis?

Ja – hela texten till ”Utöka API-servern med admission-webhooks” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Docker och Kubernetes för utvecklare, kan Ni uppgradera till CoddyKit PRO. Kursen i Docker och Kubernetes för utvecklare innehåller totalt 4 lektioner.

Vad lär jag mig i ”Utöka API-servern med admission-webhooks”?

Fånga upp och validera eller förändra Kubernetes API-begäranden i realtid med validerande och transformerande admission-webhooks för att upprätthålla klusterpolicyer. Ni övar på Docker och Kubernetes för utvecklare med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Docker och Kubernetes för utvecklare?

Du behöver inga förkunskaper. Utbildningen i Docker och Kubernetes för utvecklare på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Utöka API-servern med admission-webhooks”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Docker och Kubernetes för utvecklare-lektionen?

Ja. Varje Docker och Kubernetes för utvecklare-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Definitioner av anpassade resurser (CRD:er)
  2. Operator-mönstret i Kubernetes
  3. Serverless med Kubernetes (Knative)
  4. Utöka API-servern med admission-webhooks
← Tillbaka till Docker och Kubernetes för utvecklare