@@ -10,34 +10,156 @@ card:
1010 weight : 30
1111---
1212
13- <!-- overview -->
1413
15- Sercem {{< glossary_tooltip text="warstwy sterowania" term_id="control-plane" >}} Kubernetes
16- jest {{< glossary_tooltip text="serwer API" term_id="kube-apiserver" >}}. Serwer udostępnia
17- API poprzez HTTP, umożliwiając wzajemną komunikację pomiędzy użytkownikami, częściami składowymi klastra
18- i komponentami zewnętrznymi.
1914
20- API Kubernetesa pozwala na sprawdzanie i zmianę stanu obiektów
21- (przykładowo: pody, _ Namespaces_ , _ ConfigMaps_ , _ Events_ ).
15+ <!-- overview -->
16+
17+ Sercem {{< glossary_tooltip text="warstwy sterowania" term_id="control-plane" >}}
18+ Kubernetesa jest {{< glossary_tooltip text="serwer API" term_id="kube-apiserver" >}}.
19+ Serwer udostępnia API poprzez HTTP, umożliwiając wzajemną
20+ komunikację pomiędzy użytkownikami, częściami składowymi klastra i komponentami zewnętrznymi.
21+
22+ API Kubernetesa pozwala na sprawdzanie i zmianę stanu
23+ obiektów (przykładowo: pody, _ Namespaces_ , _ ConfigMaps_ , _ Events_ ).
24+
25+ Większość operacji może zostać wykonana poprzez interfejs
26+ linii komend (CLI) [ kubectl] ( /docs/reference/kubectl/ ) lub
27+ inne programy, takie jak [ kubeadm] ( /docs/reference/setup-tools/kubeadm/ ) ,
28+ które używają API. Możesz też korzystać z API
29+ bezpośrednio przez wywołania typu REST. Jeśli piszesz aplikację używającą
30+ API Kubernetesa, warto rozważyć użycie jednej z
31+ [ bibliotek klienckich] ( /docs/reference/using-api/client-libraries/ ) .
32+
33+ Każdy klaster Kubernetesa publikuje specyfikację dostępnych interfejsów API. Dostępne
34+ są dwa mechanizmy udostępniania tych specyfikacji, które
35+ umożliwiają automatyczną integrację i interoperacyjność z narzędziami zewnętrznymi.
36+ Na przykład narzędzie ` kubectl ` pobiera i buforuje specyfikację API w celu
37+ umożliwienia autouzupełniania wiersza poleceń i innych funkcji. Te dwa mechanizmy to:
38+
39+ - [ Discovery API] ( #discovery-api ) dostarcza informacji o interfejsach API
40+ Kubernetesa: nazwach API, zasobach, wersjach i obsługiwanych operacjach. W
41+ Kubernetesie ten termin ma szczególne znaczenie, ponieważ to odrębny
42+ interfejs od OpenAPI i jest traktowany jako osobna część systemu. Jest to zwięzłe
43+ podsumowanie dostępnych zasobów i nie obejmuje szczegółowych definicji
44+ schematów. Szczegółowe informacje o strukturze zasobów można znaleźć w dokumencie OpenAPI.
45+
46+ - [ Kubernetes OpenAPI Document] ( #openapi-interface-definition )
47+ dostarcza (pełne) [ schematy OpenAPI v2.0 i 3.0] ( https://www.openapis.org/ )
48+ dla wszystkich endpointów API
49+ Kubernetesa. OpenAPI v3 to zalecany sposób uzyskiwania dostępu do
50+ specyfikacji API, ponieważ zapewnia pełniejszy i
51+ dokładniejszy obraz. Zawiera wszystkie ścieżki API oraz komplet danych
52+ wejściowych i wyjściowych dla każdej operacji na wszystkich endpointach.
53+ Specyfikacja obejmuje także wszystkie
54+ rozszerzenia wspierane przez klaster. Jest to pełna definicja API, która
55+ znacząco przewyższa pod względem szczegółowości dane z Discovery API.
56+
57+ ## Discovery API {#discovery-api}
58+
59+ Kubernetes przez Discovery API udostępnia pełną listę obsługiwanych grup
60+ API, ich wersji oraz zasobów. Dla każdego zasobu można uzyskać następujące dane:
61+
62+ - Nazwa
63+ - Klaster lub zasięg w przestrzeni nazw
64+ - URL endpointu oraz obsługiwane metody HTTP
65+ - Alternatywne nazwy
66+ - Grupa, wersja, typ
67+
68+ API jest dostępne zarówno w formie zagregowanej, jak i niezagregowanej.
69+ W trybie zagregowanym Discovery API udostępnia dwa endpointy, natomiast
70+ w trybie niezagregowanym jest to oddzielny endpoint dla każdej wersji grupy.
71+
72+ ### Zagregowane Discovery API {#aggregated-discovery}
73+
74+ {{< feature-state feature_gate_name="AggregatedDiscoveryEndpoint" >}}
75+
76+ Kubernetes zapewnia stabilne wsparcie dla zagregowanego
77+ Discovery API, publikując wszystkie zasoby obsługiwane przez klaster za
78+ pośrednictwem dwóch endpointów (` /api ` i ` /apis ` ).
79+ Korzystanie z tych endpointów znacząco ogranicza liczbę zapytań
80+ potrzebnych do pobrania danych z klastra. Dostęp do tych danych
81+ uzyskuje się, wysyłając żądanie na odpowiedni endpoint z
82+ nagłówkiem ` Accept ` , który wskazuje na zagregowany zasób Discovery:
83+ ` Accept: application/json;v=v2;g=apidiscovery.k8s.io;as=APIGroupDiscoveryList ` .
84+
85+ W przypadku braku nagłówka ` Accept ` wskazującego
86+ typ zasobu, zapytania do endpointów ` /api ` i
87+ ` /apis ` zwracają domyślnie dane w formacie niezagregowanym.
88+
89+ [ Discovery document] (https://github.com/kubernetes/kubernetes/blob/release-{{ < skew currentVersion >}}/api/discovery/aggregated_v2.json)
90+ znajduje się w oficjalnym repozytorium
91+ GitHub Kubernetesa. Może on służyć jako odniesienie do podstawowego zestawu zasobów
92+ dostępnych w Kubernetesie, gdy nie masz możliwości wykonania zapytania do rzeczywistego klastra.
93+
94+ Endpoint obsługuje także mechanizm ETag oraz możliwość przesyłania danych w formacie protobuf.
95+
96+ ### Niezagregowane Discovery API {#unaggregated-discovery}
97+
98+ W przypadku braku agregacji Discovery API, dane udostępniane są w strukturze
99+ wielopoziomowej, w której główne endpointy publikują informacje prowadzące do podrzędnych dokumentów.
100+
101+ Wszystkie wersje grup API dostępnych w klastrze są
102+ udostępniane pod endpointami /api i /apis. Oto przykład:
22103
23- Większość operacji może zostać wykonana poprzez
24- interfejs linii komend (CLI) [ kubectl] ( /docs/reference/kubectl/ ) lub inne
25- programy, takie jak
26- [ kubeadm] ( /docs/reference/setup-tools/kubeadm/ ) , które używają
27- API. Możesz też korzystać z API bezpośrednio przez wywołania typu REST.
104+ ```
105+ {
106+ "kind": "APIGroupList",
107+ "apiVersion": "v1",
108+ "groups": [
109+ {
110+ "name": "apiregistration.k8s.io",
111+ "versions": [
112+ {
113+ "groupVersion": "apiregistration.k8s.io/v1",
114+ "version": "v1"
115+ }
116+ ],
117+ "preferredVersion": {
118+ "groupVersion": "apiregistration.k8s.io/v1",
119+ "version": "v1"
120+ }
121+ },
122+ {
123+ "name": "apps",
124+ "versions": [
125+ {
126+ "groupVersion": "apps/v1",
127+ "version": "v1"
128+ }
129+ ],
130+ "preferredVersion": {
131+ "groupVersion": "apps/v1",
132+ "version": "v1"
133+ }
134+ },
135+ ...
136+ }
137+ ```
28138
29- Jeśli piszesz aplikację używającą API Kubernetesa,
30- warto rozważyć użycie jednej z [ bibliotek klienckich] ( /docs/reference/using-api/client-libraries/ ) .
139+ Żeby pobrać informacje o zasobach dostępnych w konkretnej
140+ wersji API, trzeba wysłać osobne zapytanie pod
141+ ` /apis/<group>/<version> ` - np. ` /apis/rbac.authorization.k8s.io/v1alpha1 ` . Ten
142+ endpoint zawiera listę typów zasobów w danej grupie. Używa go
143+ polecenie kubectl, żeby dowiedzieć się, jakie zasoby są dostępne w klastrze.
31144
32145<!-- body -->
33146
34- ## Specyfikacja OpenAPI {#api-specification}
147+ <a id =" #api-specification " />
148+
149+ ## Interfejs OpenAPI {#openapi-interface-definition}
35150
36151Pełną specyfikację API udokumentowano za pomocą [ OpenAPI] ( https://www.openapis.org/ ) .
37152
38- Serwer API Kubernetesa udostępnia specyfikację OpenAPI poprzez
39- ścieżkę ` /openapi/v2 ` . Aby wybrać format odpowiedzi,
40- użyj nagłówków żądania zgodnie z tabelą:
153+ Kubernetes obsługuje zarówno OpenAPI 2.0, jak i 3.0. Wersja
154+ 3 jest preferowana, ponieważ umożliwia
155+ dokładniejszy i kompletny opis zasobów (bez utraty
156+ informacji). W OpenAPI 2 niektóre pola, np. ` default ` ,
157+ ` nullable ` , ` oneOf ` , są pomijane z powodu ograniczeń formatu.
158+ ### OpenAPI V2 {#openapi-v2}
159+
160+ Serwer API Kubernetesa udostępnia specyfikację
161+ OpenAPI poprzez ścieżkę ` /openapi/v2 ` . Aby wybrać
162+ format odpowiedzi, użyj nagłówków żądania zgodnie z tabelą:
41163
42164<table >
43165<caption style =" display :none " >Dopuszczalne wartości nagłówka żądania dla zapytań OpenAPI v2</caption >
@@ -70,25 +192,22 @@ użyj nagłówków żądania zgodnie z tabelą:
70192 </tbody >
71193</table >
72194
73- W Kubernetesie zaimplementowany jest alternatywny format serializacji na potrzeby API oparty o
74- Protobuf, który jest przede wszystkim przeznaczony na potrzeby wewnętrznej komunikacji w klastrze.
75- Więcej szczegółów znajduje się w dokumencie [ Kubernetes Protobuf serialization] ( https://git.k8s.io/design-proposals-archive/api-machinery/protobuf.md ) .
76- oraz w plikach * Interface Definition Language* (IDL) dla każdego ze schematów
77- zamieszczonych w pakietach Go, które definiują obiekty API.
195+ {{< warning >}}
196+ Reguły walidacyjne publikowane w ramach schematów OpenAPI mogą być niekompletne – i zazwyczaj nie
197+ zawierają wszystkich warunków. Dodatkowa walidacja realizowana jest przez serwer API. Aby uzyskać pełną i
198+ precyzyjną weryfikację, zaleca się użycie polecenia ` kubectl apply --dry-run=server ` , które uruchamia wszystkie
199+ mechanizmy walidacji, również te wykonujące się podczas przyjmowania zasobów do klastra (ang. admission checks).
200+ {{< /warning >}}
78201
79- ### OpenAPI V3
202+ ### OpenAPI V3 {#openapi-v3}
80203
81- {{< feature-state state="beta" for_k8s_version="v1.24 " >}}
204+ {{< feature-state feature_gate_name="OpenAPIV3 " >}}
82205
83- Kubernetes {{< param "version" >}} publikuje (na razie w wersji roboczej) własne API zgodnie ze specyfikacją OpenAPI v3.
84- Ta funkcjonalność jest w wersji _ beta_ i jest domyślnie włączona.
85- Funkcjonalności w wersji _ beta_ można wyłączać poprzez
86- [ feature gate] ( /docs/reference/command-line-tools-reference/feature-gates/ ) o nazwie ` OpenAPIV3 `
87- składnika kube-apiserver.
206+ Kubernetes publikuje własne API zgodnie ze specyfikacją OpenAPI v3.
88207
89208Pod adresem ` /openapi/v3 ` można znaleźć listę wszystkich
90- dostępnych grup/wersji. Zwracane wartości są dostępne tylko w formacie JSON. Grupy/wersje
91- opisane są następującym schematem:
209+ dostępnych grup/wersji. Zwracane wartości są dostępne tylko w formacie
210+ JSON. Grupy/wersje opisane są następującym schematem:
92211
93212``` yaml
94213{
@@ -106,14 +225,14 @@ opisane są następującym schematem:
106225```
107226<!-- for editors: intentionally use yaml instead of json here, to prevent syntax highlight error. -->
108227
109- Względne adresy URL wskazują na niezmieniające się opisy OpenAPI,
110- aby umożliwić trzymanie cache po stronie klienta. Serwer API zwraca
228+ Względne adresy URL wskazują na niezmieniające się opisy OpenAPI, aby umożliwić
229+ trzymanie cache po stronie klienta. Serwer API zwraca
111230również odpowiednie nagłówki HTTP dla cache (` Expires ` ustawione na 1 rok wprzód,
112- ` Cache-Control ` jako ` immutable ` ). Wysłanie zapytania do nieaktualnego URL
113- spowoduje przekierowanie przez serwer API do wersji najnowszej.
231+ ` Cache-Control ` jako ` immutable ` ). Wysłanie zapytania do
232+ nieaktualnego URL spowoduje przekierowanie przez serwer API do wersji najnowszej.
114233
115- Serwer API Kubernetesa udostępnia specyfikację OpenAPI v3
116- pod adresem ` /openapi/v3/apis/<group>/<version>?hash=<hash> ` ,
234+ Serwer API Kubernetesa udostępnia specyfikację
235+ OpenAPI v3 pod adresem ` /openapi/v3/apis/<group>/<version>?hash=<hash> ` ,
117236zgodnie z podziałem na grupy i wersje.
118237
119238Tabela poniżej podaje dopuszczalne wartości nagłówków żądania.
@@ -149,67 +268,85 @@ Tabela poniżej podaje dopuszczalne wartości nagłówków żądania.
149268 </tbody >
150269</table >
151270
152- ## Przechowywanie stanu
271+ W pakiecie [ ` k8s.io/client-go/openapi3 ` ] ( https://pkg.go.dev/k8s.io/client-go/openapi3 )
272+ znajduje się implementacja w Golang do pobierania OpenAPI V3.
273+
274+ Kubernetes {{< skew currentVersion >}} publikuje OpenAPI w wersji
275+ 2.0 i 3.0; nie ma planów wsparcia wersji 3.1 w najbliższej przyszłości.
276+
277+ ### Serializacja Protobuf {#protobuf-serialization}
278+
279+ Kubernetes implementuje alternatywny format serializacji oparty na
280+ Protobuf, który jest głównie przeznaczony do komunikacji w obrębie klastra. Aby
281+ uzyskać więcej informacji na temat tego formatu, zobacz
282+ [ Kubernetes Protobuf serialization] ( https://git.k8s.io/design-proposals-archive/api-machinery/protobuf.md ) propozycję
283+ projektową oraz pliki Interface Definition Language
284+ (IDL) dla każdego schematu znajdujące się w pakietach Go, które definiują obiekty API.
153285
154- Kubernetes przechowuje serializowany stan swoich obiektów w
155- {{< glossary_tooltip term_id="etcd" >}}.
286+ ## Przechowywanie stanu {#persistence}
156287
157- ## Grupy i wersje API
288+ Kubernetes przechowuje serializowany stan swoich
289+ obiektów w {{< glossary_tooltip term_id="etcd" >}}.
158290
159- Aby ułatwić usuwanie poszczególnych pól lub restrukturyzację reprezentacji zasobów, Kubernetes obsługuje
160- równocześnie wiele wersji API, każde poprzez osobną ścieżkę API,
161- na przykład: ` /api/v1 ` lub ` /apis/rbac.authorization.k8s.io/v1alpha1 ` .
291+ ## Grupy i wersje API {#api-groups-and-versioning}
162292
163- Rozdział wersji wprowadzony jest na poziomie całego API, a nie na poziomach poszczególnych zasobów lub pól,
164- aby być pewnym, że API odzwierciedla w sposób przejrzysty i spójny zasoby systemowe
165- i ich zachowania oraz pozwala na kontrolowany dostęp do tych API, które są w fazie wycofywania
166- lub fazie eksperymentalnej.
293+ Aby ułatwić usuwanie poszczególnych pól lub restrukturyzację reprezentacji
294+ zasobów, Kubernetes obsługuje równocześnie wiele wersji API, każde poprzez osobną
295+ ścieżkę API, na przykład: ` /api/v1 ` lub ` /apis/rbac.authorization.k8s.io/v1alpha1 ` .
296+
297+ Rozdział wersji wprowadzony jest na poziomie całego API, a nie na poziomach
298+ poszczególnych zasobów lub pól, aby być pewnym, że API odzwierciedla w sposób
299+ przejrzysty i spójny zasoby systemowe i ich zachowania oraz pozwala na
300+ kontrolowany dostęp do tych API, które są w fazie wycofywania lub fazie eksperymentalnej.
167301
168302Aby ułatwić rozbudowę API Kubernetes, wprowadziliśmy
169303[ * grupy API* ] ( https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md ) , które mogą
170304być [ włączane i wyłączane] ( /docs/reference/using-api/#enabling-or-disabling ) .
171305
172- Zasoby API są rozróżniane poprzez przynależność do grupy API, typ zasobu, przestrzeń nazw ( _ namespace _ ,
173- o ile ma zastosowanie) oraz nazwę. Serwer API może przeprowadzać konwersję między
174- różnymi wersjami API w sposób niewidoczny dla użytkownika: wszystkie te różne wersje
175- reprezentują w rzeczywistości ten sam zasób. Serwer API może udostępniać te same dane
176- poprzez kilka różnych wersji API.
306+ Zasoby API są rozróżniane poprzez przynależność do grupy API, typ zasobu,
307+ przestrzeń nazw ( _ namespace _ , o ile ma zastosowanie) oraz nazwę. Serwer API może przeprowadzać
308+ konwersję między różnymi wersjami API w sposób niewidoczny dla użytkownika:
309+ wszystkie te różne wersje reprezentują w rzeczywistości ten sam zasób.
310+ Serwer API może udostępniać te same dane poprzez kilka różnych wersji API.
177311
178- Załóżmy przykładowo, że istnieją dwie wersje ` v1 ` i ` v1beta1 ` tego samego zasobu.
179- Obiekt utworzony przez wersję ` v1beta1 ` może być odczytany,
180- zaktualizowany i skasowany zarówno przez wersję
181- ` v1beta1 ` , jak i ` v1 ` , do czasu aż wersja ` v1beta1 ` będzie przestarzała i usunięta.
182- Wtedy możesz dalej korzystać i modyfikować obiekt poprzez wersję ` v1 ` .
312+ Załóżmy przykładowo, że istnieją dwie wersje ` v1 ` i ` v1beta1 ` tego
313+ samego zasobu. Obiekt utworzony przez wersję ` v1beta1 ` może być
314+ odczytany, zaktualizowany i skasowany zarówno przez wersję ` v1beta1 ` ,
315+ jak i ` v1 ` , do czasu aż wersja ` v1beta1 ` będzie przestarzała i
316+ usunięta. Wtedy możesz dalej korzystać i modyfikować obiekt poprzez wersję ` v1 ` .
183317
184- ## Trwałość API
318+ ### Zmiany w API {#api-changes}
185319
186- Z naszego doświadczenia wynika, że każdy system, który odniósł sukces, musi się nieustająco rozwijać w miarę zmieniających się potrzeb.
187- Dlatego Kubernetes został tak zaprojektowany, aby API mogło się zmieniać i rozrastać.
188- Projekt Kubernetes dąży do tego, aby nie wprowadzać zmian niezgodnych z istniejącymi aplikacjami klienckimi
189- i utrzymywać zgodność przez wystarczająco długi czas, aby inne projekty zdążyły się dostosować do zmian.
320+ Z naszego doświadczenia wynika, że każdy system, który odniósł sukces, musi się nieustająco rozwijać w
321+ miarę zmieniających się potrzeb. Dlatego Kubernetes został tak zaprojektowany, aby API mogło się zmieniać i
322+ rozrastać. Projekt Kubernetes dąży do tego, aby nie wprowadzać zmian niezgodnych z istniejącymi aplikacjami
323+ klienckimi i utrzymywać zgodność przez wystarczająco długi czas, aby inne projekty zdążyły się dostosować do zmian.
190324
191- W ogólności, nowe zasoby i pola definiujące zasoby API są dodawane stosunkowo często.
192- Usuwanie zasobów lub pól jest regulowane przez
325+ W ogólności, nowe zasoby i pola definiujące zasoby API są dodawane
326+ stosunkowo często. Usuwanie zasobów lub pól jest regulowane przez
193327[ API deprecation policy] ( /docs/reference/using-api/deprecation-policy/ ) .
194328
195- Po osiągnięciu przez API statusu ogólnej dostępności (_ general availability_ - GA),
196- oznaczanej zazwyczaj jako wersja API ` v1 ` , bardzo zależy nam na utrzymaniu jej zgodności w kolejnych wydaniach.
197- Kubernetes utrzymuje także zgodność dla wersji _ beta_ API tam, gdzie jest to możliwe:
198- jeśli zdecydowałeś się używać API w wersji beta, możesz z niego korzystać także później,
199- kiedy dana funkcjonalność osiągnie status stabilnej.
329+ Po osiągnięciu przez API statusu ogólnej dostępności (_ general availability_ - GA), oznaczanej
330+ zazwyczaj jako wersja API ` v1 ` , bardzo zależy nam na utrzymaniu jej zgodności w kolejnych wydaniach.
331+ Dodatkowo, Kubernetes zachowuje kompatybilność z danymi zapisanymi za pomocą wersji _ beta_ . Gdy dana
332+ funkcja osiąga stabilność (GA), dane te mogą być automatycznie konwertowane i dostępne w docelowej wersji API.
333+
334+ Jeśli korzystasz z wersji beta API, musisz przejść na kolejną wersję beta lub stabilną, gdy
335+ dana wersja zostanie wycofana. Najlepszy moment na migrację to okres wycofywania
336+ wersji beta - wtedy obiekty są dostępne równocześnie w obu wersjach API. Po zakończeniu
337+ tego okresu wersja beta przestaje być obsługiwana i konieczne jest użycie wersji docelowej.
200338
201339{{< note >}}
202- Mimo, że Kubernetes stara się także zachować zgodność dla API w wersji _ alpha_ , zdarzają się przypadki,
203- kiedy nie jest to możliwe. Jeśli korzystasz z API w wersji alfa, przed aktualizacją klastra do nowej wersji
204- zalecamy sprawdzenie w informacjach o wydaniu, czy nie nastąpiła jakaś zmiana w tej części API.
340+ Mimo, że Kubernetes stara się także zachować zgodność dla API w wersji _ alpha_ , zdarzają się przypadki, kiedy
341+ nie jest to możliwe. Jeśli korzystasz z API w wersji alfa, przed aktualizacją klastra do nowej wersji zalecamy
342+ sprawdzenie w informacjach o wydaniu, czy nie nastąpiła jakaś zmiana w tej części API. Może się okazać, że API
343+ uległo niekompatybilnym zmianom, co wymaga usunięcia wszystkich istniejących obiektów alfa przed wykonaniem aktualizacji.
205344{{< /note >}}
206345
207346Zajrzyj do [ API versions reference] ( /docs/reference/using-api/#api-versioning )
208347po szczegółowe definicje różnych poziomów wersji API.
209348
210-
211-
212- ## Rozbudowa API
349+ ## Rozbudowa API {#api-extension}
213350
214351API Kubernetesa można rozszerzać na dwa sposoby:
215352
@@ -222,9 +359,9 @@ API Kubernetesa można rozszerzać na dwa sposoby:
222359
223360- Naucz się, jak rozbudowywać API Kubernetesa poprzez dodawanie własnych
224361 [ CustomResourceDefinition] ( /docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ ) .
225- - [ Controlling Access To The Kubernetes API] ( /docs/concepts/security/controlling-access/ ) opisuje
226- sposoby, jakimi klaster zarządza dostępem do API.
227- - Punkty dostępowe API _ (endpoints)_ , typy zasobów i przykłady zamieszczono w
228- [ API Reference] ( /docs/reference/kubernetes-api/ ) .
362+ - [ Controlling Access To The Kubernetes API] ( /docs/concepts/security/controlling-access/ )
363+ opisuje sposoby, jakimi klaster zarządza dostępem do API.
364+ - Punkty dostępowe API _ (endpoints)_ , typy zasobów i przykłady zamieszczono
365+ w [ API Reference] ( /docs/reference/kubernetes-api/ ) .
229366- Aby dowiedzieć się, jaki rodzaj zmian można określić jako zgodne i jak zmieniać API, zajrzyj do
230367 [ API changes] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#readme ) .
0 commit comments