Peta dunia

 

EN: Read in English

Dunia K6: Pengawal

Misi capstone 5: Kawal

Anda akan belajar: beri Kedai Kancil lencana, kunci, pagar dan meterai, kemudian buktikan kluster tolak image root atau tanpa tandatangan.

Teks BM belum disemak oleh penutur asli.

Disemak dengan Kubernetes 1.37 pada 31 Okt 2026

Masalahnya

Anda di sini: kluster kind-dev namespace default
Dry run pod nginx root dalam zon kedai ditolak: ia langgar PodSecurity restricted. Output terminal: $ kubectl apply -f root.yaml --dry-run=server Error from server (Forbidden): error when creating "root.yaml": pods "root-test" is forbidden: violates PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "web" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "web" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "web" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "web" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")

Misi 5: Kawal. Matlamat anda: kluster anda sendiri tolak image root atau tanpa tandatangan, macam ini. Empat kerja: lencana, kunci, pagar, meterai.

Cuba

Langkah 1: lencana dan kunci. kubectl boleh tuliskan YAML untuk anda dengan --dry-run=client -o yaml.

Misi sebenar

  1. kubectl create serviceaccount ci-bot -n kedai --dry-run=client -o yaml > k8s/base/rbac.yaml
  2. echo "---" >> k8s/base/rbac.yaml && kubectl create role deployer -n kedai --verb=get,list,patch --resource=deployments --dry-run=client -o yaml >> k8s/base/rbac.yaml
  3. echo "---" >> k8s/base/rbac.yaml && kubectl create rolebinding ci-bot-deployer -n kedai --role=deployer --serviceaccount=kedai:ci-bot --dry-run=client -o yaml >> k8s/base/rbac.yaml
  4. kubectl label --dry-run=server --overwrite ns kedai pod-security.kubernetes.io/enforce=restricted
  5. kubectl auth can-i get secrets -n kedai --as=system:serviceaccount:kedai:ci-bot

0 daripada 8 langkah siap · Tanda anda disimpan.

Tengok

Zon kedai anda akan bawa dua label pengawal. Satu semak kunci. Satu semak meterai.

Tekan label yang tolak dulang root.

0 daripada 1 dijumpai

Cuba

Langkah 2: pagar dan meterai. Arahan meterai datang dari panduan GitHub, ditulis untuk Helm 4.

Misi sebenar

  1. kubectl run probe --rm -it --restart=Never --image=busybox:1.37 -- wget -qO- -T 2 http://api.kedai
  2. helm upgrade policy-controller --install --rollback-on-failure --create-namespace --namespace artifact-attestations oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5
  3. helm upgrade trust-policies --install --rollback-on-failure --namespace artifact-attestations oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.7.0 --set policy.enabled=true --set policy.organization=YOUR-NAME
  4. kubectl label namespace kedai policy.sigstore.dev/include=true

0 daripada 8 langkah siap · Tanda anda disimpan.

Semak

Biar API awam GitHub sahkan fail anda. Taip nama pengguna anda, kemudian semak.

Semak di GitHub

Nama pengguna anda dihantar ke api.github.com sahaja.

  • Repo Kedai Kancil anda awamBelum disemak
  • Ia ada k8s/base/rbac.yamlBelum disemak
  • Ia ada k8s/base/networkpolicy.yamlBelum disemak

Semak

API tak nampak dalam kluster anda. Semak sendiri perkara ini.

Misi sebenar

  1. kubectl auth can-i patch deployments -n kedai --as=system:serviceaccount:kedai:ci-bot
  2. kubectl run root-test -n kedai --image=nginx:1.29-alpine --dry-run=server

0 daripada 4 langkah siap · Tanda anda disimpan.

Anda berjaya!

Kini anda boleh kawal Kedai Kancil dengan lencana, kunci, pagar dan meterai.

Nak tahu lebih (pilihan)

Keselamatan: guna kluster kind anda sahaja, jangan kluster kerja. Baca bar merah jambu “anda di sini” sebelum setiap label atau delete. Pod tersekat? Jalankan kubectl get events -n kedai. Kyverno atau Gatekeeper pun boleh semak meterai, kalau pasukan anda sudah guna salah satunya.