Skip to content

Konfigurasi

Nahkoda mendukung file konfigurasi untuk menyesuaikan perilaku aplikasi sesuai kebutuhan Anda.

File konfigurasi disimpan di:

~/.nahkoda/config.json

Catatan: File ini bersifat opsional. Jika tidak ada, Nahkoda akan menggunakan default values.

Jika tidak ada file config, Nahkoda menggunakan:

FieldDefault ValueKeterangan
kubectl_path"" (auto-detect)Path ke binary kubectl
default_namespace"default"Namespace default untuk operasi
cache_ttl30000000000 (30 detik)Durasi cache autocomplete
timeout30000000000 (30 detik)Timeout untuk kubectl calls yang finite
enable_suggestionstrueToggle autocomplete/suggestions
{
"kubectl_path": "/usr/local/bin/kubectl",
"default_namespace": "production",
"cache_ttl": 60000000000,
"timeout": 45000000000,
"enable_suggestions": true
}

Catatan: cache_ttl dan timeout dalam nanoseconds (Go duration format).

DurasiNanoseconds
1 detik1000000000
30 detik30000000000
1 menit60000000000
5 menit300000000000

Berguna jika Anda menggunakan:

  • Custom kubectl binary (e.g., k3s kubectl, microk8s kubectl)
  • Kubectl di lokasi non-standard
  • Multiple kubectl versions
{
"kubectl_path": "/snap/bin/microk8s.kubectl"
}

Atur namespace default untuk command bertarget atau mutatif yang tidak menyebut di geladak:

{
"default_namespace": "staging"
}

Sebelum:

Terminal window
nahkoda cek kru api-7 di geladak staging

Sesudah (dengan config):

Terminal window
nahkoda cek kru api-7 # otomatis memakai staging

Catatan: command list tanpa target seperti nahkoda liat kru tetap melihat semua geladak (-A) agar perilaku lama tidak berubah.

{
"cache_ttl": 300000000000
}

Cache autocomplete selama 5 menit (lebih cepat, tapi kurang fresh).

Timeout Lebih Lama (untuk cluster lambat):

Section titled “Timeout Lebih Lama (untuk cluster lambat):”
{
"timeout": 60000000000
}

Tunggu 1 menit sebelum timeout (cluster lambat tidak akan error terlalu cepat).

Timeout ini berlaku untuk command yang selesai sendiri. nahkoda masuk ... dan nahkoda baca jurnal ... terus tetap berjalan sampai dihentikan pengguna. Discovery autocomplete memakai batas tetap 2 detik agar TAB tidak menggantung.

Untuk debugging atau environment dengan kubectl versi lama:

{
"enable_suggestions": false
}
Terminal window
mkdir -p ~/.nahkoda
cat > ~/.nahkoda/config.json << 'EOF'
{
"kubectl_path": "",
"default_namespace": "default",
"cache_ttl": 30000000000,
"timeout": 30000000000,
"enable_suggestions": true
}
EOF
Terminal window
mkdir -p ~/.nahkoda
nano ~/.nahkoda/config.json

Paste config JSON, lalu save (Ctrl+O, Enter, Ctrl+X).

Nahkoda otomatis memvalidasi config saat load:

{
"kubectl_path": "/path/yang/tidak/ada"
}

Result: Nahkoda akan error saat start dengan pesan:

⚠️ Gagal memuat konfigurasi: kubectl path tidak valid
{
"timeout": -5000000000
}

Result: Error timeout tidak boleh negatif

Jika config valid, Nahkoda akan load tanpa pesan error.

Terminal window
# Test dengan dry-run
nahkoda --dry-run liat kru

Jika menggunakan custom kubectl_path, akan terlihat di output.

Jika config error, Nahkoda akan:

  1. Print warning
  2. Fallback ke default config
  3. Tetap berjalan normal
⚠️ Gagal memuat konfigurasi: <error message>
# Lanjut dengan default values
{
"kubectl_path": "/usr/local/bin/kubectl",
"default_namespace": "production",
"cache_ttl": 60000000000,
"timeout": 45000000000,
"enable_suggestions": true
}
  • Kubectl standard di /usr/local/bin
  • Default ke namespace production
  • Cache 1 menit (cluster stabil)
  • Timeout 45 detik (cluster cepat)
  • Suggestions enabled
{
"kubectl_path": "/snap/bin/microk8s.kubectl",
"default_namespace": "dev",
"cache_ttl": 10000000000,
"timeout": 60000000000,
"enable_suggestions": true
}
  • MicroK8s kubectl
  • Default ke namespace dev
  • Cache 10 detik (cluster sering berubah)
  • Timeout 1 menit (local cluster kadang lambat)
  • Suggestions enabled
{
"default_namespace": "staging"
}

Hanya set default namespace, sisanya pakai default values.

  1. Jangan commit config ke git - isi config bisa berbeda per developer
  2. Backup config sebelum edit - copy dulu jika mau experiment
  3. Test dengan —dry-run - pastikan config valid sebelum pakai
  4. Monitor error.log - cek ~/.nahkoda/error.log jika ada masalah