diff --git a/content/id/docs/tasks/tools/install-kubectl.md b/content/id/docs/tasks/tools/install-kubectl.md new file mode 100644 index 0000000000..11a68bcc2c --- /dev/null +++ b/content/id/docs/tasks/tools/install-kubectl.md @@ -0,0 +1,496 @@ +--- +title: Instalasi dan Konfigurasi kubectl +content_template: templates/task +weight: 10 +card: + name: tasks + weight: 20 + title: Instalasi kubectl +--- + +{{% capture overview %}} +[Kubectl](/docs/user-guide/kubectl/) adalah perangkat _command line_ Kubernetes yang digunakan untuk menjalankan perintah-perintah untuk kluster Kubernetes. Kamu dapat menggunakan `kubectl` untuk men-_deploy_ aplikasi, mengatur _resource_ kluster, dan melihat _log_. Daftar operasi `kubectl` dapat dilihat di [Ikhtisar kubectl](/docs/reference/kubectl/overview/). +{{% /capture %}} + +{{% capture prerequisites %}} +Kamu boleh menggunakan `kubectl` versi berapapun selama versi minornya sama atau berbeda satu. Misal, klien v1.2 masih dapat digunakan dengan v1.1, v1.2, dan 1.3 master. Menggunakan versi terbaru `kubectl` dapat menghindari permasalahan yang tidak terduga. +{{% /capture %}} + +{{% capture steps %}} + +## Instalasi kubectl di Linux + +### Instalasi binari kubectl dengan curl di Linux + +1. Unduh versi terbaru dengan perintah: + + ``` + curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl + ``` + + Untuk mengunduh versi spesifik, ganti bagian `curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` dengan versi yang diinginkan. + + Misal, untuk mengunduh versi {{< param "fullversion" >}} di Linux, ketik: + + ``` + curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/linux/amd64/kubectl + ``` + +1. Buat agar binari `kubectl` dapat di-_execute_. + + ``` + chmod +x ./kubectl + ``` + +1. Pindahkan ke PATH komputer. + + ``` + sudo mv ./kubectl /usr/local/bin/kubectl + ``` +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +### Instalasi dengan paket manajer bawaan + +{{< tabs name="kubectl_install" >}} +{{< tab name="Ubuntu, Debian or HypriotOS" codelang="bash" >}} +sudo apt-get update && sudo apt-get install -y apt-transport-https gnupg2 +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list +sudo apt-get update +sudo apt-get install -y kubectl +{{< /tab >}} +{{< tab name="CentOS, RHEL or Fedora" codelang="bash" >}}cat < /etc/yum.repos.d/kubernetes.repo +[kubernetes] +name=Kubernetes +baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 +enabled=1 +gpgcheck=1 +repo_gpgcheck=1 +gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg +EOF +yum install -y kubectl +{{< /tab >}} +{{< /tabs >}} + +### Instalasi dengan paket manajer lain + +{{< tabs name="other_kubectl_install" >}} +{{% tab name="Snap" %}} +Jika kamu menggunakan Ubuntu atau versi Linux lain yang mendukung paket manajer [snap](https://snapcraft.io/docs/core/install), `kubectl` tersedia dalam bentuk aplikasi di [snap](https://snapcraft.io/). + +```shell +snap install kubectl --classic + +kubectl version --client +``` +{{% /tab %}} +{{% tab name="Homebrew" %}} +Jika kamu menggunakan Linux dengan paket manajer [Homebrew](https://docs.brew.sh/Homebrew-on-Linux), `kubectl` sudah tersedia untuk diinstal di [Homebrew](https://docs.brew.sh/Homebrew-on-Linux#install). +```shell +brew install kubectl + +kubectl version --client +``` +{{% /tab %}} +{{< /tabs >}} + +## Instalasi kubectl di macOS + +### Instalasi binari kubectl dengan curl di macOS + +1. Unduh versi terbaru dengan perintah: + + ``` + curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl" + ``` + + Untuk mengunduh versi spesifik, ganti bagian `curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt` dengan versi yang diinginkan. + + Misal, untuk mengunduh versi {{< param "fullversion" >}} di macOS, ketik: + + ``` + curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl + ``` + +1. Buat agar binari `kubectl` dapat di-_execute_. + + ``` + chmod +x ./kubectl + ``` + +1. Pindahkan ke PATH komputer. + + ``` + sudo mv ./kubectl /usr/local/bin/kubectl + ``` +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +### Instalasi dengan Homebrew di macOS + +Jika kamu menggunakan macOS dan paket manajer [Homebrew](https://brew.sh/), kamu dapat menginstal `kubectl` langsung dengan Homebrew. + +1. Jalankan perintah: + + ``` + brew install kubectl + ``` + atau + + ``` + brew install kubernetes-cli + ``` + +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +### Instalasi dengan Macports di macOS + +Jika kamu menggunakan macOS dan paket manajer [Macports](https://macports.org/), kamu dapat menginstal `kubectl` langsung dengan Macports. + +1. Jalankan perintah: + + ``` + sudo port selfupdate + sudo port install kubectl + ``` + +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +## Instalasi kubectl di Windows + +### Instalasi binari kubectl dengan curl di Windows + +1. Unduh versi terbaru {{< param "fullversion" >}} dari [tautan ini](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe). + + Atau jika sudah ada `curl`, jalankan perintah ini: + + ``` + curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe + ``` + + Untuk mendapatkan versi stabil terakhir (misal, untuk _scripting_), lihat di [https://storage.googleapis.com/kubernetes-release/release/stable.txt](https://storage.googleapis.com/kubernetes-release/release/stable.txt). + +1. Tambahkan binary yang sudah diunduh ke PATH komputer. +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` +{{< note >}} +[Docker Desktop untuk Windows](https://docs.docker.com/docker-for-windows/#kubernetes) sudah menambahkan versi `kubectl`nya sendiri ke PATH. Jika kamu sudah menginstal Docker Desktop, kamu harus menambahkan _entry_ ke PATH sebelum yang ditambahkan oleh _installer_ Docker Desktop atau kamu dapat menghapus `kubectl` bawaan Docker Desktop. +{{< /note >}} + +### Instalasi dengan Powershell dari PSGallery + +Jika kamu menggunakan Windows dan paket manajer [Powershell Gallery](https://www.powershellgallery.com/), kamu dapat menginstal dan melakukan pembaruan `kubectl` dengan Powershell. + +1. Jalankan perintah berikut (jangan lupa untuk memasukkan `DownloadLocation`): + + ``` + Install-Script -Name install-kubectl -Scope CurrentUser -Force + install-kubectl.ps1 [-DownloadLocation ] + ``` + + {{< note >}}Jika kamu tidak menambahkan `DownloadLocation`, `kubectl` akan diinstal di dalam direktori _temp_ pengguna.{{< /note >}} + + _Installer_ akan membuat `$HOME/.kube` dan membuat file konfigurasi + +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + + {{< note >}}Proses pembaruan dapat dilakukan dengan menjalankan ulang dua perintah yang terdapat pada langkah 1.{{< /note >}} + +### Instalasi di Windows menggunaakn Chocolatey atau Scoop + +Untuk menginstal `kubectl` di Windows kamu dapat menggunakan paket manajer [Chocolatey](https://chocolatey.org) atau _installer_ command-line [Scoop](https://scoop.sh). +{{< tabs name="kubectl_win_install" >}} +{{% tab name="choco" %}} + + choco install kubernetes-cli + +{{% /tab %}} +{{% tab name="scoop" %}} + + scoop install kubectl + +{{% /tab %}} +{{< /tabs >}} +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +1. Pindah ke direktori utama: + + ``` + cd %USERPROFILE% + ``` +1. Buat direktori `.kube`: + + ``` + mkdir .kube + ``` + +1. Pindah ke direktori `.kube` yang baru saja dibuat: + + ``` + cd .kube + ``` + +1. Lakukan konfigurasi `kubectl` agar menggunakan _remote_ kluster Kubernetes: + + ``` + New-Item config -type file + ``` + + {{< note >}}Ubah file konfigurasi dengan editor teks pilihanmu, misal Notepad.{{< /note >}} + +## Unduh dengan menggunakan Google Cloud SDK + +Kamu dapat menginstal `kubectl` dengan menggunakan Google Cloud SDK. + +1. Instal [Google Cloud SDK](https://cloud.google.com/sdk/). +1. Jalankan perintah instalasi `kubectl`: + + ``` + gcloud components install kubectl + ``` + +1. Pastikan instalasi sudah berhasil dengan melakukan pengecekan versi: + + ``` + kubectl version --client + ``` + +## Memeriksa konfigurasi kubectl + +Agar `kubectl` dapat mengakses kluster Kubernetes, dibutuhkan sebuah [kubeconfig file](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/), yang akan otomatis dibuat ketika kamu membuat kluster baru menggunakan [kube-up.sh](https://github.com/kubernetes/kubernetes/blob/master/cluster/kube-up.sh) atau setelah berhasil men-_deploy_ kluster Minikube. Secara _default_, konfigurasi `kubectl` disimpan di `~/.kube/config`. + +Kamu dapat memeriksa apakah konfigurasi `kubectl` sudah benar dengan mengambil _state_ kluster: + +```shell +kubectl cluster-info +``` +Jika kamu melihat respons URL maka konfigurasi kluster `kubectl` sudah benar. + +Tetapi jika kamu melihat pesan seperti di bawah maka `kubectl` belum dikonfigurasi dengan benar atau tidak dapat terhubung ke kluster Kubernetes. + +```shell +The connection to the server was refused - did you specify the right host or port? +``` + +Selanjutnya, apabila kamu ingin menjalankan kluster Kubernetes di laptop (lokal), kamu memerlukan sebuah perangkat seperti Minikube sebelum menjalankan ulang perintah yang ada di atas. + +Jika `kubectl cluster-info` mengembalikan response URL tetapi kamu masih belum dapat mengakses ke kluster, kamu bisa menggunakan perintah di bawah untuk memeriksa apakah kluster sudah dikonfigurasi dengan benar. + +```shell +kubectl cluster-info dump +``` + +## Konfigurasi kubectl yang dapat dilakukan + +### Menyalakan _auto complete_ untuk terminal + +`kubectl` menyediakan fitur _auto complete_ untuk Bash dan Zsh yang dapat memudahkanmu ketika mengetik di terminal. + +Ikuti petunjuk di bawah untuk menyalakan _auto complete_ untuk Bash dan Zsh. + +{{< tabs name="kubectl_autocompletion" >}} + +{{% tab name="Bash di Linux" %}} + +### Pendahuluan + +_Completion script_ `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. + +Namun, _completion script_ tersebut tergantung dengan [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu (kamu dapat memeriksa apakah kamu sudah memiliki bash-completion dengan menjalankan perintah `type _init_completion`). + +### Instalasi bash-completion + +bash-completion disediakan oleh banyak manajer paket (lihat [di sini](https://github.com/scop/bash-completion#installation)). Kamu dapat menginstalnya dengan menggunakan perintah `apt-get install bash-completion` atau `yum install bash-completion`, atau dsb. + +Perintah di atas akan membuat skrip utama bash-completion di `/usr/share/bash-completion/bash_completion`. Terkadang kamu juga harus menambahkan skrip tersebut ke dalam _file_ `~/.bashrc`, tergantung paket manajer yang kamu pakai. + +Untuk memastikan, muat ulang terminal kamu dan jalankan `type _init_completion`. Jika perintah berhasil maka instalasi selesai. Jika tidak, tambahkan teks berikut ke dalam _file_ `~/.bashrc`: + +```shell +source /usr/share/bash-completion/bash_completion +``` + +Muat ulang lagi terminalmu dan pastikan bash-completion sudah berhasil diinstal dengan menjalankan `type _init_completion`. + +### Menyalakan _auto complete_ kubectl + +Sekarang kamu harus memastikan bahwa _completion script_ untuk `kubectl` sudah dimasukkan sebagai sumber _auto complete_ di semua sesi terminal. Kamu dapat melakukannya dengan dua cara: + +- Masukkan _completion script_ sebagai sumber di _file_ `~/.bashrc`: + + ```shell + echo 'source <(kubectl completion bash)' >>~/.bashrc + ``` + +- Menambahkan _completion script_ ke direktori `/etc/bash_completion.d`: + + ```shell + kubectl completion bash >/etc/bash_completion.d/kubectl + ``` + +Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: + + ```shell + echo 'alias k=kubectl' >>~/.bashrc + echo 'complete -F __start_kubectl k' >>~/.bashrc + ``` + +{{< note >}} +Semua sumber _completion script_ bash-completion terdapat di `/etc/bash_completion.d`. +{{< /note >}} + +Kedua cara tersebut sama, kamu bisa mengambil salah satu cara saja. Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. + +{{% /tab %}} + + +{{% tab name="Bash di macOS" %}} + + +### Pendahuluan + +_Completion script_ `kubectl` untuk Bash dapat dibuat dengan perintah `kubectl completion bash`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. + +Namun, _completion script_ tersebut tergantung dengan [**bash-completion**](https://github.com/scop/bash-completion), yang artinya kamu harus menginstal program tersebut terlebih dahulu. + +{{< warning>}} +Terdapat dua versi bash-completion, v1 dan v2. V1 untuk Bash 3.2 (_default_ dari macOs), dan v2 untuk Bash 4.1+. _Completion script_ `kubectl` **tidak kompatibel** dengan bash-completion v1 dan Bash 3.2. Dibutuhkan **bash-completion v2** dan **Bash 4.1+** agar _completion script_ `kubectl` dapat bekerja dengan baik. Maka dari itu, kamu harus menginstal dan menggunakan Bash 4.1+ ([*panduan*](https://itnext.io/upgrading-bash-on-macos-7138bd1066ba)) untuk dapat menggunakan fitur _auto complete_ dari `kubectl`. Ikuti panduan di bawah setelah kamu menginstal Bash 4.1+ (yang artinya Bash versi 4.1 atau lebih baru). +{{< /warning >}} + +### Pembaruan Bash + +Panduan di bawah berasumsi kamu menggunakan Bash 4.1+. Kamu dapat memeriksa versi Bash dengan menjalankan: + +```shell +echo $BASH_VERSION +``` + +Jika versinya sudah terlalu usang, kamu dapat menginstal/membaruinya dengan menggunakan Homebrew: + +```shell +brew install bash +``` + +Muat ulang terminalmu dan pastikan versi yang diharapkan sudah dipakai: + +```shell +echo $BASH_VERSION $SHELL +``` + +Homebrew biasanya akan menginstalnya di `/usr/local/bin/bash`. + +### Instalasi bash-completion + +{{< note >}} +Seperti yang sudah disebutkan, panduan di bawah berasumsi kamu menggunakan Bash 4.1+, yang berarti kamu akan menginstal bash-completion v2 (_auto complete_ dari `kubectl` tidak kompatibel dengan Bash 3.2 dan bash-completion v1). +{{< /note >}} + +Kamu dapat memeriksa apakah kamu sudah memiliki bash-completion v2 dengan perintah `type _init_completion`. Jika belum, kamu dapat menginstalnya dengan menggunakan Homebrew: + +```shell +brew install bash-completion@2 +``` + +Seperti yang disarankan keluaran perintah di atas, tambahkan teks berikut ke _file_ `~/.bashrc`: + +```shell +export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d" +[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh" +``` + +Muat ulang terminalmu dan pastikan bash-completion v2 sudah terinstal dengan perintah `type _init_completion`. + +### Menyalakan _auto complete_ kubectl + +Sekarang kamu harus memastikan bahwa _completion script_ untuk `kubectl` sudah dimasukkan sebagai sumber _auto complete_ di semua sesi terminal. Kamu dapat melakukannya dengan beberapa cara: + +- Masukkan _completion script_ sebagai sumber di _file_ `~/.bashrc`: + + ```shell + echo 'source <(kubectl completion bash)' >>~/.bashrc + ``` + +- Menambahkan _completion script_ ke direktori `/etc/bash_completion.d`: + + ```shell + kubectl completion bash >/etc/bash_completion.d/kubectl + ``` + +- Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: + + ```shell + echo 'alias k=kubectl' >>~/.bashrc + echo 'complete -F __start_kubectl k' >>~/.bashrc + ``` +- Jika kamu menginstal `kubectl` dengan Homebrew (seperti yang sudah dijelaskan [di atas](#install-with-homebrew-on-macos)), maka _completion script_ untuk `kubectl` sudah berada di `/usr/local/etc/bash_completion.d/kubectl`. Kamu tidak perlu melakukan apa-apa lagi. + +{{< note >}} +bash-completion v2 yang diinstal dengan Homebrew meletakkan semua _file_ nya di direktori `BASH_COMPLETION_COMPAT_DIR`, yang membuat dua cara terakhir dapat bekerja. +{{< /note >}} + +Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. +{{% /tab %}} + +{{% tab name="Zsh" %}} + +_Completion script_ `kubectl` untuk Zsh dapat dibuat dengan perintah `kubectl completion zsh`. Masukkan skrip tersebut ke dalam terminal sebagai sumber untuk menyalakan _auto complete_ dari `kubectl`. + +Tambahkan baris berikut di _file_ `~/.zshrc` untuk menyalakan _auto complete_ dari `kubectl`: + +```shell +source <(kubectl completion zsh) +``` + +Jika kamu menggunakan alias untuk `kubectl`, kamu masih dapat menggunakan fitur _auto complete_ dengan menjalankan perintah: + +```shell +echo 'alias k=kubectl' >>~/.zshrc +echo 'complete -F __start_kubectl k' >>~/.zshrc +``` + +Setelah memuat ulang terminal, _auto complete_ dari `kubectl` seharusnya sudah dapat bekerja. + +Jika kamu mendapatkan pesan gagal seperti `complete:13: command not found: compdef`, maka tambahkan teks berikut ke awal _file_ `~/.zshrc`: + +```shell +autoload -Uz compinit +compinit +``` +{{% /tab %}} +{{< /tabs >}} + +{{% /capture %}} + +{{% capture whatsnext %}} +* [Instalasi Minikube](/docs/tasks/tools/install-minikube/) +* Lihat [panduan memulai](/docs/setup/) untuk mencari tahu tentang pembuatan kluster. +* [Pelajari cara untuk menjalankan dan mengekspos aplikasimu.](/docs/tasks/access-application-cluster/service-access-application-cluster/) +* Jika kamu membutuhkan akses ke kluster yang tidak kamu buat, lihat [dokumen Sharing Cluster Access](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). +* Baca [dokumen referensi kubectl](/docs/reference/kubectl/kubectl/) +{{% /capture %}}