Anda di halaman 1dari 10

Lab RBX Kubernetes: Hari-2

Selamat datang di Lab RBX Menjelajahi Aplikasi!


Bersama Anda di breakout adalah partner Anda, yang mana akan bersama-sama melakukan tes

Lab dan menjawab pertanyaan yang diberikan. Bila ada tanda ini maka konsultasikan
pertanyaan dan jawaban anda dengan Partner anda di breakout room.

Lab 1: Menjelajahi aplikasi

Menyebarkan aplikasi image “yonoinix/aplikasirbx:v1”

Anda ingin men-deploy aplikasi kubernetes dengan instruksi kubectl create deployment. Kita
perlu memberikan nama deployment dan lokasi image dari aplikasi (masukan URL repositori yang
lengkap untuk image yang ada di luar Docker hub) Pada lab ini kita menggunakan Image yang
bernama yonoinix/aplikasirbx:v1. Image ini tersedia di Docker Hub.

$ kubectl create deployment aplikasirbx \


--image=docker.io/yonoinix/aplikasirbx:v1
deployment.apps/aplikasirbx created

Anda sudah berhasil men-deploy aplikasi dengan membuat sebuah deployment

Anda ingin menjelajahi aplikasi yang sudah dibuat di Kubernetes.


1.1. Memeriksa aplikasi yang sudah di-deploy di modul sebelumnya dengan menggunakan
instruksi kubectl get dan melihat Pod yang ada.

$ kubectl get pods


NAME READY STATUS RESTARTS AGE
aplikasirbx-5864c5465c-ckzzx 1/1 Running 0 13m

1 | © 2021 INIXINDO
1.2. Selanjutnya untuk melihat kontainer apa yang ada didalam Pod dan image apa yang
digunakan untuk membangun kontainer tersebut, jalankan instruksi kubectl describe pods.

$ kubectl describe pods


Name: aplikasirbx-5864c5465c-ckzzx
Namespace: default
Priority: 0
Node: minikube/192.168.99.100
Start Time: Mon, 18 Jan 2021 09:28:53 +0700
Labels: app=aplikasirbx
pod-template-hash=57978f5f5d
Annotations: <none>
Status: Running
IP: 172.17.0.4
IPs:
IP: 172.17.0.4
Controlled By: ReplicaSet/aplikasirbx-57978f5f5d
Containers:
aplikasirbx:
Container ID:
docker://b800bc722d89496d54747aad58e6c3f30b6b269ce263da39ed82bbf100200
7b2
Image: docker.io/yonoinix/aplikasirbx:v1
Image ID: docker-
pullable://docker.io/yonoinix/aplikasirbx@sha256:0d6b8ee63bb57c5f5b615
6f446b3bc3b3c143d233037f3a2f00e279c8fcc64af
Port: <none>
Host Port: <none>
State: Running
Started: Mon, 18 Jan 2021 09:29:41 +0700
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-
token-dt4j8 (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
default-token-dt4j8:

2 | © 2020 INIXINDO -
Type: Secret (a volume populated by a Secret)
SecretName: default-token-dt4j8
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for
300s
node.kubernetes.io/unreachable:NoExecute op=Exists
for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 14m default-scheduler Successfully assigned
default/aplikasirbx-5864c5465c-ckzzx to minikube
Normal Pulling 14m kubelet Pulling image
"docker.io/yonoinix/aplikasirbx:v1"
Normal Pulled 13m kubelet Successfully pulled
image " docker.io/yonoinix/aplikasirbx:v1" in 45.914948029s
Normal Created 13m kubelet Created container
aplikasirbx
Normal Started 13m kubelet Started container
aplikasirbx

Anda dapat lihat disini detail tentang kontainer dari Pod: alamat IP, Image yang digunakan dan
daftar event terkait siklus hidup dari Pod tersebut.

Tulis nama Pod disini : ______________


Tulis nama Image yang digunakan disini : ______________
Tulis IP Address Pod disini? : ______________
Tanyakan ke partner, apakah IP nya berbeda?

1.3. Mengingatkan kembali bahwa Pod berjalan dalam sebuah jaringan privat yang terisolasi,
sehinga membutuhkan akses proxy ke mereka, sehinga dapat men-debug dan berinteraksi. Untuk
ini, akan menggunakan instruksi kubectl proxy untuk menjalankan proxy di jendela terminal kedua.

3 | © 2020 INIXINDO -
Selanjutnya jalankan instruksi kubectl proxy untuk meneruskan komunikasi dari host ke jaringan
private di dalam klaster.

Terminal 1

$ kubectl proxy
Starting to serve on 127.0.0.1:8001

Untuk melihat hasil aplikasi yang sudah di-deploy, Buka browser Firefox dan akses ke
http://localhost:8001/api/v1/namespaces/default/pods/aplikasirbx-
5864c5465c-ckzzx:80/proxy/

Atau bisa diakses dengan baris instruksi di terminal 2 dengan curl:

Terminal 2

4 | © 2020 INIXINDO -
$ curl http://localhost:8001/api/v1/namespaces/default/pods/
aplikasirbx-5864c5465c-ckzzx:80/proxy/

<!doctype html>
<html lang="en">

<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1,
shrink-to-fit=no">
<meta property="og:image" content="assets/img/kubernetes.png">

. . . . .
<center>
<h1>Selamat datang di Implementasi Aplikasi dengan
Container di Kubernetes</h1>
<hr>
<img class="img-fluid" src="assets/img/kubernetes2.png"
alt="Responsive image">
</center>
</div>
<div class="fd">
<center>
<h5>Halo, Aplikasi RBX | Berjalan di : aplikasirbx-
5864c5465c-ckzzx</h5>
<h5>Aplikasi Versi: v1</h5>
</center>
</div>

5 | © 2020 INIXINDO -
. . . . . . . .
</body>

</html>

1.4. Semua yang biasa dikirim ke STDOUT menjadi log untuk kontainer dalam Pod. Kita dapat
mengambilnya dengan menggunakan intruksi kubectl logs:

$ kubectl logs aplikasirbx-5864c5465c-ckzzx

. . . . . .
172.17.0.1 - - [13/Apr/2021:02:27:25 +0000] "GET
/assets/img/kubernetes.png HTTP/1.1" 200 8653
"http://localhost:8001/api/v1/namespaces/default/pods/aplikasirbx-
5864c5465c-ckzzx:80/proxy/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64;
rv:87.0) Gecko/20100101 Firefox/87.0"
172.17.0.1 - - [13/Apr/2021:02:38:29 +0000] "GET / HTTP/1.1" 200 1876
"-" "curl/7.58.0"
. . . . . .

Lab 2: Mengkases Shell

2.1. Anda dapat menjalankan instruksi secara langsung di dalam kontainer setelah Pod siap dan
berjalan. Untuk ini, anda dapat menggunakan instruksi exec diikuti dengan nama Pod sebagai
parameter. Mari kita lihat daftar variabel lingkungan yang ada di kontainer:

$ kubectl exec aplikasirbx-5864c5465c-ckzzx env


kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a
future version. Use kubectl exec [POD] -- [COMMAND] instead.
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=aplikasirbx-5864c5465c-ckzzx
APLIKASIRBX_SERVICE_HOST=10.96.69.68

6 | © 2020 INIXINDO -
APLIKASIRBX_PORT_80_TCP_ADDR=10.96.69.68
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
APLIKASIRBX_PORT_80_TCP_PORT=80
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
APLIKASIRBX_SERVICE_PORT=80
APLIKASIRBX_PORT=tcp://10.96.69.68:80
APLIKASIRBX_PORT_80_TCP=tcp://10.96.69.68:80
APLIKASIRBX_PORT_80_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT=443
PHPIZE_DEPS=autoconf dpkg-dev file g++
gcc libc-dev make pkg-config re2c
PHP_INI_DIR=/usr/local/etc/php
APACHE_CONFDIR=/etc/apache2
APACHE_ENVVARS=/etc/apache2/envvars
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -
D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_LDFLAGS=-Wl,-O1 -pie
GPG_KEYS=1729F83938DA44E27BA0F4D3DBDB397470D12172
B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F
PHP_VERSION=7.2.34

7 | © 2020 INIXINDO -
PHP_URL=https://www.php.net/distributions/php-7.2.34.tar.xz
PHP_ASC_URL=https://www.php.net/distributions/php-7.2.34.tar.xz.asc
PHP_SHA256=409e11bc6a2c18707dfc44bc61c820ddfd81e17481470f3405ee7822d837
9903
HOME=/root

2.2. Selanjutkan untuk memulai sesi bash di kontainer dapat meggunakan instruksi berikut:

$ kubectl exec -ti aplikasirbx-5864c5465c-ckzzx bash


kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a
future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@aplikasirbx-5864c5465c-ckzzx:/#

2.3. Anda sekarang telah membuka konsol dalam kontainer di mana anda menjalankan aplikasi
Apache dengan PHP. Port dari aplikasi ini ada di dalam berkas /etc/apache2/ports.conf:

root@aplikasirbx-5864c5465c-ckzzx:/# cat /etc/apache2/ports.conf

Listen 80

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

Tulis no Port HTTP disini : ______________

2.4. Dan sumber data dari aplikasi Apache dengan PHP ada di berkas
/var/www/html/index.php. Anda dapat memastikan bahwa aplikasi sudah siap dengan
menjalankan instruksi curl:

root@aplikasirbx-5864c5465c-ckzzx:/# curl localhost:80

8 | © 2020 INIXINDO -
<!doctype html>
<html lang="en">

<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-
scale=1, shrink-to-fit=no">
<meta property="og:image" content="assets/img/kubernetes.png">

. . . . .
<center>
<h1>Selamat datang di Implementasi Aplikasi dengan
Container di Kubernetes</h1>
<hr>
<img class="img-fluid" src="assets/img/kubernetes2.png"
alt="Responsive image">
</center>
</div>
<div class="fd">
<center>
<h5>Halo, Aplikasi RBX | Berjalan di : aplikasirbx-
5864c5465c-ckzzx</h5>
<h5>Aplikasi Versi: v1</h5>
</center>
</div>

. . . . . . . .
</body>

9 | © 2020 INIXINDO -
</html>

Tanyakan ke partner, apakah bisa mengakses halaman web sercara langsung? Lalu kenapa bisa
akses langsung ke host, tanpa menggunakan proxy?

10 | © 2020 INIXINDO -

Anda mungkin juga menyukai