Konfigurasi
Nahkoda mendukung file konfigurasi untuk menyesuaikan perilaku aplikasi sesuai kebutuhan Anda.
📁 Lokasi File
Section titled “📁 Lokasi File”File konfigurasi disimpan di:
~/.nahkoda/config.jsonCatatan: File ini bersifat opsional. Jika tidak ada, Nahkoda akan menggunakan default values.
⚙️ Default Values
Section titled “⚙️ Default Values”Jika tidak ada file config, Nahkoda menggunakan:
| Field | Default Value | Keterangan |
|---|---|---|
kubectl_path | "" (auto-detect) | Path ke binary kubectl |
default_namespace | "default" | Namespace default untuk operasi |
cache_ttl | 30000000000 (30 detik) | Durasi cache autocomplete |
timeout | 30000000000 (30 detik) | Timeout untuk kubectl calls yang finite |
enable_suggestions | true | Toggle autocomplete/suggestions |
📝 Format Config
Section titled “📝 Format Config”{ "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).
Konversi Waktu
Section titled “Konversi Waktu”| Durasi | Nanoseconds |
|---|---|
| 1 detik | 1000000000 |
| 30 detik | 30000000000 |
| 1 menit | 60000000000 |
| 5 menit | 300000000000 |
🎯 Use Cases
Section titled “🎯 Use Cases”1. Custom Kubectl Path
Section titled “1. Custom Kubectl Path”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"}2. Default Namespace
Section titled “2. Default Namespace”Atur namespace default untuk command bertarget atau mutatif yang tidak menyebut di geladak:
{ "default_namespace": "staging"}Sebelum:
nahkoda cek kru api-7 di geladak stagingSesudah (dengan config):
nahkoda cek kru api-7 # otomatis memakai stagingCatatan: command list tanpa target seperti nahkoda liat kru tetap melihat semua geladak (-A) agar perilaku lama tidak berubah.
3. Performance Tuning
Section titled “3. Performance Tuning”Cache Lebih Lama (untuk cluster stabil):
Section titled “Cache Lebih Lama (untuk cluster stabil):”{ "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.
4. Disable Autocomplete
Section titled “4. Disable Autocomplete”Untuk debugging atau environment dengan kubectl versi lama:
{ "enable_suggestions": false}🛠️ Membuat Config File
Section titled “🛠️ Membuat Config File”Manual
Section titled “Manual”mkdir -p ~/.nahkoda
cat > ~/.nahkoda/config.json << 'EOF'{ "kubectl_path": "", "default_namespace": "default", "cache_ttl": 30000000000, "timeout": 30000000000, "enable_suggestions": true}EOFVia Editor
Section titled “Via Editor”mkdir -p ~/.nahkodanano ~/.nahkoda/config.jsonPaste config JSON, lalu save (Ctrl+O, Enter, Ctrl+X).
✅ Validasi
Section titled “✅ Validasi”Nahkoda otomatis memvalidasi config saat load:
❌ Error: Invalid kubectl path
Section titled “❌ Error: Invalid kubectl path”{ "kubectl_path": "/path/yang/tidak/ada"}Result: Nahkoda akan error saat start dengan pesan:
⚠️ Gagal memuat konfigurasi: kubectl path tidak valid❌ Error: Negative values
Section titled “❌ Error: Negative values”{ "timeout": -5000000000}Result: Error timeout tidak boleh negatif
✅ Valid Config
Section titled “✅ Valid Config”Jika config valid, Nahkoda akan load tanpa pesan error.
🔍 Debugging
Section titled “🔍 Debugging”Cek apakah config ter-load:
Section titled “Cek apakah config ter-load:”# Test dengan dry-runnahkoda --dry-run liat kruJika menggunakan custom kubectl_path, akan terlihat di output.
Fallback ke Default
Section titled “Fallback ke Default”Jika config error, Nahkoda akan:
- Print warning
- Fallback ke default config
- Tetap berjalan normal
⚠️ Gagal memuat konfigurasi: <error message># Lanjut dengan default values📊 Contoh Lengkap
Section titled “📊 Contoh Lengkap”Production Environment
Section titled “Production Environment”{ "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
Development Environment
Section titled “Development Environment”{ "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
Minimal Config
Section titled “Minimal Config”{ "default_namespace": "staging"}Hanya set default namespace, sisanya pakai default values.
🚀 Tips
Section titled “🚀 Tips”- Jangan commit config ke git - isi config bisa berbeda per developer
- Backup config sebelum edit - copy dulu jika mau experiment
- Test dengan —dry-run - pastikan config valid sebelum pakai
- Monitor error.log - cek
~/.nahkoda/error.logjika ada masalah
📚 Related
Section titled “📚 Related”- Instalasi - Install Nahkoda
- Error Handling - Debugging errors
- Bahasa - Parser & AST internals