Menyiapkan Domain Kustom

Semua Aplikasi Kf yang menayangkan traffic HTTP kepada pengguna atau aplikasi di luar cluster harus dikaitkan dengan nama domain.

Kf memiliki tiga lokasi tempat domain dapat dikonfigurasi. Jika diurutkan berdasarkan prioritas, urutan tersebut adalah:

  1. Aplikasi
  2. Ruang
  3. ConfigMap config-defaults di Namespace kf

ConfigMap config-defaults

ConfigMap config-defaults menyimpan setelan seluruh cluster untuk Kf dan dapat diedit oleh administrator cluster. Nilai dalam ConfigMap dibaca oleh pengontrol Ruang dan mengubah konfigurasinya. Nilai domain tercermin 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 perbarui 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 menambahkan awalan nama sendiri ke domain cluster. Tindakan ini mencegah konflik antar-Aplikasi.

Domain ruang

Ruang adalah lokasi resmi untuk konfigurasi domain. Anda dapat menetapkan domain dan sub-domain 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 spesifik untuk Ruang dan kolom Status mencerminkan konfigurasi untuk Ruang dengan default seluruh cluster yang ditambahkan di 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 di ruang yang menggunakan domain default akan diperbarui untuk mencerminkannya.

Template domain

Kf mendukung penggantian variabel di domain. Penggantian memungkinkan satu domain seluruh cluster disesuaikan per Ruang dan bereaksi terhadap perubahan pada IP masuk. Penggantian dilakukan pada variabel dengan sintaksis $(VARIABLE_NAME) yang terjadi di domain.

Variabel Deskripsi
CLUSTER_INGRESS_IP Alamat IPV4 ingress cluster.
SPACE_NAME Nama Ruang.

Contoh

Contoh berikut menunjukkan cara variabel domain dapat digunakan untuk mendukung berbagai struktur organisasi dan pola cluster yang berbeda.

  • Menggunakan layanan DNS karakter pengganti seperti nip.io:

    $(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io
    
  • Domain untuk organisasi dengan DNS terkelola 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 hangat dan pemutus arus eksternal:

    $(SPACE_NAME)-failover.cluster-name.example.com
    

Perbedaan antara Kf dan CF

  • Kf Spaces memberi awalan domain seluruh cluster dengan nama Ruang.
  • Kf tidak memeriksa konflik domain pada rute yang ditentukan pengguna.