Friday 31 July 2020

Aduh pening kepala tengok senangnya nak pasang Docker di Ubuntu


Larikan arahan berikut:-
sudo apt-get update && sudo apt-get upgrade -y
apt-get install -y docker.io

Larikan arahan berikut untuk cuba Docker
sudo docker run hello-world

Contoh dari sebuah pelayan maya di komputer riba saya :)


p/s: Ubuntu 18.04 a.k.a Bionic

Semoga bermanfaat 

Macam mana nak clone vm di VirtualBox

Katakan kita dan install satu VM. Untuk VM yang seterusnya, jika OS sama, kita boleh klon sahaja. Tak perlu install dari mula. Kita juga akan pastikan VM-VM terserbut boleh berhubung

Cara-caranya:

1. Klik VM yang hendak diklon dan tekan "Ctrl + O"

2. Tukan nama dan pastikan create new MAC adresses dipilih

3. Pilih "Full Clone"


4. Dan tunggu dalam 1 minit

5. Pergi ke setting semua VM dan pastikan network diset kepada "Bridge Network". Ini untuk membolehkan VM-VM tersebut berhubung ( Connected )

6. Login ke dua VM dan cuba ping satu sama lain

7. Hostname untuk VM yang telah diklon akan menggunakan hostname VM asal. Untuk tukar hostname boleh edit /etc/hostname dan tukar kepada hostname yang baru


Semoga bermanfaat



Thursday 30 July 2020

Macam mana nak install Ubuntu Bionic Server di Oracle VirtualBox

Secara amnya ada 2 benda kena buat. Pertama sekali kena sediakan pelayan maya ( virtual machine). Keduanya kena pasang sistem operasi ( OS ). Ikuti langkah-langkah yang berikut

1. Penyediaan Pelayan Maya

Klik "new"

Masukan info yang berkenaan

2. Pemasangan system operasi

Pertama sekali kena muat turun ISO system operasi yang dikehendaki. Saya menggunakan Ubuntu Server 


Kemudian klik dua kali pada pelayan maya yang telah di buat. Pilih ISO yang telah di muat turun


Wednesday 29 July 2020

Yang terkini bukan yang terbaik unuk produksi

Di alam pengkomputeran yang terkini bukanlah terbaik malah boleh jadi sumber masalah yang besar. Sebagai contoh setakat July 2020, katakan saya nak install Kubernetes melalui kubeadm di Ubuntu. Dari CNCF punya portal latihan, katanya boleh pakai Ubuntu Bionic tapi kena pakai binary Ubuntu Xenial untuk Kubernetes. Katakan saya nak latest  punya pasal saya install OS Ubuntu Eoan yang paling terkini , bersedialah nak hadap error yang pelik-pelik. Ini kerana OS nie belum certified by team Kubernetes. Isu-isu OS nie belum didokumentkan lagi oleh itu tiada rujukan untuk selesaikan masalah ini. Masalah ni jadi lagi rumit bila anda orang pertama yang kena!!! Kalau macam ni Google pun tak boleh membantu


Tuesday 28 July 2020

Macam mana nak pasang VirtualBox di Fedora

Apakah VirtualBox?
VirtualBox  ialah sejenis hypervisor sumber terbuka dari Oracle. Apa pulak hypervisor tu? Hypervisor suatu service yang membolehkan kita buat pelayan maya ( virtual machine ).

Macam mana nak pasang?
Kali in saya ingin berkogsi cara nak pasang VirtualBox di atas Fedora 31. Dokumen rasmi VirtualBox di sini https://www.virtualbox.org/wiki/Linux_Downloads. Apa yang tidak ditunjukan oleh dokumen rasmi ialah perkara-perkara yang kena ada sebelum betul-betul boleh install. Berikut jurnal saya install VirtualBox di komputer riba saya :)

Tiru macam saya..
1. Muat turun repo VirtualBox kedalam repo komputer
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo -P /etc/yum.repos.d/

2. Update aplikasi-aplikasi di dalam komputer
sudo dnf update

3. Pasang perkakas-perkakas development
sudo dnf install @development-tools
sudo dnf install kernel-devel kernel-headers dkms qt5-qtx11extras  elfutils-libelf-devel zlib-devel

4. Pasang VirtualBox
sudo dnf install VirtualBox-6.1

5. Masukan username yang digunakan kepada kumpulan vboxusers
sudo usermod -a -G vboxusers jeffry

6. Larikan comman virtualbox.... tada...
virtualbox


Monday 27 July 2020

Tatarajah(configuration) utama untuk deployment Kubernetes

Secara amnya, ada 4 tatarajah untuk deployment Kubernetes.



1. Single Node
    Semua komponent dilarikan didalam satu server. Ini bagus untuk percubaan dan pembelajaran Kubernetes. Untuk tatarajah ini boleh cuba minikube
https://kubernetes.io/docs/setup/learning-environment/minikube/

2.Single head node, multiple workers 
 Ada satu server yang dijadikan master nodes dan beberapa server lain yang dijadikan worker nodes. Ini sesuai untuk development envirotment.

3. Multiple head node, multiple workers
 Ada beberapa server yang dijadikan master nodes dan beberapa server yang dijadikan worker nodes. API dari master nodes akan di "load balance" kan oleh sesuatu "load balancer". Scheduler dan controller-manager akan pilih siapa yang akan jadi ketua. ETCD ada di salah satu master node atau boleh di setiap worker node

4. Multiple head node + dedicated HA ETCD, multiple workers
Sama seperti #3 tapi ETCD ada cluster dia sendiri . Pada pendapat saya ini tatarajah yang poyo. Membazir jer. Letak jerlah ETCD dalam master node tu. Saiz yang bagus sebagai master node mampu nak melayan keperluan servis ETCD. Pada pendapat saya lagi ini mungkin diperlukan sekiranya ada banyak worker nodes. Kalau saya sata tak buat macam tu. Saya akan limit worker nodes bawah 50 supaya tak perlulah storage yang besar untuk ETCD.

semoga bermanfaat


Sunday 26 July 2020

Apa dalam Kubernetes?


Punyalah senang nak pakai Kubernetes ni, pengguna, pembangun dan tukang jaga hanya perlu berhubung dengan API Kubernetes sahaja untuk deploy dan undeploy aplikasi di dalam Kubernetes. Buat manifest file a.k.a yml file dan hantar ker API Kubernetes. Nanti Kubernetes pandai-pandai nak deploy aplikasi tu kat Worker Nodes yang available. Kalau Woker Nodes tu down, nanti Kubernetes tu pandai-pandai pindahkan aplikasi tu ke Worker node yang lain. Tak perlu risau pasal Komputer, Sistem Operasi dan bagai.

Itu bagi orang yang biasa-biasa. Tapi untuk orang yang luar biasa yang nak CKA kena tau dalaman Kubernetes tu pasal dalam peperiksaan CKA akan tanya semua tu.

Diagram Kubernetes dari Kubernetes.io


Kita telah maklum bahawa Kubernetes terbahagi kepada 2 bahagian utama iaitu Kubernetes Control Plane atau pun Master Node dan Kubernetes Nodes atau pun Worker Node. Kali ini kita akan mengenali isi-isi dalaman  pada Master Node dan Worker Node

Kubernetes Control Plane ( Master Node)

1. kube-api server
    Ini merupakan pintu utama untuk berkomunikasi dengan kluster Kubernetes. Ia menawarkan API Kubernetes kepada pengguna-pengguna luar dan servis-servis dalaman. Pengguna hanya perlu berkomunikasi dengan API Kubernetes untuk deploy dan undeploy aplikasi di Kubernetes.

2. etcd
    Ini merupakan internal key value store database yang menyimpan data-data kluster Kubernetes

3. kube-scheduler
    Applikasi di Kubernetes akan diletakan didalam satu tempat yang bertindak seperti sebuah server yang dikenali sebagai pod. Aplikasi dalam format container akan dilarikan didalam pod ini. Tugas kube-scheduler ialah untuk meletakan pod pada worker node yang sesuai dengan spesifikasi pod tersebut.

4. kube-control-manager
   Ini untuk mengawal process di Kubernetes termasuk
   i. node controller: menjaga nodes dan respond apabila ada node yang mati
   ii. replication controller: menjaga bilangan pod berdasarkan setting replication
   iii. endpoint controller: menjaga endpoint service dan pod
   iv. service account and token controller: create default accounts and access token

5. cloud-controller-manager
    Ini menjaga logik unuk berhubung dengan API cloud luar.


Kubernetes Nodes ( Worker Node)
1. kublet
    Merupakan agent yang ada pada setiap node. Ia memastikan container berlari dalam pod seperti spec yang ditetapkan.

2. kube-proxy
    Merupakan proxy network yang ada pada setiap node. Ia menjaga network untuk pod

3. container-runtime
    Merupakan service bagi container engine. Selalunya ini ialah service Docker

semoga bermanfaat

Macam mana nak rakam skrin di Gnome? Macam mana nak ada laser pointer kat Impress?

Salah satu cara mudah untuk merakam skrin pada Gnome ialah dengan menambah EasyScreenCast Gnome extenstion. Berikut adalah cara-caranya:-

Pastikan versi Gnome shell dengan command berikut:-
$ gnome-shell --version
GNOME Shell 3.34.5


Kemudian pergi ke https://extensions.gnome.org/extension/690/easyscreencast/ dan pilih versi yang sesuai dengan Gnome-shell anda. Oleh kerana Gnome Shell saya 3.34.5 saya pilih 3.30.

Kemudian pilih latest versi extension yang terkini


Download Zip file yang diberi

Pasang EasyScreenCast extension dengan command berikut
gnome-extensions install Downloads/EasyScreenCastiacopodeenosee.gmail.com.v40.shell-extension.zip 

Sekarang perlu restart Gnome-Shell. Tekan Alt + F2, isu command restart dan tekan kekunci Enter


Sekiranya berjaya nanti akan ada ikon camcorder dia taskbar seperti ini

Perlu set kepada encoder yang ada dalam komputer . By default ada ogg vorbis. Oleh itu kita tukar kepada itu
Klik ikon camcorder -> Options -> File -> File Container "Ogg"

Sekarang kita boleh rakam.
Clik ikon camcorder dan rakam

Dalam video ni saya enable pen untuk presentation. Pen ini kelihatan semasa presentation dan boleh tulis. Ini boleh jadi "work around" kepada laser pointer.


Achtung!! Apa yang ditulis dengan pen tu susah nak padam jika dah save. Kalau dah save nak padam macam nie:-

Sunday 12 July 2020

Apa itu Kubernetes?



Berdasarkan definisi kubernetes.io, kubernetes ialah sistem sumber terbuka untuk pengautomatikan deployment, penskalaan ( scaling ) dan pengurusan aplikasi yang telah dicontainerizekan . Pada awalnya ianya merupakan project dalaman Google yang dinamakan Borg. Setelah 15 tahun penggunaanya, Google mendermakan project ini kepada komuniti sumber terbuka dan mereka menamakanya Kubernetes.

Oleh kerana ejaan Kubernetes ini terlalu panjang, selalunya ia di tulis K8s. No 8 itu adalah jumlah huruf selepas huruf K hingga ke huruf s dalam perkataan Kubernetes. Cara nak sebut K8s ialah seperti sebutan perkataan ini "Kate's"

Kubernetes dibina dengan menggunakan GO lang. GO lang ialah bahasa pengaturcaraan  dari Google. Salah satu penciptanya ialah Ken Thomson, iaitu pencipta bahasa pengaturcaraan C. Oleh itu jika kita lihat pada sturuktur pengaturcaraan GO lang ada bau-bau bachang C 

Kuberenetes ni berkuasa tinggi tapi nak pakai kena faham macam mana nak pakai dengan betul baru terserlah dia punya kekuasaanya. Pada sistem monolithic design dahulunya orang akan beli pelayan yang besar dan berkuasa tinggi and perlu mempunyai kebolehan uptime yang lama. Jika tak cukup kuasa boleh tambah lagi CPU dan RAM sampai segkak. Bila dah tak boleh tambah lagi, terpaksalah beli pelayan yang lebih besar dah sambung proses tambah CPU dan RAM sampai akhir.

Penggunaan sistem monolithic ini tidak sesuai di Kubernetes. Sistem monolithic perlu direka semula kepada microservice dimana ia dipecahkan kepada aplikasi-aplikasi kecil. Aplikasi-aplikasi ini tidak perlu uptime yang lama malah ianya boleh mati bila-bila dan boleh diganti .

Seperti yang telah dikatakan pada awal tadi, Kubernetes ni pengurusan aplikasi yang telah dicontainerizekan. Oleh itu yang hendak dilarikan di atas Kubernetes perlu dicontainerizekan dahulu. Secara lalai, format container yang digunakan ialah Docker.

Selain Kubernetes, ada pesaing-pesaing lain yang boleh menguruskan deployment aplikasi-aplikasi yang telah dicontainerizekan. Contohnya:-
1. Docker Swarm
2. Nomad
3. Rancher
4. Apache Mesos

Design Kubernetes dari Kubernetes.io

Secara ringkasnya Kubernetes terdiri dari 2 bahagian:-

1. Kubernetes Control Plane atau lebih dikenali sebagai Master Node. Pengguna hanya berurusan dengan Master server dan Master server akan deploy aplikasi-aplikasi di worker node

2. Kubernetes Nodes atau lebih dikenali sebagai Worker Node. Applikasi-applikasi akan berlari di sini.


Wednesday 1 July 2020

Macam mana nak mount NFS storage ke kluster Kubernetes



1. Pastikan FW dibuka dari Kubernetes ke NFS storage. Untuk FW rules
source: Kubernetes IP ( bab nie tricky sikit kena tengok Kubernetes ko cap apa. Kalau PKS ini adalah egress worker nodes)
destination: IP NFS server dan port yang berikut.
Portmapper 
Nfsd
Mountd
Nlockmgr
status

2. Expose NFS storage dari NFS server. Katakan IP NFS Server 192.168.1.100, nanti NFS storage akan diberi dalam bentuk

192.168.1.100:/volume001

3. Sekarang boleh mount terus NFS kat POD dalam kluster Kubernetes. Cuba tengok contoh dibawah. Di dalam contoh ni volume NFS tu di mount kepada /usr/share/nginx/html

kind: Deployment
metadata:
  name: nginx-nfs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-nfs
  template:
    metadata:
      labels:
        app: nginx-nfs
    spec:
      containers:
      - name: nginx-nfs
        image: nginx:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nfs-dev
          mountPath: /usr/share/nginx/html # Please change the destination you like the share to be mounted too
      volumes:
       - name: nfs-dev
         nfs:
          server: 192.168.1.100
          path: /volume001

Semoga bermanfaat

Tatacara klon pelayan di AWS lightsail

  Kadang-kala kita diminta untuk buat satu sistem baru untuk tujuan ujikaji atau percubaan fungsi baru. Jika di AWS lightsail kita boleh bua...