Menerapkan ke Kubernetes dengan Actions
Siapkan Penerapan Berkelanjutan ke klaster Kubernetes dan kelola penerapan serta layanan langsung dari GitHub Actions.
Menerapkan ke Kubernetes dengan Actions adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Pengantar CD K8s dengan Actions
Selamat datang! Dalam pelajaran ini, Anda akan mempelajari cara menyiapkan Continuous Deployment (CD) ke cluster Kubernetes menggunakan GitHub Actions.
Dengan mengotomatiskan deployment, perubahan aplikasi Anda dapat segera digunakan secara cepat dan andal, tanpa langkah manual.
Kita akan membahas autentikasi, penerapan manifest Kubernetes, dan pengelolaan pembaruan.
Dasar-Dasar Deployment K8s
Sebelum melakukan deployment, mari kita mengingat kembali dua resource inti Kubernetes:
- Deployment: Resource ini mengelola Pod aplikasi Anda dan memastikan jumlah replika yang diinginkan selalu berjalan. Resource ini juga menangani pembaruan dan pengembalian ke versi sebelumnya.
- Service: Resource ini menentukan cara mengakses aplikasi Anda, misalnya secara internal di dalam cluster atau secara eksternal melalui LoadBalancer.
Tujuan kita adalah menerapkan file YAML yang mendefinisikan resource tersebut ke cluster dari GitHub Actions.
Mengautentikasi Actions ke K8s
Untuk melakukan deployment, alur kerja GitHub Actions Anda perlu berkomunikasi dengan server API cluster Kubernetes.
Hal ini memerlukan autentikasi. Cara standar untuk mengautentikasi ke Kubernetes adalah menggunakan file kubeconfig.
Kita perlu menyediakan isi file ini dengan aman kepada runner alur kerja.
Mengamankan Kubeconfig
File kubeconfig berisi informasi sensitif seperti endpoint cluster dan kredensial pengguna. File ini harus dirahasiakan!
GitHub Actions menyediakan Secrets untuk tujuan ini. Anda akan menyimpan isi file kubeconfig sebagai secret repositori.
Bagaimana cara mendapatkan kubeconfig? Caranya bergantung pada penyedia K8s Anda, misalnya aws eks update-kubeconfig atau gcloud container clusters get-credentials.
Menyiapkan Konteks K8s
Setelah kubeconfig disimpan sebagai secret, misalnya dengan nama KUBE_CONFIG_DATA, alur kerja Anda dapat menggunakannya.
Praktik yang umum adalah menulis isi secret ke file sementara pada runner, lalu mengatur variabel lingkungan KUBECONFIG agar menunjuk ke file tersebut.
Dengan demikian, kubectl mengetahui lokasi detail koneksi cluster.
Menggunakan `kubectl` dalam Alur Kerja
kubectl adalah alat baris perintah resmi untuk berinteraksi dengan cluster Kubernetes. Runner GitHub Actions telah dilengkapi kubectl.
Setelah menyiapkan kubeconfig, Anda dapat menjalankan perintah kubectl apa pun dalam langkah-langkah alur kerja Anda.
Mari kita lihat contoh dasar:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientManifest Deployment K8s Sederhana
Berikut adalah manifest Kubernetes dasar untuk Deployment dan Service aplikasi "hello-world". Manifest inilah yang akan kita minta untuk dijalankan oleh Kubernetes.
Contoh ini menggunakan image Nginx sederhana dan mengeksposnya pada port 80.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerAlur Kerja Deployment Lengkap
Sekarang, mari kita integrasikan langkah deployment ke dalam alur kerja. Setelah membuat dan mendorong image container Anda dari pelajaran sebelumnya, Anda dapat melakukan deployment.
Alur kerja ini mengasumsikan bahwa secret kubeconfig Anda telah diatur dan file manifest, misalnya k8s/deployment.yaml, tersedia di repositori Anda.
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlMemperbarui Aplikasi Anda
Salah satu fitur hebat kubectl apply adalah sifat idempotennya. Jika resource yang didefinisikan dalam YAML Anda sudah ada, kubectl apply akan memperbaruinya, bukan membuat resource baru.
Untuk melakukan deployment versi baru aplikasi, cukup perbarui tag image dalam deployment.yaml, lalu dorong perubahan tersebut. GitHub Actions kemudian akan terpicu, dan Kubernetes akan melakukan pembaruan bergulir, mengganti pod lama dengan pod baru secara bertahap untuk memastikan waktu henti seminimal mungkin.
Pemeriksaan Singkat
Anda telah mempelajari langkah-langkah penting untuk melakukan deployment aplikasi ke Kubernetes menggunakan GitHub Actions.
Manakah dari urutan berikut yang benar untuk langkah-langkah alur kerja GitHub Actions dalam melakukan deployment manifest Kubernetes?
Rangkuman & Langkah Berikutnya
Kerja bagus! Anda telah mempelajari cara menyiapkan Continuous Deployment ke Kubernetes menggunakan GitHub Actions.
- Kita menyimpan data sensitif
kubeconfigdi GitHub Secrets. - Alur kerja menggunakan secret ini untuk mengonfigurasi
kubectl. kubectl apply -fdigunakan untuk melakukan deployment atau memperbarui manifest K8s.- Kubernetes menangani pembaruan bergulir saat perubahan diterapkan.
Kombinasi yang kuat ini mengotomatiskan deployment Anda sehingga proses pengembangan menjadi lebih lancar dan cepat. Teruslah menjelajahi fitur K8s yang lebih canggih!
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menerapkan ke Kubernetes dengan Actions” gratis?
Ya — teks lengkap “Menerapkan ke Kubernetes dengan Actions” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menerapkan ke Kubernetes dengan Actions”?
Siapkan Penerapan Berkelanjutan ke klaster Kubernetes dan kelola penerapan serta layanan langsung dari GitHub Actions. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?
Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Menerapkan ke Kubernetes dengan Actions” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?
Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membangun Citra Docker dengan Actions
- Mengirim Citra ke Registri
- Menerapkan ke Kubernetes dengan Actions
- Chart Helm dan Manifes Kubernetes dalam CI/CD