Definicje niestandardowych zasobów (CRD)
Dowiedz się, jak Custom Resource Definitions rozszerzają API Kubernetes o własne typy zasobów — fundament, na którym opierają się Operatory.
Definicje niestandardowych zasobów (CRD) to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Rozszerzanie API Kubernetes
Wbudowane obiekty, takie jak Pody i Deploymenty, nie wyznaczają granicy możliwości. Za pomocą Custom Resource Definition (CRD) można nauczyć Kubernetes zupełnie nowych typów zasobów.
Czym jest zasób niestandardowy
Custom Resource (CR) to instancja zdefiniowanego przez Ciebie typu. Po zainstalowaniu CRD możesz tworzyć CR-y za pomocą kubectl, tak samo jak obiekty natywne.
Budowa CRD
CRD deklaruje nowy rodzaj, jego grupę API, wersję i zakres działania (w przestrzeni nazw lub w całym klastrze).
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: backups.data.example.com
spec:
group: data.example.com
scope: Namespaced
names:
plural: backups
singular: backup
kind: BackupDefiniowanie schematu
Schemat OpenAPI weryfikuje pola zasobu niestandardowego i odrzuca nieprawidłowe specyfikacje już podczas tworzenia.
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
schedule:
type: string
retention:
type: integerTworzenie zasobu niestandardowego
Po zastosowaniu CRD możesz tworzyć instancje nowego typu.
apiVersion: data.example.com/v1
kind: Backup
metadata:
name: nightly-db
spec:
schedule: '0 2 * * *'
retention: 7Praca z CR-ami za pomocą kubectl
Zasoby niestandardowe są pełnoprawnymi obiektami. Możesz je wyświetlać, opisywać i usuwać za pomocą znanych poleceń.
kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-dbKrótkie nazwy i kolumny tabeli
Możesz definiować krótkie nazwy i niestandardowe kolumny tabeli, aby praca z CR-ami była wygodniejsza.
names:
shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
type: string
jsonPath: .spec.scheduleCRD to tylko dane
Sam CRD przechowuje jedynie dane w etcd. Nic na nie nie reaguje. Aby Backup rzeczywiście się wykonał, potrzebujesz kontrolera obserwującego te zasoby.
Powiązanie z Operatorami
Operator to kontroler oraz co najmniej jeden CRD. CRD definiuje pożądany stan, a kontroler stale uzgadnia stan rzeczywisty z pożądanym. CRD stanowią fundament, na którym opierają się Operatory.
Wersjonowanie CRD
CRD obsługują wiele wersji wraz z konwersją, dzięki czemu można rozwijać API. Dokładnie jedna wersja jest oznaczona jako wersja przechowywana w etcd.
versions:
- name: v1beta1
served: true
storage: false
- name: v1
served: true
storage: trueKiedy używać CRD
- Chcesz deklaratywnie modelować pojęcie domenowe, takie jak Backup, Database lub Certificate
- Tworzysz Operatora do automatyzowania operacji
- Chcesz, aby użytkownicy zarządzali aplikacją za pomocą znanych przepływów pracy kubectl
Szybkie sprawdzenie
Sprawdź swoje rozumienie CRD.
Podsumowanie
Dowiedziałeś się, że CRD rozszerzają API Kubernetes o niestandardowe typy, weryfikowane przez schemat OpenAPI i zarządzane za pomocą zwykłych poleceń kubectl. Sam CRD przechowuje tylko dane; połączenie go z kontrolerem tworzy Operatora, który uzgadnia stan pożądany ze stanem rzeczywistym.
Często zadawane pytania
Czy lekcja „Definicje niestandardowych zasobów (CRD)” jest bezpłatna?
Tak — pełny tekst „Definicje niestandardowych zasobów (CRD)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Definicje niestandardowych zasobów (CRD)”?
Dowiedz się, jak Custom Resource Definitions rozszerzają API Kubernetes o własne typy zasobów — fundament, na którym opierają się Operatory. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Definicje niestandardowych zasobów (CRD)”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- StatefulSets dla aplikacji stanowych
- DaemonSets dla zadań zależnych od węzła
- Poznajemy Kubernetes Operators
- Definicje niestandardowych zasobów (CRD)