committed by
Kubernetes Prow Robot
parent
99619d3414
commit
520caa1264
+14
-14
@@ -7,12 +7,12 @@ weight: 60
|
||||
{{< toc >}}
|
||||
|
||||
{{% capture overview %}}
|
||||
Menambahkan entri pada berkas /etc/hosts Pod akan melakukan _override_
|
||||
resolusi _hostname_ pada level Pod ketika DNS dan opsi lainnya tidak tersedia.
|
||||
Pada versi 1.7, pengguna dapat menambahkan entri yang diinginkan beserta _field_ HostAliases
|
||||
Menambahkan entri pada berkas /etc/hosts Pod akan melakukan _override_
|
||||
resolusi _hostname_ pada level Pod ketika DNS dan opsi lainnya tidak tersedia.
|
||||
Pada versi 1.7, pengguna dapat menambahkan entri yang diinginkan beserta _field_ HostAliases
|
||||
pada PodSpec.
|
||||
|
||||
Modifikasi yang dilakukan tanpa menggunakan HostAliases tidaklah disarankan
|
||||
Modifikasi yang dilakukan tanpa menggunakan HostAliases tidaklah disarankan
|
||||
karena berkas ini diatur oleh Kubelet dan dapat di-_override_ ketika Pod dibuat/di-_restart_.
|
||||
{{% /capture %}}
|
||||
|
||||
@@ -58,14 +58,14 @@ fe00::2 ip6-allrouters
|
||||
10.200.0.4 nginx
|
||||
```
|
||||
|
||||
Secara default, berkas `hosts` hanya berisikan _boilerplate_ alamat IP IPv4 and IPv6 seperti
|
||||
Secara default, berkas `hosts` hanya berisikan _boilerplate_ alamat IP IPv4 and IPv6 seperti
|
||||
`localhost` dan hostname dari Pod itu sendiri.
|
||||
|
||||
## Menambahkan Entri Tambahan dengan HostAliases
|
||||
|
||||
Selain _boilerplate default_, kita dapat menambahkan entri pada berkas
|
||||
Selain _boilerplate default_, kita dapat menambahkan entri pada berkas
|
||||
`hosts` untuk melakukan resolusi `foo.local`, `bar.local` pada `127.0.0.1` dan `foo.remote`,
|
||||
`bar.remote` pada `10.1.2.3`, kita dapat melakukannya dengan cara menambahkan
|
||||
`bar.remote` pada `10.1.2.3`, kita dapat melakukannya dengan cara menambahkan
|
||||
HostAliases pada Pod di bawah _field_ `.spec.hostAliases`:
|
||||
|
||||
{{< codenew file="service/networking/hostaliases-pod.yaml" >}}
|
||||
@@ -116,15 +116,15 @@ Dengan tambahan entri yang telah dispesifikasikan sebelumnya.
|
||||
|
||||
## Kenapa Kubelet Melakukan Mekanisme Manajemen Berkas `Hosts`?
|
||||
|
||||
Kubelet [melakukan proses manajemen](https://github.com/kubernetes/kubernetes/issues/14633)
|
||||
berkas `hosts` untuk setiap container yang ada pada Pod untuk mencegah Docker melakukan
|
||||
[modifikasi](https://github.com/moby/moby/issues/17190) pada berkas tersebut
|
||||
Kubelet [melakukan proses manajemen](https://github.com/kubernetes/kubernetes/issues/14633)
|
||||
berkas `hosts` untuk setiap container yang ada pada Pod untuk mencegah Docker melakukan
|
||||
[modifikasi](https://github.com/moby/moby/issues/17190) pada berkas tersebut
|
||||
setelah kontainer dihidupkan.
|
||||
|
||||
Karena sifat dari berkas tersebut yang secara otomatis di-_manage_,
|
||||
semua hal yang didefinisikan oleh pengguna akan ditimpa (_overwrite_) ketika berkas
|
||||
`hosts` di-_mount_ kembali oleh Kubelet ketika ada kontainer yang di-_restart_
|
||||
atau Pod di-_schedule_ ulang. Dengan demikian tidak dianjurkan untuk
|
||||
Karena sifat dari berkas tersebut yang secara otomatis di-_manage_,
|
||||
semua hal yang didefinisikan oleh pengguna akan ditimpa (_overwrite_) ketika berkas
|
||||
`hosts` di-_mount_ kembali oleh Kubelet ketika ada kontainer yang di-_restart_
|
||||
atau Pod di-_schedule_ ulang. Dengan demikian tidak dianjurkan untuk
|
||||
memodifikasi berkas tersebut secara langsung.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
@@ -81,7 +81,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
my-nginx ClusterIP 10.0.162.149 <none> 80/TCP 21s
|
||||
```
|
||||
|
||||
Seperti yang disebutkan sebelumnya, sebuah *Service* berisi sekumpulan *Pod*. *Pod* diekspos melalui `endpoints`. *Service selector* akan mengecek *Pod* secara terus-menerus dan hasilnya akan dikirim (*POSTed*) ke objek *endpoint* yang bernama `my-nginx`. Saat sebuah *Pod* mati, *IP Pod* di dalam *endpoint* tersebut akan otomatis dihapus, dan *Pod* baru yang sesuai dengan *Service selector* akan otomatis ditambahkan ke dalam *endpoint*. Cek *endpoint* dan perhatikan bahwa IP sama dengan *Pod* yang dibuat di langkah pertama:
|
||||
Seperti yang disebutkan sebelumnya, sebuah *Service* berisi sekumpulan *Pod*. *Pod* diekspos melalui `endpoints`. *Service selector* akan mengecek *Pod* secara terus-menerus dan hasilnya akan dikirim (*POSTed*) ke objek *endpoint* yang bernama `my-nginx`. Saat sebuah *Pod* mati, *IP Pod* di dalam *endpoint* tersebut akan otomatis dihapus, dan *Pod* baru yang sesuai dengan *Service selector* akan otomatis ditambahkan ke dalam *endpoint*. Cek *endpoint* dan perhatikan bahwa IP sama dengan *Pod* yang dibuat di langkah pertama:
|
||||
|
||||
```shell
|
||||
kubectl describe svc my-nginx
|
||||
@@ -111,7 +111,7 @@ Kamu sekarang dapat melakukan *curl* ke dalam *nginx Service* di `<CLUSTER-IP>:<
|
||||
|
||||
## Mengakses Service
|
||||
|
||||
Kubernetes mendukung 2 mode utama untuk menemukan sebuah *Service* - variabel *environment* dan *DNS*.
|
||||
Kubernetes mendukung 2 mode utama untuk menemukan sebuah *Service* - variabel *environment* dan *DNS*.
|
||||
*DNS* membutuhkan [tambahan CoreDNS di dalam kluster](http://releases.k8s.io/{{< param "githubbranch" >}}/cluster/addons/dns/coredns).
|
||||
|
||||
### Variabel Environment
|
||||
@@ -197,7 +197,7 @@ Hingga sekarang kita hanya mengakses *nginx* server dari dalam kluster. Sebelum
|
||||
* Sebuah [secret](/docs/concepts/configuration/secret/) yang membuat setifikat tersebut dapat diakses oleh *pod*
|
||||
|
||||
|
||||
Kamu dapat melihat semua itu di [contoh nginx https](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/https-nginx/). Contoh ini mengaharuskan kamu melakukan instalasi *go* dan *make*. Jika kamu tidak ingin melakukan instalasi tersebut, ikuti langkah-langkah manualnya nanti, singkatnya:
|
||||
Kamu dapat melihat semua itu di [contoh nginx https](https://github.com/kubernetes/examples/tree/{{< param "githubbranch" >}}/staging/https-nginx/). Contoh ini mengaharuskan kamu melakukan instalasi *go* dan *make*. Jika kamu tidak ingin melakukan instalasi tersebut, ikuti langkah-langkah manualnya nanti, singkatnya:
|
||||
|
||||
```shell
|
||||
make keys secret KEY=/tmp/nginx.key CERT=/tmp/nginx.crt SECRET=/tmp/secret.json
|
||||
@@ -215,7 +215,7 @@ default-token-il9rc kubernetes.io/service-account-token 1 1d
|
||||
nginxsecret Opaque 2 1m
|
||||
```
|
||||
|
||||
Berikut ini adalah langkah-langkah manual yang harus diikuti jika kamu mengalami masalah menjalankan *make* (pada windows contohnya):
|
||||
Berikut ini adalah langkah-langkah manual yang harus diikuti jika kamu mengalami masalah menjalankan *make* (pada windows contohnya):
|
||||
|
||||
```shell
|
||||
#membuat sebuah key-pair public private
|
||||
|
||||
@@ -6,64 +6,64 @@ weight: 40
|
||||
|
||||
{{% capture overview %}}
|
||||
|
||||
Agar Ingress dapat bekerja sebagaimana mestinya,
|
||||
Agar Ingress dapat bekerja sebagaimana mestinya,
|
||||
sebuah kluster harus memiliki paling tidak sebuah kontroler Ingress.
|
||||
|
||||
Berbeda dengan kontroler-kontroler lainnya yang dijalankan
|
||||
sebagai bagian dari *binary* `kube-controller-manager`, kontroler Ingress
|
||||
tidak secara otomatis dijalankan di dalam kluster. Kamu bisa menggunakan
|
||||
laman ini untuk memilih implementasi kontroler Ingress yang kamu pikir
|
||||
paling sesuai dengan kebutuhan kamu.
|
||||
Berbeda dengan kontroler-kontroler lainnya yang dijalankan
|
||||
sebagai bagian dari *binary* `kube-controller-manager`, kontroler Ingress
|
||||
tidak secara otomatis dijalankan di dalam kluster. Kamu bisa menggunakan
|
||||
laman ini untuk memilih implementasi kontroler Ingress yang kamu pikir
|
||||
paling sesuai dengan kebutuhan kamu.
|
||||
|
||||
Kubernetes sebagai sebuah proyek, saat ini, mendukung dan memaintain kontroler-kontroler [GCE](https://git.k8s.io/ingress-gce/README.md) dan
|
||||
[nginx](https://git.k8s.io/ingress-nginx/README.md).
|
||||
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture body %}}
|
||||
|
||||
## Kontroler-kontroler lainnya
|
||||
|
||||
* [Ambassador](https://www.getambassador.io/) *API Gateway* merupakan ingress berbasis [Envoy](https://www.envoyproxy.io)
|
||||
kontroler dengan dukungan [komunitas](https://www.getambassador.io/docs) atau
|
||||
* [Ambassador](https://www.getambassador.io/) *API Gateway* merupakan ingress berbasis [Envoy](https://www.envoyproxy.io)
|
||||
kontroler dengan dukungan [komunitas](https://www.getambassador.io/docs) atau
|
||||
[komersial](https://www.getambassador.io/pro/) dari [Datawire](https://www.datawire.io/).
|
||||
* [AppsCode Inc.](https://appscode.com) menawarkan dukungan dan pemeliharaan untuk ingress berbasis [HAProxy](http://www.haproxy.org/), [Voyager](https://appscode.com/products/voyager).
|
||||
* [Contour](https://github.com/heptio/contour) merupakan ingress berbasis [Envoy](https://www.envoyproxy.io)
|
||||
* [AppsCode Inc.](https://appscode.com) menawarkan dukungan dan pemeliharaan untuk ingress berbasis [HAProxy](http://www.haproxy.org/), [Voyager](https://appscode.com/products/voyager).
|
||||
* [Contour](https://github.com/heptio/contour) merupakan ingress berbasis [Envoy](https://www.envoyproxy.io)
|
||||
yang disediakan dan didukung oleh Heptio.
|
||||
* Citrix menyediakan sebuah [kontroler Ingress](https://github.com/citrix/citrix-k8s-ingress-controller) untuk perangkat keras (MPX), virtualisasi (VPX) dan [kontainerisasi cuma-cuma (CPX) ADC](https://www.citrix.com/products/citrix-adc/cpx-express.html) untuk mesin [*baremetal*](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment/baremetal) dan penyedia layanan [*cloud*](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment) deployments.
|
||||
* F5 Networks menyediakan [dukungan dan pemeliharaan](https://support.f5.com/csp/article/K86859508)
|
||||
untuk [kontroler F5 BIG-IP bagi Kubernetes](http://clouddocs.f5.com/products/connectors/k8s-bigip-ctlr/latest).
|
||||
* [Gloo](https://gloo.solo.io) adalah sebuah proyek kontroler Ingress *open source* berbasis [Envoy](https://www.envoyproxy.io) yang menawarkan fungsionalitas *API Gateway* dengan dukungan *enterprise* dari [solo.io](https://www.solo.io).
|
||||
* [Gloo](https://gloo.solo.io) adalah sebuah proyek kontroler Ingress *open source* berbasis [Envoy](https://www.envoyproxy.io) yang menawarkan fungsionalitas *API Gateway* dengan dukungan *enterprise* dari [solo.io](https://www.solo.io).
|
||||
* Kontroler Ingress berbasis [HAProxy](http://www.haproxy.org/)
|
||||
[jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress) yang disebutkan di dalam artikel
|
||||
[jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress) yang disebutkan di dalam artikel
|
||||
[HAProxy Ingress Controller for Kubernetes](https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/).
|
||||
[HAProxy Technologies](https://www.haproxy.com/) menawarkan dukungan dan pemeliharaan bagi HAProxy Enterprise dan
|
||||
Ingress kontroler [jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress).
|
||||
* Kontroler Ingress berbasis [Istio](https://istio.io/)
|
||||
* Kontroler Ingress berbasis [Istio](https://istio.io/)
|
||||
[Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/).
|
||||
* [Kong](https://konghq.com/) menawarkan dukungan dan pemeliharaan [komunitas](https://discuss.konghq.com/c/kubernetes) atau
|
||||
[komersial](https://konghq.com/kong-enterprise/)
|
||||
[komersial](https://konghq.com/kong-enterprise/)
|
||||
[Kontroler Ingress untuk Kubernetes](https://github.com/Kong/kubernetes-ingress-controller).
|
||||
* [NGINX, Inc.](https://www.nginx.com/) menawarkan dukungan dan pemeliharaan [Kontroler Ingress NGINX untuk Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller).
|
||||
* [Traefik](https://github.com/containous/traefik) adalah sebuah kontroler Ingress yang menyediakan semua fitur secara lengkap (fully featured)
|
||||
([Let's Encrypt](https://letsencrypt.org), *secrets*, *http2*, *websocket*), dengan tambahan dukungan
|
||||
* [Traefik](https://github.com/containous/traefik) adalah sebuah kontroler Ingress yang menyediakan semua fitur secara lengkap (fully featured)
|
||||
([Let's Encrypt](https://letsencrypt.org), *secrets*, *http2*, *websocket*), dengan tambahan dukungan
|
||||
komersial oleh [Containous](https://containo.us/services).
|
||||
|
||||
## Menggunakan beberapa jenis kontroler Ingress sekaligus
|
||||
|
||||
Kamu dapat melakukan *deploy* [berapa pun banyaknya kontroler Ingress](https://git.k8s.io/ingress-nginx/docs/user-guide/multiple-ingress.md#multiple-ingress-controllers)
|
||||
dalam sebuah kluster. Jika kamu ingin membuat Ingress, kamu tinggal memberikan anotasi setiap Ingress sesuai dengan
|
||||
[`ingress.class`](https://git.k8s.io/ingress-gce/docs/faq/README.md#how-do-i-run-multiple-ingress-controllers-in-the-same-cluster)
|
||||
yang sesuai untuk menandai kontroler Ingress mana yang digunakan jika terdapat lebih dari satu kontroler Ingress yang ada di
|
||||
Kamu dapat melakukan *deploy* [berapa pun banyaknya kontroler Ingress](https://git.k8s.io/ingress-nginx/docs/user-guide/multiple-ingress.md#multiple-ingress-controllers)
|
||||
dalam sebuah kluster. Jika kamu ingin membuat Ingress, kamu tinggal memberikan anotasi setiap Ingress sesuai dengan
|
||||
[`ingress.class`](https://git.k8s.io/ingress-gce/docs/faq/README.md#how-do-i-run-multiple-ingress-controllers-in-the-same-cluster)
|
||||
yang sesuai untuk menandai kontroler Ingress mana yang digunakan jika terdapat lebih dari satu kontroler Ingress yang ada di
|
||||
kluster kamu.
|
||||
|
||||
Apabila kamu tidak mendefinisikan `class` yang dipakai, penyedia layanan *cloud* kamu akan menggunakan kontroler Ingress *default* yang mereka miliki.
|
||||
|
||||
Idealnya, semua ingress harus memenuhi spesifikasi ini, tetapi berbagai jenis
|
||||
kontroler Ingress bisa saja memiliki sedikit perbedaan cara kerja.
|
||||
Idealnya, semua ingress harus memenuhi spesifikasi ini, tetapi berbagai jenis
|
||||
kontroler Ingress bisa saja memiliki sedikit perbedaan cara kerja.
|
||||
|
||||
{{< note >}}
|
||||
Pastikan kamu sudah terlebih dahulu memahami dokumentasi kontroler Ingress yang akan kamu pakai sebelum memutuskan untuk memakai kontroler tersebut.
|
||||
Pastikan kamu sudah terlebih dahulu memahami dokumentasi kontroler Ingress yang akan kamu pakai sebelum memutuskan untuk memakai kontroler tersebut.
|
||||
{{< /note >}}
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
@@ -11,17 +11,17 @@ weight: 40
|
||||
{{% capture body %}}
|
||||
## Terminologi
|
||||
|
||||
Untuk memudahkan, di awal akan dijelaskan beberapa terminologi yang sering dipakai:
|
||||
Untuk memudahkan, di awal akan dijelaskan beberapa terminologi yang sering dipakai:
|
||||
|
||||
* Node: Sebuah mesin fisik atau virtual yang berada di dalam kluster Kubernetes.
|
||||
* Kluster: Sekelompok node yang merupakan *resource* komputasi primer yang diatur oleh Kubernetes, biasanya diproteksi dari internet dengan menggunakan *firewall*.
|
||||
* Node: Sebuah mesin fisik atau virtual yang berada di dalam kluster Kubernetes.
|
||||
* Kluster: Sekelompok node yang merupakan *resource* komputasi primer yang diatur oleh Kubernetes, biasanya diproteksi dari internet dengan menggunakan *firewall*.
|
||||
* *Edge router*: Sebuah *router* mengatur *policy firewall* pada kluster kamu. *Router* ini bisa saja berupa *gateway* yang diatur oleh penyedia layanan *cloud* maupun perangkat keras.
|
||||
* Jaringan kluster: Seperangkat *links* baik logis maupus fisik, yang memfasilitasi komunikasi di dalam kluster berdasarkan [model jaringan Kubernetes](/docs/concepts/cluster-administration/networking/).
|
||||
* *Service*: Sebuah [*Service*](/docs/concepts/services-networking/service/) yang mengidentifikasi beberapa *Pod* dengan menggunakan *selector label*. Secara umum, semua *Service* diasumsikan hanya memiliki IP virtual yang hanya dapat diakses dari dalam jaringan kluster.
|
||||
* *Service*: Sebuah [*Service*](/docs/concepts/services-networking/service/) yang mengidentifikasi beberapa *Pod* dengan menggunakan *selector label*. Secara umum, semua *Service* diasumsikan hanya memiliki IP virtual yang hanya dapat diakses dari dalam jaringan kluster.
|
||||
|
||||
## Apakah *Ingress* itu?
|
||||
|
||||
Ingress ditambahkan sejak Kubernetes v1.1, mengekspos rute HTTP dan HTTPS ke berbagai
|
||||
Ingress ditambahkan sejak Kubernetes v1.1, mengekspos rute HTTP dan HTTPS ke berbagai
|
||||
{{< link text="services" url="/docs/concepts/services-networking/service/" >}} di dalam kluster.
|
||||
Mekanisme *routing* trafik dikendalikan oleh aturan-aturan yang didefinisikan pada *Ingress*.
|
||||
|
||||
@@ -33,10 +33,10 @@ Mekanisme *routing* trafik dikendalikan oleh aturan-aturan yang didefinisikan pa
|
||||
[ Services ]
|
||||
```
|
||||
|
||||
Sebuah *Ingress* dapat dikonfigurasi agar berbagai *Service* memiliki URL yang dapat diakses dari eksternal (luar kluster), melakukan *load balance* pada trafik, terminasi SSL, serta Virtual Host berbasis Nama.
|
||||
Sebuah *Ingress* dapat dikonfigurasi agar berbagai *Service* memiliki URL yang dapat diakses dari eksternal (luar kluster), melakukan *load balance* pada trafik, terminasi SSL, serta Virtual Host berbasis Nama.
|
||||
Sebuah [kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) bertanggung jawab untuk menjalankan fungsi Ingress yaitu sebagai *loadbalancer*, meskipun dapat juga digunakan untuk mengatur *edge router* atau *frontend* tambahan untuk menerima trafik.
|
||||
|
||||
Sebuah *Ingress* tidak mengekspos sembarang *port* atau protokol. Mengekspos *Service* untuk protokol selain HTTP ke HTTPS internet biasanya dilakukan dengan menggunakan
|
||||
Sebuah *Ingress* tidak mengekspos sembarang *port* atau protokol. Mengekspos *Service* untuk protokol selain HTTP ke HTTPS internet biasanya dilakukan dengan menggunakan
|
||||
*service* dengan tipe [Service.Type=NodePort](/docs/concepts/services-networking/service/#nodeport) atau
|
||||
[Service.Type=LoadBalancer](/docs/concepts/services-networking/service/#loadbalancer).
|
||||
|
||||
@@ -44,27 +44,27 @@ Sebuah *Ingress* tidak mengekspos sembarang *port* atau protokol. Mengekspos *Se
|
||||
|
||||
{{< feature-state for_k8s_version="v1.1" state="beta" >}}
|
||||
|
||||
Sebelum kamu mulai menggunakan *Ingress*, ada beberapa hal yang perlu kamu ketahui sebelumnya. *Ingress* merupakan *resource* dengan tipe beta.
|
||||
Sebelum kamu mulai menggunakan *Ingress*, ada beberapa hal yang perlu kamu ketahui sebelumnya. *Ingress* merupakan *resource* dengan tipe beta.
|
||||
|
||||
{{< note >}}
|
||||
Kamu harus terlebih dahulu memiliki [kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) untuk dapat memenuhi *Ingress*. Membuat sebuah *Ingress* tanpa adanya kontroler *Ingres* tidak akan berdampak apa pun.
|
||||
Kamu harus terlebih dahulu memiliki [kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) untuk dapat memenuhi *Ingress*. Membuat sebuah *Ingress* tanpa adanya kontroler *Ingres* tidak akan berdampak apa pun.
|
||||
{{< /note >}}
|
||||
|
||||
GCE/Google Kubernetes Engine melakukan deploy kontroler *Ingress* pada *master*. Perhatikan laman berikut
|
||||
[keterbatasan versi beta](https://github.com/kubernetes/ingress-gce/blob/master/BETA_LIMITATIONS.md#glbc-beta-limitations)
|
||||
kontroler ini jika kamu menggunakan GCE/GKE.
|
||||
|
||||
Jika kamu menggunakan *environment* selain GCE/Google Kubernetes Engine, kemungkinan besar kamu harus
|
||||
[melakukan proses deploy kontroler ingress kamu sendiri](https://kubernetes.github.io/ingress-nginx/deploy/). Terdapat beberapa jenis
|
||||
Jika kamu menggunakan *environment* selain GCE/Google Kubernetes Engine, kemungkinan besar kamu harus
|
||||
[melakukan proses deploy kontroler ingress kamu sendiri](https://kubernetes.github.io/ingress-nginx/deploy/). Terdapat beberapa jenis
|
||||
[kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) yang bisa kamu pilih.
|
||||
|
||||
### Sebelum kamu memulai
|
||||
|
||||
Secara ideal, semua kontroler Ingress harus memenuhi spesifikasi ini, tetapi beberapa
|
||||
kontroler beroperasi sedikit berbeda satu sama lain.
|
||||
Secara ideal, semua kontroler Ingress harus memenuhi spesifikasi ini, tetapi beberapa
|
||||
kontroler beroperasi sedikit berbeda satu sama lain.
|
||||
|
||||
{{< note >}}
|
||||
Pastikan kamu sudah terlebih dahulu memahami dokumentasi kontroler Ingress yang akan kamu pakai sebelum memutuskan untuk memakai kontroler tersebut.
|
||||
Pastikan kamu sudah terlebih dahulu memahami dokumentasi kontroler Ingress yang akan kamu pakai sebelum memutuskan untuk memakai kontroler tersebut.
|
||||
{{< /note >}}
|
||||
|
||||
## *Resource* Ingress
|
||||
@@ -88,48 +88,48 @@ spec:
|
||||
servicePort: 80
|
||||
```
|
||||
|
||||
Seperti layaknya *resource* Kubernetes yang lain, sebuah Ingress membutuhkan *field* `apiVersion`, `kind`, dan `metadata`.
|
||||
Seperti layaknya *resource* Kubernetes yang lain, sebuah Ingress membutuhkan *field* `apiVersion`, `kind`, dan `metadata`.
|
||||
Untuk informasi umum soal bagaimana cara bekerja dengan menggunakan file konfigurasi, silahkan merujuk pada [melakukan deploy aplikasi](/docs/tasks/run-application/run-stateless-application-deployment/), [konfigurasi kontainer](/docs/tasks/configure-pod-container/configure-pod-configmap/), [mengatur *resource*](/docs/concepts/cluster-administration/manage-deployment/).
|
||||
Ingress seringkali menggunakan anotasi untuk melakukan konfigurasi beberapa opsi yang ada bergantung pada kontroler Ingress yang digunakan, sebagai contohnya
|
||||
adalah [anotasi rewrite-target](https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md).
|
||||
[Kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) yang berbeda memiliki jenis anotasi yang berbeda. Pastikan kamu sudah terlebih dahulu memahami dokumentasi
|
||||
kontroler Ingress yang akan kamu pakai untuk mengetahui jenis anotasi apa sajakah yang disediakan.
|
||||
[Kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) yang berbeda memiliki jenis anotasi yang berbeda. Pastikan kamu sudah terlebih dahulu memahami dokumentasi
|
||||
kontroler Ingress yang akan kamu pakai untuk mengetahui jenis anotasi apa sajakah yang disediakan.
|
||||
|
||||
[Spesifikasi](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status) Ingress
|
||||
memiliki segala informasi yang dibutuhkan untuk melakukan proses konfigurasi *loadbalancer* atau server proxy. Hal yang terpenting adalah
|
||||
bagian inilah yang mengandung semua *rules* yang nantinya akan digunakan untuk menyesuaikan trafik yang masuk. *Resource* Ingress hanya menyediakan
|
||||
memiliki segala informasi yang dibutuhkan untuk melakukan proses konfigurasi *loadbalancer* atau server proxy. Hal yang terpenting adalah
|
||||
bagian inilah yang mengandung semua *rules* yang nantinya akan digunakan untuk menyesuaikan trafik yang masuk. *Resource* Ingress hanya menyediakan
|
||||
fitur *rules* untuk mengarahkan trafik dengan protokol HTTP.
|
||||
|
||||
### *Rule* Ingress
|
||||
|
||||
Setiap *rule* HTTP mengandung informasi berikut:
|
||||
|
||||
* *Host* opsional. Di dalam contoh ini, tidak ada *host* yang diberikan, dengan kata lain, semua *rules* berlaku untuk *inbound*
|
||||
* *Host* opsional. Di dalam contoh ini, tidak ada *host* yang diberikan, dengan kata lain, semua *rules* berlaku untuk *inbound*
|
||||
trafik HTTP bagi alamat IP yang dispesifikasikan. JIka sebuah *host* dispesifikasikan (misalnya saja,
|
||||
foo.bar.com), maka *rules* yang ada akan berlaku bagi *host* tersebut.
|
||||
* Sederetan *path* (misalnya, /testpath), setiap *path* ini akan memiliki pasangan berupa sebuah *backend* yang didefinisikan dengan `serviceName`
|
||||
dan `servicePort`. Baik *host* dan *path* harus sesuai dengan konten dari *request* yang masuk sebelum
|
||||
*loadbalancer* akan mengarahkan trafik pada *service* yang sesuai.
|
||||
dan `servicePort`. Baik *host* dan *path* harus sesuai dengan konten dari *request* yang masuk sebelum
|
||||
*loadbalancer* akan mengarahkan trafik pada *service* yang sesuai.
|
||||
* Suatu *backend* adalah kombinasi *service* dan *port* seperti yang dideskripsikan di
|
||||
[dokumentasi *Service*](/docs/concepts/services-networking/service/). *Request* HTTP (dan HTTPS) yang sesuai dengan
|
||||
[dokumentasi *Service*](/docs/concepts/services-networking/service/). *Request* HTTP (dan HTTPS) yang sesuai dengan
|
||||
*host* dan *path* yang ada pada *rule* akan diteruskan pada *backend* terkait.
|
||||
|
||||
*Backend default* seringkali dikonfigurasi pada kontroler kontroler Ingress, tugas *backend default* ini adalah
|
||||
mengarahkan *request* yang tidak sesuai dengan *path* yang tersedia pada spesifikasi.
|
||||
*Backend default* seringkali dikonfigurasi pada kontroler kontroler Ingress, tugas *backend default* ini adalah
|
||||
mengarahkan *request* yang tidak sesuai dengan *path* yang tersedia pada spesifikasi.
|
||||
|
||||
### *Backend Default*
|
||||
|
||||
Sebuah Ingress yang tidak memiliki *rules* akan mengarahkan semua trafik pada sebuah *backend default*. *Backend default* inilah yang
|
||||
Sebuah Ingress yang tidak memiliki *rules* akan mengarahkan semua trafik pada sebuah *backend default*. *Backend default* inilah yang
|
||||
biasanya bisa dimasukkan sebagai salah satu opsi konfigurasi dari [kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) dan tidak dimasukkan dalam spesifikasi *resource* Ingress.
|
||||
|
||||
Jika tidak ada *host* atau *path* yang sesuai dengan *request* HTTP pada objek Ingress, maka trafik tersebut
|
||||
Jika tidak ada *host* atau *path* yang sesuai dengan *request* HTTP pada objek Ingress, maka trafik tersebut
|
||||
akan diarahkan pada *backend default*.
|
||||
|
||||
## Jenis Ingress
|
||||
|
||||
### Ingress dengan satu Service
|
||||
|
||||
Terdapat konsep Kubernetes yang memungkinkan kamu untuk mengekspos sebuah Service, lihat [alternatif lain](#alternatif-lain).
|
||||
Terdapat konsep Kubernetes yang memungkinkan kamu untuk mengekspos sebuah Service, lihat [alternatif lain](#alternatif-lain).
|
||||
Kamu juga bisa membuat spesifikasi Ingress dengan *backend default* yang tidak memiliki *rules*.
|
||||
|
||||
{{< codenew file="service/networking/ingress.yaml" >}}
|
||||
@@ -145,18 +145,18 @@ NAME HOSTS ADDRESS PORTS AGE
|
||||
test-ingress * 107.178.254.228 80 59s
|
||||
```
|
||||
|
||||
Dimana `107.178.254.228` merupakan alamat IP yang dialokasikan oleh kontroler Ingress untuk
|
||||
Dimana `107.178.254.228` merupakan alamat IP yang dialokasikan oleh kontroler Ingress untuk
|
||||
memenuhi Ingress ini.
|
||||
|
||||
{{< note >}}
|
||||
Kontroler Ingress dan *load balancer* membutuhkan waktu sekitar satu hingga dua menit untuk mengalokasikan alamat IP.
|
||||
Kontroler Ingress dan *load balancer* membutuhkan waktu sekitar satu hingga dua menit untuk mengalokasikan alamat IP.
|
||||
Hingga alamat IP berhasil dialokasikan, kamu akan melihat tampilan kolom `ADDRESS` sebagai `<pending>`.
|
||||
{{< /note >}}
|
||||
|
||||
### *Fanout* sederhana
|
||||
|
||||
Sebuah konfigurasi fanout akan melakukan *route* trafik dari sebuah alamat IP ke banyak Service,
|
||||
berdasarkan URI HTTP yang diberikan. Sebuah Ingress memungkinkan kamu untuk memiliki jumlah *loadbalancer* minimum.
|
||||
Sebuah konfigurasi fanout akan melakukan *route* trafik dari sebuah alamat IP ke banyak Service,
|
||||
berdasarkan URI HTTP yang diberikan. Sebuah Ingress memungkinkan kamu untuk memiliki jumlah *loadbalancer* minimum.
|
||||
Contohnya, konfigurasi seperti di bawah ini:
|
||||
|
||||
```shell
|
||||
@@ -214,17 +214,17 @@ Events:
|
||||
```
|
||||
|
||||
Kontroler Ingress akan menyediakan *loadbalancer* (implementasinya tergantung dari jenis Ingress yang digunakan), selama *service-service* yang didefinisikan (`s1`, `s2`) ada.
|
||||
Apabila *Ingress* selesai dibuat, maka kamu dapat melihat alamat IP dari berbagai *loadbalancer*
|
||||
Apabila *Ingress* selesai dibuat, maka kamu dapat melihat alamat IP dari berbagai *loadbalancer*
|
||||
pada kolom `address`.
|
||||
|
||||
{{< note >}}
|
||||
Kamu mungkin saja membutuhkan konfigurasi default-http-backend [Service](/docs/concepts/services-networking/service/)
|
||||
Kamu mungkin saja membutuhkan konfigurasi default-http-backend [Service](/docs/concepts/services-networking/service/)
|
||||
bergantung pada [kontroler Ingress](/docs/concepts/services-networking/ingress-controllers) yang kamu pakai.
|
||||
{{< /note >}}
|
||||
|
||||
### Virtual Host berbasis Nama
|
||||
|
||||
Virtual Host berbasis Nama memungkinkan mekanisme *routing* berdasarkan trafik HTTP ke beberapa *host name* dengan alamat IP yang sama.
|
||||
Virtual Host berbasis Nama memungkinkan mekanisme *routing* berdasarkan trafik HTTP ke beberapa *host name* dengan alamat IP yang sama.
|
||||
|
||||
```none
|
||||
foo.bar.com --| |-> foo.bar.com s1:80
|
||||
@@ -232,7 +232,7 @@ foo.bar.com --| |-> foo.bar.com s1:80
|
||||
bar.foo.com --| |-> bar.foo.com s2:80
|
||||
```
|
||||
|
||||
Ingress di bawah ini memberikan perintah pada *loadbalancer* untuk melakukan mekanisme *routing* berdasarkan
|
||||
Ingress di bawah ini memberikan perintah pada *loadbalancer* untuk melakukan mekanisme *routing* berdasarkan
|
||||
[header host](https://tools.ietf.org/html/rfc7230#section-5.4).
|
||||
|
||||
```yaml
|
||||
@@ -256,11 +256,11 @@ spec:
|
||||
servicePort: 80
|
||||
```
|
||||
|
||||
Jika kamu membuat sebuah Ingress tanpa mendefinisikan *host* apa pun, maka
|
||||
trafik web ke alamat IP dari kontroler Ingress tetap dapat dilakukan tanpa harus
|
||||
menyesuaikan aturan *name based virtual host*. Sebagai contoh,
|
||||
*resource* Ingress di bawah ini akan melakukan pemetaan trafik
|
||||
dari `first.bar.com` ke `service1`, `second.foo.com` ke `service2`, dan trafik lain
|
||||
Jika kamu membuat sebuah Ingress tanpa mendefinisikan *host* apa pun, maka
|
||||
trafik web ke alamat IP dari kontroler Ingress tetap dapat dilakukan tanpa harus
|
||||
menyesuaikan aturan *name based virtual host*. Sebagai contoh,
|
||||
*resource* Ingress di bawah ini akan melakukan pemetaan trafik
|
||||
dari `first.bar.com` ke `service1`, `second.foo.com` ke `service2`, dan trafik lain
|
||||
ke alamat IP tanpa *host name* yang didefinisikan di dalam *request* (yang tidak memiliki *request header*) ke `service3`.
|
||||
|
||||
```yaml
|
||||
@@ -292,11 +292,11 @@ spec:
|
||||
### TLS
|
||||
|
||||
Kamu dapat mengamankan *Ingress* yang kamu miliki dengan memberikan spesifikasi [secret](/docs/concepts/configuration/secret)
|
||||
yang mengandung *private key* dan sertifikat TLS. Saat ini, Ingress hanya
|
||||
memiliki fitur untuk melakukan konfigurasi *single TLS port*, yaitu 443, serta melakukan terminasi TLS.
|
||||
yang mengandung *private key* dan sertifikat TLS. Saat ini, Ingress hanya
|
||||
memiliki fitur untuk melakukan konfigurasi *single TLS port*, yaitu 443, serta melakukan terminasi TLS.
|
||||
Jika *section* TLS pada Ingress memiliki spesifikasi *host* yang berbeda,
|
||||
*rules* yang ada akan dimultiplekskan pada *port* yang sama berdasarkan
|
||||
*hostname* yang dispesifikasikan melalui ekstensi TLS SNI. *Secret* TLS harus memiliki
|
||||
*rules* yang ada akan dimultiplekskan pada *port* yang sama berdasarkan
|
||||
*hostname* yang dispesifikasikan melalui ekstensi TLS SNI. *Secret* TLS harus memiliki
|
||||
`key` bernama `tls.crt` dan `tls.key` yang mengandung *private key* dan sertifikat TLS, contohnya:
|
||||
|
||||
```yaml
|
||||
@@ -311,9 +311,9 @@ metadata:
|
||||
type: kubernetes.io/tls
|
||||
```
|
||||
|
||||
Ketika kamu menambahkan *secret* pada Ingress maka kontroler Ingress akan memberikan perintah untuk
|
||||
memproteksi *channel* dari klien ke *loadbalancer* menggunakan TLS.
|
||||
Kamu harus memastikan *secret* TLS yang digunakan memiliki sertifikat yang mengandung
|
||||
Ketika kamu menambahkan *secret* pada Ingress maka kontroler Ingress akan memberikan perintah untuk
|
||||
memproteksi *channel* dari klien ke *loadbalancer* menggunakan TLS.
|
||||
Kamu harus memastikan *secret* TLS yang digunakan memiliki sertifikat yang mengandung
|
||||
CN untuk `sslexample.foo.com`.
|
||||
|
||||
```yaml
|
||||
@@ -337,27 +337,27 @@ spec:
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
Terdapat perbedaan di antara beberapa fitur TLS
|
||||
yang disediakan oleh berbagai kontroler Ingress. Perhatikan dokumentasi
|
||||
Terdapat perbedaan di antara beberapa fitur TLS
|
||||
yang disediakan oleh berbagai kontroler Ingress. Perhatikan dokumentasi
|
||||
[nginx](https://git.k8s.io/ingress-nginx/README.md#https),
|
||||
[GCE](https://git.k8s.io/ingress-gce/README.md#frontend-https), atau
|
||||
kontroler Ingress spesifik *platform* lainnya untuk memahami cara kerja TLS
|
||||
[GCE](https://git.k8s.io/ingress-gce/README.md#frontend-https), atau
|
||||
kontroler Ingress spesifik *platform* lainnya untuk memahami cara kerja TLS
|
||||
pada **environment** yang kamu miliki.
|
||||
{{< /note >}}
|
||||
|
||||
### *Loadbalancing*
|
||||
|
||||
Sebuah kontroler Ingress sudah dibekali dengan beberapa *policy* terkait mekanisme *load balance*
|
||||
Sebuah kontroler Ingress sudah dibekali dengan beberapa *policy* terkait mekanisme *load balance*
|
||||
yang nantinya akan diterapkan pada semua Ingress, misalnya saja algoritma *load balancing*, *backend
|
||||
weight scheme*, dan lain sebagainya. Beberapa konsep *load balance* yang lebih *advance*
|
||||
(misalnya saja *persistent sessions*, *dynamic weights*) belum diekspos melalui Ingress.
|
||||
Meskipun begitu, kamu masih bisa menggunakan fitur ini melalui
|
||||
weight scheme*, dan lain sebagainya. Beberapa konsep *load balance* yang lebih *advance*
|
||||
(misalnya saja *persistent sessions*, *dynamic weights*) belum diekspos melalui Ingress.
|
||||
Meskipun begitu, kamu masih bisa menggunakan fitur ini melalui
|
||||
[loadbalancer service](https://github.com/kubernetes/ingress-nginx).
|
||||
|
||||
Perlu diketahui bahwa meskipun *health check* tidak diekspos secara langsung
|
||||
melalui Ingress, terdapat beberapa konsep di Kubernetes yang sejalan dengan hal ini, misalnya
|
||||
Perlu diketahui bahwa meskipun *health check* tidak diekspos secara langsung
|
||||
melalui Ingress, terdapat beberapa konsep di Kubernetes yang sejalan dengan hal ini, misalnya
|
||||
[readiness probes](/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)
|
||||
yang memungkinkan kamu untuk memperoleh hasil yang sama. Silahkan pelajari lebih lanjut dokumentasi
|
||||
yang memungkinkan kamu untuk memperoleh hasil yang sama. Silahkan pelajari lebih lanjut dokumentasi
|
||||
kontroler yang kamu pakai untuk mengetahui bagaimana implementasi *health checks* pada kontroler yang kamu pilih ([nginx](https://git.k8s.io/ingress-nginx/README.md),
|
||||
[GCE](https://git.k8s.io/ingress-gce/README.md#health-checks)).
|
||||
|
||||
@@ -391,9 +391,9 @@ Events:
|
||||
kubectl edit ingress test
|
||||
```
|
||||
|
||||
Sebuah editor akan muncul dan menampilkan konfigurasi Ingress kamu
|
||||
dalam format YAML apabila kamu telah menjalankan perintah di atas.
|
||||
Ubah untuk menambahkan *host*:
|
||||
Sebuah editor akan muncul dan menampilkan konfigurasi Ingress kamu
|
||||
dalam format YAML apabila kamu telah menjalankan perintah di atas.
|
||||
Ubah untuk menambahkan *host*:
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
@@ -442,21 +442,21 @@ Events:
|
||||
Normal ADD 45s loadbalancer-controller default/test
|
||||
```
|
||||
|
||||
Kamu juga dapat mengubah Ingress dengan menggunakan perintah `kubectl replace -f` pada file konfigurasi
|
||||
Kamu juga dapat mengubah Ingress dengan menggunakan perintah `kubectl replace -f` pada file konfigurasi
|
||||
Ingress yang ingin diubah.
|
||||
|
||||
## Mekanisme *failing* pada beberapa zona *availability*
|
||||
|
||||
Teknik untuk menyeimbangkan persebaran trafik pada *failure domain* berbeda antar penyedia layanan *cloud*.
|
||||
Kamu dapat mempelajari dokumentasi yang relevan bagi [kontoler Ingress](/docs/concepts/services-networking/ingress-controllers)
|
||||
Kamu dapat mempelajari dokumentasi yang relevan bagi [kontoler Ingress](/docs/concepts/services-networking/ingress-controllers)
|
||||
untuk informasi yang lebih detail. Kamu juga dapat mempelajari [dokumentasi federasi](/docs/concepts/cluster-administration/federation/)
|
||||
untuk informasi lebih detail soal bagaimana melakukan *deploy* untuk federasi kluster.
|
||||
untuk informasi lebih detail soal bagaimana melakukan *deploy* untuk federasi kluster.
|
||||
|
||||
## Pengembangan selanjutnya
|
||||
|
||||
Silahkan amati [SIG Network](https://github.com/kubernetes/community/tree/master/sig-network)
|
||||
untuk detail lebih lanjut mengenai perubahan Ingress dan *resource* terkait lainnya. Kamu juga bisa melihat
|
||||
[repositori Ingress](https://github.com/kubernetes/ingress/tree/master) untuk informasi yang lebih detail
|
||||
untuk detail lebih lanjut mengenai perubahan Ingress dan *resource* terkait lainnya. Kamu juga bisa melihat
|
||||
[repositori Ingress](https://github.com/kubernetes/ingress/tree/master) untuk informasi yang lebih detail
|
||||
soal perubahan berbagai kontroler.
|
||||
|
||||
## Alternatif lain
|
||||
|
||||
@@ -9,7 +9,7 @@ weight: 50
|
||||
{{% capture overview %}}
|
||||
Sebuah NetworkPolicy adalah spesifikasi dari sekelompok Pod atau _endpoint_ yang diizinkan untuk saling berkomunikasi.
|
||||
|
||||
`NetworkPolicy` menggunakan label untuk memilih Pod serta mendefinisikan serangkaian _rule_ yang digunakan
|
||||
`NetworkPolicy` menggunakan label untuk memilih Pod serta mendefinisikan serangkaian _rule_ yang digunakan
|
||||
untuk mendefinisikan trafik yang diizinkan untuk suatu Pod tertentu.
|
||||
|
||||
{{% /capture %}}
|
||||
@@ -17,18 +17,18 @@ untuk mendefinisikan trafik yang diizinkan untuk suatu Pod tertentu.
|
||||
{{% capture body %}}
|
||||
## Prasyarat
|
||||
|
||||
NetworkPolicy diimplementasikan dengan menggunakan _plugin_ jaringan,
|
||||
dengan demikian kamu harus memiliki penyedia jaringan yang mendukung `NetworkPolicy` -
|
||||
membuat _resource_ tanpa adanya _controller_ tidak akan berdampak apa pun.
|
||||
NetworkPolicy diimplementasikan dengan menggunakan _plugin_ jaringan,
|
||||
dengan demikian kamu harus memiliki penyedia jaringan yang mendukung `NetworkPolicy` -
|
||||
membuat _resource_ tanpa adanya _controller_ tidak akan berdampak apa pun.
|
||||
|
||||
## Pod yang terisolasi dan tidak terisolasi
|
||||
|
||||
Secara _default_, Pod bersifat tidak terisolasi; Pod-Pod tersebut
|
||||
Secara _default_, Pod bersifat tidak terisolasi; Pod-Pod tersebut
|
||||
menerima trafik dari _resource_ apa pun.
|
||||
|
||||
Pod menjadi terisolasi apabila terdapat `NetworkPolicy` yang dikenakan pada Pod-Pod tersebut.
|
||||
Apabila terdapat `NetworkPolicy` di dalam _namespace_ yang dikenakan pada suatu Pod, Pod tersebut
|
||||
akan menolak koneksi yang tidak diizinkan `NetworkPolicy`. (Pod lain dalam _namespace_
|
||||
Pod menjadi terisolasi apabila terdapat `NetworkPolicy` yang dikenakan pada Pod-Pod tersebut.
|
||||
Apabila terdapat `NetworkPolicy` di dalam _namespace_ yang dikenakan pada suatu Pod, Pod tersebut
|
||||
akan menolak koneksi yang tidak diizinkan `NetworkPolicy`. (Pod lain dalam _namespace_
|
||||
yang tidak dikenakan `NetworkPolicy` akan tetap menerima trafik dari semua _resource_.)
|
||||
|
||||
## _Resource_ `NetworkPolicy`
|
||||
@@ -74,12 +74,12 @@ spec:
|
||||
port: 5978
|
||||
```
|
||||
|
||||
Mengirimkan ini ke API server dengan metode POST tidak akan berdampak apa pun
|
||||
Mengirimkan ini ke API server dengan metode POST tidak akan berdampak apa pun
|
||||
kecuali penyedia jaringan mendukung network policy.
|
||||
|
||||
**_Field-field_ yang bersifat wajib**: Sama dengan seluruh _config_ Kubernetes lainnya, sebuah `NetworkPolicy`
|
||||
membutuhkan _field-field_ `apiVersion`, `kind`, dan `metadata`. Informasi generik mengenai
|
||||
bagaimana bekerja dengan _file_ `config`, dapat dilihat di
|
||||
membutuhkan _field-field_ `apiVersion`, `kind`, dan `metadata`. Informasi generik mengenai
|
||||
bagaimana bekerja dengan _file_ `config`, dapat dilihat di
|
||||
[Konfigurasi Kontainer menggunakan `ConfigMap`](/docs/tasks/configure-pod-container/configure-pod-configmap/),
|
||||
serta [Manajemen Objek](/docs/concepts/overview/object-management-kubectl/overview/).
|
||||
|
||||
@@ -143,37 +143,37 @@ mengandung sebuah elemen `from` yang mengizinkan koneksi dari Pod-Pod dengan lab
|
||||
...
|
||||
```
|
||||
|
||||
mengandung dua elemen pada _array_ `from`, dan mengizinkan koneksi dari Pod pada Namespace lokal dengan label
|
||||
mengandung dua elemen pada _array_ `from`, dan mengizinkan koneksi dari Pod pada Namespace lokal dengan label
|
||||
`role=client`, *atau* dari Pod di _namespace_ apa pun dengan label `user=alice`.
|
||||
|
||||
Ketika kamu merasa ragu, gunakan `kubectl describe` untuk melihat bagaimana Kubernetes
|
||||
Ketika kamu merasa ragu, gunakan `kubectl describe` untuk melihat bagaimana Kubernetes
|
||||
menginterpretasikan _policy_ tersebut.
|
||||
|
||||
**ipBlock**: Ini digunakan untuk memilih _range_ IP CIDR tertentu untuk berperan sebagai
|
||||
_source_ _ingress_ atau destinasi _egress_. Alamat yang digunakan harus merupakan
|
||||
alamat IP eksternal kluster, karena alamat IP Pod bersifat _ephemeral_ dan tidak dapat ditebak.
|
||||
**ipBlock**: Ini digunakan untuk memilih _range_ IP CIDR tertentu untuk berperan sebagai
|
||||
_source_ _ingress_ atau destinasi _egress_. Alamat yang digunakan harus merupakan
|
||||
alamat IP eksternal kluster, karena alamat IP Pod bersifat _ephemeral_ dan tidak dapat ditebak.
|
||||
|
||||
Mekanisme _ingress_ dan _egress_ kluster seringkali membutuhkan mekanisme _rewrite_ alamat IP _source_ dan destinasi
|
||||
paket. Pada kasus-kasus dimana hal ini, tidak dapat dipastikan bahwa apakah hal ini
|
||||
terjadi sebelum atau setelah pemrosesan `NetworkPolicy`, dan perilaku yang ada mungkin saja berbeda
|
||||
untuk kombinasi _plugin_ jaringan, penyedia layanan _cloud_, serta implementasi `Service` yang berbeda.
|
||||
Mekanisme _ingress_ dan _egress_ kluster seringkali membutuhkan mekanisme _rewrite_ alamat IP _source_ dan destinasi
|
||||
paket. Pada kasus-kasus dimana hal ini, tidak dapat dipastikan bahwa apakah hal ini
|
||||
terjadi sebelum atau setelah pemrosesan `NetworkPolicy`, dan perilaku yang ada mungkin saja berbeda
|
||||
untuk kombinasi _plugin_ jaringan, penyedia layanan _cloud_, serta implementasi `Service` yang berbeda.
|
||||
|
||||
Pada _ingress_, artinya bisa saja kamu melakukan _filter_ paket yang masuk berdasarkan `source IP`,
|
||||
sementara di kasus lain "source IP" yang digunakan oleh Network Policy adalah alamat IP `LoadBalancer`,
|
||||
Pada _ingress_, artinya bisa saja kamu melakukan _filter_ paket yang masuk berdasarkan `source IP`,
|
||||
sementara di kasus lain "source IP" yang digunakan oleh Network Policy adalah alamat IP `LoadBalancer`,
|
||||
_node_ dimana Pod berada, dsb.
|
||||
|
||||
Pada _egress_, bisa saja sebuah koneksi dari Pod ke IP `Service` di-_rewrite_ ke IP eksternal kluster
|
||||
Pada _egress_, bisa saja sebuah koneksi dari Pod ke IP `Service` di-_rewrite_ ke IP eksternal kluster
|
||||
atau bahkan tidak termasuk di dalam `ipBlock` _policy_.
|
||||
|
||||
## _Policy_ _Default_
|
||||
|
||||
Secara _default_, jika tidak ada _policy_ yang ada dalam suatu _namespace_, maka semua trafik _ingress_ dan _egress_ yang diizinkan ke atau dari Pod dalam _namespace_.
|
||||
Secara _default_, jika tidak ada _policy_ yang ada dalam suatu _namespace_, maka semua trafik _ingress_ dan _egress_ yang diizinkan ke atau dari Pod dalam _namespace_.
|
||||
Contoh di bawah ini akan memberikan gambaran bagaimana kamu dapat mengubah perilaku _default_ pada sebuah _namespace_.
|
||||
|
||||
### _Default_: tolak semua trafik _ingress_
|
||||
|
||||
Kamu dapat membuat _policy_ isolasi `"default"` untuk sebuah _namespace_
|
||||
dengan membuat sebuah `NetworkPolicy` yang memilih semua Pod tapi tidak mengizinkan
|
||||
Kamu dapat membuat _policy_ isolasi `"default"` untuk sebuah _namespace_
|
||||
dengan membuat sebuah `NetworkPolicy` yang memilih semua Pod tapi tidak mengizinkan
|
||||
trafik _ingress_ masuk ke Pod-Pod tersebut.
|
||||
|
||||
```yaml
|
||||
@@ -187,13 +187,13 @@ spec:
|
||||
- Ingress
|
||||
```
|
||||
|
||||
Hal ini menjamin bahwa bahkan Pod yang tidak dipilih oleh `NetworkPolicy` lain masih terisolasi.
|
||||
Hal ini menjamin bahwa bahkan Pod yang tidak dipilih oleh `NetworkPolicy` lain masih terisolasi.
|
||||
_Policy_ ini tidak mengubah perilaku _default_ dari _egress_.
|
||||
|
||||
### _Default_: izinkan semua trafik _ingress_
|
||||
|
||||
Jika kamu ingin mengizinkan semua trafik _ingress_ pada semua Pod dalam sebuah _namespace_
|
||||
(bahkan jika _policy_ ditambahkan dan menyebabkan beberapa Pod menjadi terisolasi), kamu
|
||||
Jika kamu ingin mengizinkan semua trafik _ingress_ pada semua Pod dalam sebuah _namespace_
|
||||
(bahkan jika _policy_ ditambahkan dan menyebabkan beberapa Pod menjadi terisolasi), kamu
|
||||
dapat secara eksplisit mengizinkan semua trafik bagi _namespace_ tersebut.
|
||||
|
||||
```yaml
|
||||
@@ -211,8 +211,8 @@ spec:
|
||||
|
||||
### _Default_: tolak semua trafik _egress_
|
||||
|
||||
Kamu dapat membuat _policy_ isolasi `"default"` untuk sebuah _namespace_
|
||||
dengan membuat sebuah `NetworkPolicy` yang memilih semua Pod tapi tidak mengizinkan
|
||||
Kamu dapat membuat _policy_ isolasi `"default"` untuk sebuah _namespace_
|
||||
dengan membuat sebuah `NetworkPolicy` yang memilih semua Pod tapi tidak mengizinkan
|
||||
trafik _egress_ keluar dari Pod-Pod tersebut.
|
||||
|
||||
```yaml
|
||||
@@ -226,13 +226,13 @@ spec:
|
||||
- Egress
|
||||
```
|
||||
|
||||
Hal ini menjamin bahwa bahkan Pod yang tidak dipilih oleh `NetworkPolicy` lain masih terisolasi.
|
||||
Hal ini menjamin bahwa bahkan Pod yang tidak dipilih oleh `NetworkPolicy` lain masih terisolasi.
|
||||
_Policy_ ini tidak mengubah perilaku _default_ dari _ingress_.
|
||||
|
||||
### _Default_: izinkan semua trafik _egress_
|
||||
|
||||
Jika kamu ingin mengizinkan semua trafik _egress_ pada semua Pod dalam sebuah _namespace_
|
||||
(bahkan jika _policy_ ditambahkan dan menyebabkan beberapa Pod menjadi terisolasi), kamu
|
||||
Jika kamu ingin mengizinkan semua trafik _egress_ pada semua Pod dalam sebuah _namespace_
|
||||
(bahkan jika _policy_ ditambahkan dan menyebabkan beberapa Pod menjadi terisolasi), kamu
|
||||
dapat secara eksplisit mengizinkan semua trafik bagi _namespace_ tersebut.
|
||||
|
||||
```yaml
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user