Semua Aplikasi Kf yang melayani traffic HTTP kepada pengguna atau aplikasi di luar cluster harus dikaitkan dengan nama domain.
Kf memiliki tiga lokasi di mana domain dapat dikonfigurasi. Diurutkan berdasarkan prioritasnya, yaitu:
- Aplikasi
- Ruang
- ConfigMap
config-defaults
di Namespacekf
ConfigMap config-defaults
ConfigMap config-defaults
memiliki setelan tingkat cluster untuk Kf dan dapat diedit oleh administrator cluster.
Nilai dalam ConfigMap dibaca oleh pengontrol Ruang dan mengubah konfigurasinya.
Nilai domain ditampilkan di kolom status.networkConfig.domains
Ruang.
Untuk mengubah domain cluster Kf, edit ConfigMap config-defaults
di Namespace kf
:
kubectl edit configmap config-defaults -n kf
Tambahkan atau update entri untuk kunci spaceClusterDomain
seperti berikut:
spaceClusterDomain: my-domain.com
Untuk memvalidasi bahwa konfigurasi telah diperbarui dengan benar, periksa nilai domain di ruang:
kf space SPACE_NAME -o "jsonpath={.status.networkConfig.domains[]['domain']}"
Output-nya akan terlihat seperti ini:
Getting Space some-space
some-space.my-domain.com
Setiap Ruang mengawali domain cluster dengan namanya sendiri. Hal ini mencegah konflik antar-Aplikasi.
Domain ruang
Spasi adalah lokasi resmi untuk konfigurasi domain.
Anda dapat menetapkan domain dan subdomain ke setiap ruang untuk digunakan developer.
Kolom untuk mengonfigurasi domain adalah spec.networkConfig.domains
.
Gunakan kf space
untuk melihat domain yang ditetapkan ke Ruang:
kf space SPACE_NAME
Dalam output, kolom Spec
berisi konfigurasi khusus untuk Ruang
dan kolom Status
mencerminkan konfigurasi untuk Ruang dengan default
seluruh cluster yang ditambahkan ke bagian akhir:
...
Spec:
Network Config:
Domains:
Domain: my-space.mycompany.com
...
Status:
Network Config:
Domains:
Domain: my-space.mycompany.com
Domain: my-space.prod.us-east1.kf.mycompany.com
Konfigurasi dengan CLI
CLI kf
mendukung mutasi pada domain Ruang. Setiap perintah menghasilkan perbedaan antara konfigurasi lama dan baru.
Tambahkan domain baru dengan kf configure-space append-domain
:
kf configure-space append-domain SPACE_NAME myspace.mycompany.com
Tambahkan atau jadikan domain yang ada sebagai default dengan kf configure-space set-default-domain
:
kf configure-space set-default-domain SPACE_NAME myspace.mycompany.com
Terakhir, hapus domain:
kf configure-space remove-domain SPACE_NAME myspace.mycompany.com
Aplikasi
Aplikasi dapat menentukan domain sebagai bagian dari konfigurasinya.
Rute dipetakan ke Aplikasi selama kf push
menggunakan logika berikut:
let current_routes = The set of routes already on the app
let manifest_routes = The set of routes defined by the manifest
let flag_routes = The set of routes supplied by the --route flag(s)
let no_route = Whether the manifest has no-route:true or --no-route is set
let random_route = Whether the manifest has random-route:true or --random-route is set
let new_routes = Union(current_routes, manifest_routes, flag_routes)
if new_routes.IsEmpty() then
if random_route then
new_routes.Add(CreateRandomRoute())
else
new_routes.Add(CreateDefaultRoute())
end
end
if no_route then
new_routes.RemoveAll()
end
return new_routes
Jika Aplikasi tidak menentukan Rute, atau meminta Rute acak, domain pertama di Ruang akan digunakan. Jika domain pertama di Ruang berubah, semua Aplikasi dalam ruang yang menggunakan domain default akan diperbarui untuk mencerminkannya.
Template domain
Kf mendukung substitusi variabel dalam domain. Dengan substitusi, satu domain luas cluster dapat disesuaikan per Ruang dan bereaksi terhadap perubahan IP masuk. Substitusi dilakukan pada variabel dengan sintaksis $(VARIABLE_NAME)
yang terjadi dalam domain.
Variabel | Deskripsi |
---|---|
CLUSTER_INGRESS_IP |
Alamat IPV4 masuknya cluster. |
SPACE_NAME |
Nama Ruang. |
Contoh
Contoh berikut menunjukkan cara variabel domain dapat digunakan untuk mendukung berbagai struktur organisasi dan pola cluster.
Menggunakan layanan DNS karakter pengganti seperti nip.io:
$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
Domain untuk organisasi dengan DNS yang dikelola secara terpusat:
$(SPACE_NAME).cluster-name.example.com
Domain untuk tim yang mengelola DNS mereka sendiri:
cluster-name.$(SPACE_NAME).example.com
Domain untuk cluster dengan failover yang hangat dan pemutus arus listrik eksternal:
$(SPACE_NAME)-failover.cluster-name.example.com
Perbedaan antara Kf dan CF
- Kf Spaces mengawali domain seluruh cluster dengan nama Space.
- Kf tidak memeriksa konflik domain pada rute yang ditentukan pengguna.