Skip to content

Commit caf5a0d

Browse files
authored
Merge pull request #19875 from ariscahyadi/id-operator
Operator Patterns ID Localization.
2 parents 82cf24e + 1b0de17 commit caf5a0d

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
---
2+
title: Pola Operator
3+
content_template: templates/concept
4+
weight: 30
5+
---
6+
7+
{{% capture overview %}}
8+
9+
Operator adalah ekstensi perangkat lunak untuk Kubernetes yang memanfaatkan
10+
[_custom resource_](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
11+
untuk mengelola aplikasi dan komponen-komponennya. Operator mengikuti prinsip
12+
Kubernetes, khususnya dalam hal [_control loop_](/docs/concepts/#kubernetes-control-plane).
13+
14+
{{% /capture %}}
15+
16+
17+
{{% capture body %}}
18+
19+
## Motivasi
20+
21+
Pola dari Operator bertujuan untuk menangkap tujuan utama dari Operator manusia
22+
yang mengelola layanan atau suatu kumpulan layanan. Operator manusia yang
23+
menjaga spesifik aplikasi dan layanan memiliki pengetahuan yang mendalam tentang
24+
bagaimana sistem harus berperilaku, bagaimana cara menyebarkannya, dan
25+
bagaimana bereaksi jika ada masalah.
26+
27+
Orang-orang yang menjalankan _workload-workload_ di Kubernetes pada umumnya suka
28+
menggunakan otomatisasi untuk menangani tugas-tugas yang berulang. Pola
29+
Operator menangkap bagaimana kamu dapat menulis kode untuk mengotomatiskan
30+
sebuah tugas di luar batas apa yang dapat disediakan oleh Kubernetes itu
31+
sendiri.
32+
33+
## Operator di Kubernetes
34+
35+
Kubernetes didesain untuk otomasi. Secara di luar nalar, kamu mendapatkan banyak
36+
otomatisasi bawaan dari komponen inti Kubernetes. Kamu dapat menggunakan
37+
Kubernetes untuk mengotomasikan penyebaran dan menjalankan _workload-workload_, *dan*
38+
kamu juga dapat mengotomasikan cara Kubernetes melakukan pekerjaan itu.
39+
40+
Konsep dari {{< glossary_tooltip text="controller" term_id="controller" >}}
41+
Kubernetes memungkinkan kamu memperluas perilaku klaster tanpa harus mengubah
42+
kode dari Kubernetes itu sendiri.
43+
44+
Operator adalah klien API dari Kubernetes yang bertindak sebagai _controller_
45+
untuk [_custome resource_](/docs/concepts/api-extension/custom-resources/).
46+
47+
## Contoh Operator {#contoh}
48+
49+
Beberapa hal yang dapat kamu gunakan untuk mengotomasi Operator meliputi:
50+
51+
* menyebarkan aplikasi sesuai dengan permintaan
52+
* mengambil dan memulihkan backup status dari sebuah aplikasi
53+
* menangani pembaruan kode aplikasi termasuk dengan perubahan terkait seperti
54+
skema basis data atau pengaturan konfigurasi tambahan
55+
* mempublikasikan layanan ke sebuah aplikasi yang tidak mendukung API Kubernetes
56+
untuk menemukan mereka
57+
* mensimulasikan kegagalan pada seluruh atau sebagian klaster kamu untuk
58+
menguji resiliensinya
59+
* memilih suatu pemimpin untuk aplikasi yang terdistribusi tanpa adanya proses
60+
pemilihan anggota secara internal
61+
62+
Seperti apa sebuah Operator dalam kasus yang lebih terperinci? Berikut ini
63+
adalah contoh yang lebih detail:
64+
65+
1. Sebuah _custom resource_ bernama SampleDB, bisa kamu konfigurasi ke
66+
dalam klaster.
67+
2. Sebuah Deployment memastikan sebuah Pod berjalan dimana didalamnya
68+
berisi bagian _controller_ dari Operator.
69+
3. Kontainer Image dari kode Operator.
70+
4. Kode _controller_ yang menanyakan pada *control-plane* untuk mencari tahu
71+
apakah itu sumber daya SampleDB telah dikonfigurasi.
72+
5. Inti dari Operator adalah kode untuk memberi tahu server API bagaimana
73+
membuatnya kondisi sebenarnya sesuai dengan sumber daya yang dikonfigurasi.
74+
   * Jika kamu menambahkan SampleDB baru, Operator menyiapkan
75+
PersistentVolumeClaims untuk menyediakan penyimpanan basis data yang
76+
tahan lama, sebuah StatefulSet untuk menjalankan SampleDB dan pekerjaan
77+
untuk menangani konfigurasi awal.
78+
   * Jika kamu menghapusnya, Operator mengambil _snapshot_, lalu memastikannya
79+
     StatefulSet dan Volume juga dihapus.
80+
6. Operator juga mengelola backup basis data yang reguler. Untuk setiap resource
81+
SampleDB, Operator menentukan kapan membuat Pod yang dapat terhubung
82+
   ke database dan mengambil backup. Pod-Pod ini akan bergantung pada ConfigMap
83+
   dan / atau sebuah Secret yang memiliki basis data koneksi dan kredensial.
84+
7. Karena Operator bertujuan untuk menyediakan otomatisasi yang kuat untuk
85+
resource yang dikelola, maka akan ada kode pendukung tambahan. Sebagai contoh
86+
, kode memeriksa untuk melihat apakah basis data menjalankan versi yang
87+
lama dan, jika demikian, kode membuat objek Job yang melakukan pembaruan untuk
88+
kamu.
89+
90+
## Menyebarkan Operator
91+
92+
Cara paling umum untuk menyebarkan Operator adalah dengan menambahkan
93+
CustomResourceDefinition dan _controller_ yang berkaitan ke dalam klaster kamu.
94+
_Controller_ biasanya akan berjalan di luar
95+
{{< glossary_tooltip text="control plane" term_id="control-plane" >}},
96+
seperti kamu akan menjalankan aplikasi apa pun yang dikontainerisasi.
97+
Misalnya, kamu bisa menjalankan _controller_ di klaster kamu sebagai sebuah
98+
Deployment.
99+
100+
## Menggunakan Operator {#menggunakan operator}
101+
102+
Setelah Operator disebarkan, kamu akan menggunakannya dengan menambahkan,
103+
memodifikasi, atau menghapus jenis sumber daya yang digunakan Operator tersebut.
104+
Melanjutkan contoh diatas, kamu akan menyiapkan Deployment untuk Operator itu
105+
sendiri, dan kemudian:
106+
107+
```shell
108+
kubectl get SampleDB # find configured databases
109+
110+
kubectl edit SampleDB/example-database # manually change some settings
111+
```
112+
113+
&hellip;dan itu saja! Operator akan berhati-hati dalam menerapkan perubahan
114+
serta menjaga layanan yang ada dalam kondisi yang baik.
115+
116+
## Menulis Operator Kamu Sendiri {#menulis-operator}
117+
118+
Jika tidak ada Operator dalam ekosistem yang mengimplementasikan perilaku kamu
119+
inginkan, kamu dapat kode kamu sendiri. Dalam [Selanjutnya](#selanjutnya) kamu
120+
akan menemukan beberapa tautan ke _library_ dan perangkat yang dapat kamu gunakan
121+
untuk menulis Operator _Cloud Native_ kamu sendiri.
122+
123+
Kamu juga dapat mengimplementasikan Operator (yaitu, _Controller_) dengan
124+
menggunakan bahasa / _runtime_ yang dapat bertindak sebagai
125+
[klien dari API Kubernetes](/docs/reference/using-api/client-libraries/).
126+
127+
{{% /capture %}}
128+
129+
{{% capture Selanjutnya %}}
130+
131+
* Memahami lebih lanjut tentang [_custome resources_](/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
132+
* Temukan "ready-made" _operators_ dalam [OperatorHub.io](https://operatorhub.io/)
133+
untuk memenuhi use case kamu
134+
* Menggunakan perangkat yang ada untuk menulis Operator kamu sendiri, misalnya:
135+
* menggunakan [KUDO](https://kudo.dev/) (Kubernetes Universal Declarative Operator)
136+
* menggunakan [kubebuilder](https://book.kubebuilder.io/)
137+
* menggunakan [Metacontroller](https://metacontroller.app/) bersama dengan
138+
`WebHooks` yang kamu implementasikan sendiri
139+
* menggunakan the [Operator _Framework_](https://github.com/operator-framework/getting-started)
140+
* [Terbitkan](https://operatorhub.io/) Operator kamu agar dapat digunakan oleh
141+
orang lain
142+
* Baca [artikel asli dari CoreOS](https://coreos.com/blog/introducing-operators.html)
143+
yang memperkenalkan pola Operator
144+
* Baca sebuah [artikel](https://cloud.google.com/blog/products/containers-kubernetes/best-practices-for-building-kubernetes-operators-and-stateful-apps)
145+
dari Google Cloud soal panduan terbaik membangun Operator
146+
{{% /capture %}}

0 commit comments

Comments
 (0)