@@ -10,34 +10,156 @@ card:
10
10
weight : 30
11
11
---
12
12
13
- <!-- overview -->
14
13
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.
19
14
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:
22
103
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
+ ```
28
138
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.
31
144
32
145
<!-- body -->
33
146
34
- ## Specyfikacja OpenAPI {#api-specification}
147
+ <a id =" #api-specification " />
148
+
149
+ ## Interfejs OpenAPI {#openapi-interface-definition}
35
150
36
151
Pełną specyfikację API udokumentowano za pomocą [ OpenAPI] ( https://www.openapis.org/ ) .
37
152
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ą:
41
163
42
164
<table >
43
165
<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ą:
70
192
</tbody >
71
193
</table >
72
194
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 >}}
78
201
79
- ### OpenAPI V3
202
+ ### OpenAPI V3 {#openapi-v3}
80
203
81
- {{< feature-state state="beta" for_k8s_version="v1.24 " >}}
204
+ {{< feature-state feature_gate_name="OpenAPIV3 " >}}
82
205
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.
88
207
89
208
Pod 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:
92
211
93
212
``` yaml
94
213
{
@@ -106,14 +225,14 @@ opisane są następującym schematem:
106
225
```
107
226
<!-- for editors: intentionally use yaml instead of json here, to prevent syntax highlight error. -->
108
227
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
111
230
ró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.
114
233
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> ` ,
117
236
zgodnie z podziałem na grupy i wersje.
118
237
119
238
Tabela 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.
149
268
</tbody >
150
269
</table >
151
270
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.
153
285
154
- Kubernetes przechowuje serializowany stan swoich obiektów w
155
- {{< glossary_tooltip term_id="etcd" >}}.
286
+ ## Przechowywanie stanu {#persistence}
156
287
157
- ## Grupy i wersje API
288
+ Kubernetes przechowuje serializowany stan swoich
289
+ obiektów w {{< glossary_tooltip term_id="etcd" >}}.
158
290
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}
162
292
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.
167
301
168
302
Aby ułatwić rozbudowę API Kubernetes, wprowadziliśmy
169
303
[ * grupy API* ] ( https://git.k8s.io/community/contributors/design-proposals/api-machinery/api-group.md ) , które mogą
170
304
być [ włączane i wyłączane] ( /docs/reference/using-api/#enabling-or-disabling ) .
171
305
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.
177
311
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 ` .
183
317
184
- ## Trwałość API
318
+ ### Zmiany w API {#api-changes}
185
319
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.
190
324
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
193
327
[ API deprecation policy] ( /docs/reference/using-api/deprecation-policy/ ) .
194
328
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.
200
338
201
339
{{< 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.
205
344
{{< /note >}}
206
345
207
346
Zajrzyj do [ API versions reference] ( /docs/reference/using-api/#api-versioning )
208
347
po szczegółowe definicje różnych poziomów wersji API.
209
348
210
-
211
-
212
- ## Rozbudowa API
349
+ ## Rozbudowa API {#api-extension}
213
350
214
351
API Kubernetesa można rozszerzać na dwa sposoby:
215
352
@@ -222,9 +359,9 @@ API Kubernetesa można rozszerzać na dwa sposoby:
222
359
223
360
- Naucz się, jak rozbudowywać API Kubernetesa poprzez dodawanie własnych
224
361
[ 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/ ) .
229
366
- Aby dowiedzieć się, jaki rodzaj zmian można określić jako zgodne i jak zmieniać API, zajrzyj do
230
367
[ API changes] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#readme ) .
0 commit comments