forked from kubernetes/website
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initialize Common Label for ID Localization. (kubernetes#16706)
- Loading branch information
Showing
1 changed file
with
179 additions
and
0 deletions.
There are no files selected for viewing
179 changes: 179 additions & 0 deletions
179
content/id/docs/concepts/overview/working-with-objects/common-labels.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
--- | ||
title: Label yang Disarankan | ||
content_template: templates/concept | ||
--- | ||
|
||
{{% capture overview %}} | ||
Kamu dapat melakukan visualisasi dan mengatur objek Kubernetes dengan lebih banyak _tools_ | ||
dibandingkan dengan perintah kubectl dan dasbor. Sekumpulan label mengizinkan _tools_ | ||
untuk bekerja dengan interoperabilitas, mendeskripsikan objek dengan cara yang umum yang dapat | ||
dipahami semua _tools_. | ||
|
||
Sebagai tambahan bagi _tooling_ tambahan, label yang disarankan ini mendeskripsikan | ||
aplikasi sehingga informasi yang ada diapat di-_query_. | ||
{{% /capture %}} | ||
|
||
{{% capture body %}} | ||
Metadata ini diorganisasi berbasis konsep dari sebuah aplikasi. Kubernetes bukan merupakan | ||
sebuah platform sebagai sebuah _service_ (_platform as a service_/PaaS) dan tidak | ||
mewajibkan sebuah gagasan formal dari sebuah aplikasi. | ||
Sebagai gantinya, aplikasi merupakan suatu hal informal yang dideskripsikan melalui metadata. | ||
Definisi yang dimiliki oleh sebuah aplikasi merupakan sebuah hal yang cukup longgar. | ||
|
||
{{< note >}} | ||
Berikut merupakan label yang disarankan. Label ini mempermudah | ||
proses manajemen aplikasi tetapi tidak dibutuhkan untuk _tooling_ utama apa pun. | ||
{{< /note >}} | ||
|
||
Label yang digunakan secara umum serta anotasi memiliki prefiks yang serupa: `app.kubernetes.io`. Label | ||
tanpa sebuah prefiks bersifat privat khusus pengguna saja. Prefiks yang digunakan secara umum tadi | ||
menjamin bahwa label tadi tidak akan mengganggu label _custom_ yang diberikan oleh pengguna. | ||
|
||
## Label | ||
|
||
Untuk mendapatkan keuntungan menyeluruh dari penggunaan label ini, | ||
label harus digunakan pada seluruh objek sumber daya. | ||
|
||
| _Key_ | Deskripsi | Contoh | Tipe | | ||
| ----------------------------------- | --------------------- | -------- | ---- | | ||
| `app.kubernetes.io/name` | Nama aplikasi | `mysql` | string | | ||
| `app.kubernetes.io/instance` | Nama unik yang bersifat sebagai pengidentifikasi dari sebuah instans aplikasi | `wordpress-abcxzy` | string | | ||
| `app.kubernetes.io/version` | Versi saat ini dari aplikasi (misalnya sebuah versi semantik, hash revisi, etc.) | `5.7.21` | string | | ||
| `app.kubernetes.io/component` | Komponen yang ada pada arsitektur | `database` | string | | ||
| `app.kubernetes.io/part-of` | Nama dari komponen lebih tinggi dari aplikasi yang mencakup bagian ini | `wordpress` | string | | ||
| `app.kubernetes.io/managed-by` | Alat yang digunakan untuk mengatur operasi pada aplikasi | `helm` | string | | ||
|
||
Untuk memberikan ilustrasi dari penggunaan label, bayangkan sebuah objek StatefulSet yang didefinisikan sebagai berikut: | ||
|
||
```yaml | ||
apiVersion: apps/v1 | ||
kind: StatefulSet | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: mysql | ||
app.kubernetes.io/instance: wordpress-abcxzy | ||
app.kubernetes.io/version: "5.7.21" | ||
app.kubernetes.io/component: database | ||
app.kubernetes.io/part-of: wordpress | ||
app.kubernetes.io/managed-by: helm | ||
``` | ||
## Aplikasi dan Instans Aplikasi | ||
Sebuah aplikasi dapat diinstal sekali atau beberapa kali di dalam kluster Kubernetes dan, | ||
pada beberapa kasus, di dalam sebuah _namespace_ yang sama. Misalnya, wordpress dapat | ||
diinstal lebih dari satu kali dimana situs web yang berbeda merupakan hasil instalasi yang berbeda. | ||
Nama dari sebuah aplikasi dan nama instans akan dicatat secara terpisah. Sebagai contoh, | ||
WordPress memiliki `wordpress` sebagai nilai dari `app.kubernetes.io/name` dimana | ||
nama instans yang digunakan adalah `wordpress-abcxzy` yang merupakan nilai dari `app.kubernetes.io/instance`. | ||
Hal ini memungkinkan aplikasi dan instans aplikasi untuk dapat diidentifikasi. Setiap instans dari aplikasi | ||
haruslah memiliki nama yang unik. | ||
|
||
## Contoh | ||
|
||
Untuk memberikan ilustrasi dengan cara yang berbeda pada penggunaan label, contoh di bawah ini | ||
memiliki tingkat kompleksitas yang cukup beragam. | ||
|
||
### Sebuah Aplikasi _Stateless_ Sederhana | ||
|
||
Bayangkan sebuah kasus dimana sebuah aplikasi _stateless_ di-_deploy_ | ||
menggunakan Deployment dan Service. Di bawah ini merupakan | ||
contoh kutipan yang merepresentasikan bagaimana | ||
label dapat digunakan secara sederhana. | ||
|
||
Deployment digunakan untuk memastikan Pod dijalankan untuk aplikasi itu sendiri. | ||
```yaml | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: myservice | ||
app.kubernetes.io/instance: myservice-abcxzy | ||
... | ||
``` | ||
|
||
Service digunakan untuk mengekspos aplikasi. | ||
```yaml | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: myservice | ||
app.kubernetes.io/instance: myservice-abcxzy | ||
... | ||
``` | ||
|
||
### Sebuah Aplikasi Web dengan Basis Data | ||
|
||
Bayangkan sebuah aplikasi yang lebih kompleks: sebuah aplikasi web (WordPress) | ||
yang menggunakan basis data (MySQL), yang diinstal menggunakan Helm. | ||
Kutipan berikut merepresentasikan objek yang di-_deploy_ untuk aplikasi ini. | ||
|
||
Berikut merupakan konfigurasi Deployment yang digunakan untuk WordPress: | ||
|
||
```yaml | ||
apiVersion: apps/v1 | ||
kind: Deployment | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: wordpress | ||
app.kubernetes.io/instance: wordpress-abcxzy | ||
app.kubernetes.io/version: "4.9.4" | ||
app.kubernetes.io/managed-by: helm | ||
app.kubernetes.io/component: server | ||
app.kubernetes.io/part-of: wordpress | ||
... | ||
``` | ||
|
||
Service yang digunakan untuk mengekspos WordPress: | ||
|
||
```yaml | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: wordpress | ||
app.kubernetes.io/instance: wordpress-abcxzy | ||
app.kubernetes.io/version: "4.9.4" | ||
app.kubernetes.io/managed-by: helm | ||
app.kubernetes.io/component: server | ||
app.kubernetes.io/part-of: wordpress | ||
... | ||
``` | ||
|
||
MySQL diekspos sebagai StatefulSet dengan metadata yang digunakan untuk StatefulSet tersebut serta aplikasi yang menggunakannya: | ||
|
||
```yaml | ||
apiVersion: apps/v1 | ||
kind: StatefulSet | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: mysql | ||
app.kubernetes.io/instance: mysql-abcxzy | ||
app.kubernetes.io/version: "5.7.21" | ||
app.kubernetes.io/managed-by: helm | ||
app.kubernetes.io/component: database | ||
app.kubernetes.io/part-of: wordpress | ||
... | ||
``` | ||
|
||
Service yang digunakan untuk mengekspos MySQL sebagai bagian dari WordPress: | ||
|
||
```yaml | ||
apiVersion: v1 | ||
kind: Service | ||
metadata: | ||
labels: | ||
app.kubernetes.io/name: mysql | ||
app.kubernetes.io/instance: mysql-abcxzy | ||
app.kubernetes.io/version: "5.7.21" | ||
app.kubernetes.io/managed-by: helm | ||
app.kubernetes.io/component: database | ||
app.kubernetes.io/part-of: wordpress | ||
... | ||
``` | ||
|
||
Dengan StatefulSet MySQL dan Service kamu dapat mengetahui informasi yang ada pada MySQL dan Wordpress. | ||
|
||
{{% /capture %}} |