BAGIAN 1: PEMAHAMAN
MENDALAM SISTEM OPERASI
(OPERATING SYSTEM)
Sistem Operasi adalah perangkat lunak sistem yang mengelola perangkat keras komputer,
sumber daya perangkat lunak, dan menyediakan layanan umum untuk program komputer.
Sebagai seorang DevOps Engineer, memahami cara kerja sistem operasi adalah fondasi
utama.
1.1 Manajemen Proses
Proses adalah program yang sedang dieksekusi. Sistem operasi bertanggung jawab atas
pembuatan, penjadwalan, dan penghentian proses. Penjadwalan CPU menentukan proses
mana yang berhak menggunakan prosesor pada waktu tertentu untuk memastikan efisiensi
sistem.
1.2 Manajemen Memori
Sistem operasi harus melacak setiap byte di memori utama dan mengalokasikan ruang
untuk proses yang membutuhkannya. Konsep Memori Virtual memungkinkan sistem
menjalankan aplikasi yang lebih besar dari kapasitas fisik memori dengan menggunakan
ruang pada disk sebagai area swap.
1.3 Sistem File dan I/O
Manajemen input/output (I/O) menangani komunikasi antara komputer dan perangkat
eksternal seperti disk drive, keyboard, dan monitor. Sistem operasi menyediakan lapisan
abstraksi sehingga aplikasi tidak perlu mengetahui detail teknis dari setiap perangkat keras.
Bagian 2: Jaringan Komputer untuk DevOps
Jaringan adalah tulang punggung komunikasi antar layanan dalam arsitektur modern.
2.1 Model OSI (Open Systems Interconnection)
Model OSI terdiri dari tujuh lapisan: Physical, Data Link, Network, Transport, Session,
Presentation, dan Application. Pemahaman pada Lapisan 3 (Network - IP Address) dan
Lapisan 4 (Transport - TCP/UDP) adalah yang paling kritikal dalam DevOps.
2.2 Protokol dan Alamat IP
Internet Protocol (IP) memungkinkan pengalamatan perangkat di jaringan. Protokol TCP
(Transmission Control Protocol) menjamin pengiriman data yang andal, sementara UDP
(User Datagram Protocol) digunakan untuk kecepatan tanpa jaminan pengiriman.
2.3 DNS dan Load Balancing
Domain Name System (DNS) menerjemahkan nama domain yang mudah diingat menjadi
alamat IP. Load Balancing mendistribusikan lalu lintas jaringan ke beberapa server untuk
mencegah beban berlebih pada satu unit saja.
Bagian 3: Administrasi Linux dan Instalasi
Infrastruktur
Linux adalah sistem operasi standar di dunia server dan cloud.
3.1 Perintah Dasar Linux
• man: Melihat manual atau dokumentasi perintah.
• grep: Mencari pola teks di dalam file.
• chmod/chown: Mengelola hak akses dan kepemilikan file.
• systemctl: Mengelola layanan (services) di latar belakang.
3.2 Instalasi Docker di Linux
Proses instalasi Docker melibatkan penambahan repositori resmi Docker, pembaruan paket
sistem, dan instalasi paket docker-ce. Pastikan layanan Docker diaktifkan dengan perintah
systemctl enable --now docker .
3.3 Instalasi Kubernetes (minikube/kubeadm)
Untuk lingkungan belajar, Minikube adalah pilihan terbaik. Instalasi melibatkan
pengunduhan binari kubectl dan minikube, kemudian menjalankan perintah minikube
start untuk menginisialisasi cluster satu node.
Bagian 4: Tutorial Mendalam Docker
(Mastering Containerization)
Docker merevolusi cara perangkat lunak dikemas dan didistribusikan.
4.1 Apa itu Kontainer?
Kontainer adalah unit standar perangkat lunak yang mengemas kode dan semua
dependensinya sehingga aplikasi berjalan cepat dan andal dari satu lingkungan komputasi
ke lingkungan lainnya. Berbeda dengan Virtual Machine, kontainer berbagi kernel sistem
operasi yang sama.
4.2 Arsitektur Docker
Docker menggunakan arsitektur client-server. Docker Client berbicara dengan Docker
Daemon, yang melakukan pekerjaan berat dalam membangun, menjalankan, dan
mendistribusikan kontainer Anda.
4.3 Dockerfile dalam Detail
Dockerfile adalah skrip instruksi untuk membangun gambar (image). Instruksi penting
meliputi FROM, RUN, COPY, EXPOSE, dan CMD.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Eksplorasi Perintah Docker: Perintah 'docker build' digunakan untuk menciptakan image
dari Dockerfile. Setelah image tercipta, 'docker run' akan mengubah image tersebut menjadi
kontainer yang aktif. Untuk mengelola siklus hidupnya, kita menggunakan 'docker ps'
untuk melihat daftar kontainer, 'docker stop' untuk menghentikan, dan 'docker rm' untuk
menghapus kontainer.
Docker Networking: Secara default, Docker menyediakan jaringan jembatan (bridge
network). Namun, untuk aplikasi yang kompleks, kita bisa membuat jaringan kustom agar
antar kontainer dapat berkomunikasi menggunakan nama layanan sebagai pengganti alamat
IP yang dinamis.
Docker Volumes: Karena kontainer bersifat fana (ephemeral), data yang tersimpan di
dalamnya akan hilang saat kontainer dihapus. Docker Volumes memungkinkan persistensi
data dengan memetakan folder di dalam kontainer ke folder di host fisik.
Bagian 5: Tutorial Mendalam Kubernetes
(Orchestration Excellence)
Kubernetes, sering disingkat K8s, adalah platform open-source untuk mengotomatisasi
penyebaran, penskalaan, dan pengelolaan aplikasi terkontainerisasi.
5.1 Komponen Control Plane
• API Server: Titik masuk tunggal untuk semua perintah manajemen.
• etcd: Penyimpanan kunci-nilai yang konsisten untuk data cluster.
• Scheduler: Menentukan di node mana pod baru harus berjalan.
• Controller Manager: Menangani tugas-tugas rutin seperti replikasi.
5.2 Objek Dasar Kubernetes
Pod: Unit terkecil yang dapat dideploy di Kubernetes. Pod membungkus satu atau lebih
kontainer.
Service: Menyediakan alamat IP stabil dan nama DNS untuk sekumpulan Pod.
Deployment: Mengelola siklus hidup aplikasi, memungkinkan pembaruan tanpa henti
(rolling update) dan pengembalian versi (rollback).
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.
Manajemen Konfigurasi dengan ConfigMap dan Secret: Kubernetes memungkinkan
pemisahan konfigurasi dari kode aplikasi. ConfigMap digunakan untuk data non-sensitif,
sementara Secret digunakan untuk menyimpan kata sandi, token, atau kunci privat secara
aman di dalam cluster.
Auto-scaling: Horizontal Pod Autoscaler (HPA) secara otomatis menyesuaikan jumlah Pod
dalam deployment berdasarkan penggunaan CPU atau metrik khusus lainnya. Ini
memastikan aplikasi tetap responsif selama lonjakan lalu lintas.
Ingress Controller: Bertindak sebagai gerbang masuk cerdas (Layer 7) yang mengarahkan
lalu lintas HTTP/HTTPS eksternal ke layanan internal di dalam cluster berdasarkan nama
host atau jalur URL.