Gunakan kubeconfig sementara atau jangka panjang untuk mengautentikasi kubectl dengan server API kluster Anda.
Anda juga dapat mengelola kluster dan aplikasi melalui Konsol ACK.
Berdasarkan model tanggung jawab bersama, amankan kredensial kubeconfig Anda dengan memutarnya secara berkala dan menerapkan prinsip hak istimewa minimal.
Pilih jenis kubeconfig
Pilih jenis kubeconfig berdasarkan durasi akses yang Anda butuhkan dan cara klien Anda terhubung ke kluster.
Berdasarkan periode validitas
|
Type |
Validity |
Best for |
Security |
|
Temporary |
30 menit hingga 3 hari (dapat dikonfigurasi) |
Operasi dan maintenance (O&M) harian, troubleshooting, pipeline CI/CD |
Risiko lebih rendah—otomatis kedaluwarsa setelah periode yang dikonfigurasi |
|
Long-term |
3 tahun (default) |
Sistem otomatis, layanan pemantauan jangka panjang |
Memerlukan rotasi manual sebelum kedaluwarsa |
Berdasarkan metode akses
|
Type |
When to use |
Details |
|
Private access |
Mesin klien Anda berada dalam Virtual Private Cloud (VPC) yang sama dengan kluster |
Terhubung melalui jaringan internal dengan latensi lebih rendah dan keamanan lebih kuat |
|
Public access |
Terhubung dari mesin mana pun yang memiliki akses Internet |
Menampilkan server API melalui Elastic IP Address (EIP)—untuk pengembangan lokal dan O&M jarak jauh |
EIP yang di-bind dikenai biaya pay-as-you-go.
Untuk kluster khusus ACK dengan akses publik, Anda juga dapat menghubungkan ke node master melalui SSH untuk mendapatkan kubeconfig.
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
menginstal kubectl, dengan selisih maksimal satu versi minor dari versi Kubernetes kluster Anda (misalnya, kubectl 1.27–1.29 untuk Kubernetes 1.28).
-
Pengguna RAM dengan izin yang diberikan baik di tingkat ACK maupun Kluster.
Dapatkan file kubeconfig dan hubungkan ke kluster
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda, atau klik Details di kolom Actions.
-
Di halaman Cluster Information, klik tab Connection Information. Pilih kubeconfig sementara atau jangka panjang. Untuk kubeconfig sementara, atur periode validitasnya.
-
Klik tab Internal Access atau Public Access, lalu klik Copy.
-
Tempel kontennya ke file
$HOME/.kube/configpada klien Anda, lalu simpan file tersebut.Catatan: Jika direktori atau file tersebut belum ada, buat terlebih dahulu.
-
Verifikasi koneksi dengan menampilkan semua namespace:
kubectl get namespacesOutput yang diharapkan:
NAME STATUS AGE default Active 4h39m kube-node-lease Active 4h39m kube-public Active 4h39m kube-system Active 4h39m
Kelola kredensial kubeconfig
Putar kredensial sebelum kedaluwarsa
kubeconfig jangka panjang berlaku selama 3 tahun. Dapatkan kubeconfig baru dari Konsol ACK atau melalui API DescribeClusterUserKubeconfig dalam waktu 180 hari sebelum kedaluwarsa untuk menghindari gangguan layanan.
kubeconfig baru berlaku selama 3 tahun. kubeconfig lama tetap berlaku hingga tanggal kedaluwarsa aslinya.
Cabut kredensial yang dikompromikan
Jika Anda mencurigai kubeconfig telah dikompromikan, segera cabut kredensial kubeconfig kluster. Tindakan ini akan membatalkan semua koneksi yang ada dan menghasilkan kubeconfig baru.
Bersihkan izin untuk pengguna yang keluar
Ketika pengguna tidak lagi memerlukan akses (misalnya, setelah proyek selesai atau karyawan berhenti), cabut izin kubeconfig mereka secara massal dengan menghapus file kubeconfig atau menggunakan ack-ram-tool. Sistem tidak akan menghasilkan kubeconfig baru setelah pencabutan.
Untuk memulihkan izin yang tidak sengaja dicabut, gunakan keranjang daur ulang kubeconfig.
FAQ
Secara default, kubectl menggunakan$HOME/.kube/config. Untuk menggunakan file lain, atur variabel lingkunganKUBECONFIGatau gunakan flag--kubeconfig. Pada perintah di bawah ini, gantikubeconfigdengan path ke file kubeconfig Anda.
Bagaimana cara mengetahui identitas yang terkait dengan sertifikat kubeconfig?
Ambil subjek sertifikat:
# Ekstrak sertifikat klien, dekode dari base64,
# lalu gunakan OpenSSL untuk menampilkan bidang Subject
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -text | grep Subject:
Output yang diharapkan:
Subject: O=system:users, OU=, CN=1***-1673419473
-
O—Kelompok pengguna Kubernetes. Pada contoh ini,system:users. -
CN—Pengenal pengguna. Pada contoh ini,1***-1673419473, di mana1***adalah ID pengguna Alibaba Cloud.
Bagaimana cara memeriksa kapan sertifikat kubeconfig kedaluwarsa?
Periksa tanggal kedaluwarsa sertifikat:
# Ekstrak sertifikat klien, dekode dari base64,
# lalu gunakan OpenSSL untuk menampilkan tanggal kedaluwarsa
grep client-certificate-data kubeconfig | awk '{print $2}' | base64 -d | openssl x509 -noout -enddate
Output yang diharapkan:
notAfter=Jan 10 06:44:34 2026 GMT
Pada contoh ini, sertifikat kedaluwarsa pada 10 Januari 2026.
Dapatkan kubeconfig baru dari konsol atau API dalam waktu 180 hari sebelum kedaluwarsa, atau kapan saja setelah kedaluwarsa.
Bagaimana cara mengekstrak sertifikat klien, kunci privat, dan URL server API dari kubeconfig?
Ambil sertifikat, kunci, dan URL server API:
# Ekstrak dan dekode sertifikat klien ke file PEM
grep client-certificate-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-cert.pem
# Ekstrak dan dekode kunci privat klien ke file PEM
grep client-key-data ./kubeconfig | awk -F ' ' '{print $2}' | base64 -d > ./client-key.pem
# Ekstrak URL server API ke dalam variabel
APISERVER=$(grep server ./kubeconfig | awk -F ' ' '{print $2}')
Bagaimana cara mengatasi error "certificate is valid for"?
Error ini terjadi ketika Anda mengikat alamat IP baru ke instans Server Load Balancer (SLB) untuk server API. Perintah kubectl yang ditujukan ke IP baru gagal dengan pesan Error while proxying request: x509: certificate is valid for xxx atau Unable to connect to the server: x509: certificate is valid for xxx.
Penyelesaiannya bergantung pada jenis kluster Anda:
-
Kluster ACK yang dikelola: Tambahkan alamat IP baru ke Subject Alternative Name (SAN) sertifikat server API.
-
Kluster khusus ACK: Konfigurasikan kubectl agar melewati verifikasi TLS dengan salah satu metode berikut:
PentingMelewati verifikasi TLS merupakan risiko keamanan. Jangan gunakan ini di lingkungan produksi. Migrasikan ke kluster ACK Pro, lalu tambahkan alamat IP baru ke SAN sertifikat server API.
-
Metode 1: Gunakan flag
--insecure-skip-tls-verify:kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns -
Metode 2: Edit file kubeconfig. Tambahkan
insecure-skip-tls-verify: truedan hapus bidangcertificate-authority-data:apiVersion: v1 clusters: - cluster: server: https://<IP>:6443 insecure-skip-tls-verify: true name: kubernetes contexts: ...
-
Apakah saya bisa mendapatkan kunci sertifikat root untuk kluster ACK yang dikelola agar membuat kubeconfig sendiri?
Tidak. Kluster ACK yang dikelola tidak mengekspos kunci sertifikat root. Dapatkan kubeconfig dari konsol atau melalui API DescribeClusterUserKubeconfig.
Referensi
-
Kueri kubeconfig secara terprogram melalui API DescribeClusterUserKubeconfig.
-
Masuk ke node kluster. Lihat metode koneksi jarak jauh ECS.