Yuk Belajar Azure DevOps

Hi gengz, di artikel belajar sambil berbagi kali ini, yuk kita coba coba untuk Azure DevOps ya.

Proses

  1. Developer akan melakukan Push ke arah Azure Devops
  2. Azure DevOps Push ke arah Azure Container Registry
  3. Azure DevOps Push image ke arah Azure Kubernetes Service

ACR + AKS

Kita akan memulai dengan provision ACR + AKR ya gengz, saya sudah menyiapkan di repo berikut

https://github.com/ludesdeveloper/container_registry_and_kubernetes_azure

Mari kita clone dulu ya gengz

git clone https://github.com/ludesdeveloper/container_registry_and_kubernetes_azure.git

Masuk ke directory

cd container_registry_and_kubernetes_azure

Silahkan follow link dibawah ini untuk login Azure CLI ya gengz

https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli

Kita akan coba lihat subscription id yang kita miliki

az account list --output table

Lalu kita generate RBAC dulu ya gengz, ganti “your_subscription_id” dengan subscription id yang anda dapat di atas

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/your_subscription_id"

Mari kita buat file baru dengan nama “terraform.tfvars” dengan isi dibawah ini. Isi dengan informasi yang sudah kita didapatkan diatas

subscription_id = "your_subscription_id"
client_id       = "appId"
client_secret   = "password"
tenant_id       = "tenant"

Mari kita init dulu terraformnya

terraform init

Kita coba check plan dulu ya gengz

terraform plan

Bila “terraform plan” berhasil, berarti terraform sudah bisa berkomunikasi dengan baik dengan azure provider. Mari kita eksekusi ya

terraform apply -input=false -auto-approve

Ngopi dulu kita gengz, nunggu provision AKS dan ACR 🙂

Kalau sudah selesai, yuk kita copy kubeconfig nya

terraform output kube_config > config

Didalam file config, kita harus ubah dulu ya gengz, biar bisa di baca kubectl, mohon dihilangkan untuk baris berisi “EOT” dipaling awal baris, dan di akhir baris

<<EOT
apiVersion: v1
clusters:
- cluster:



EOT

Mari kita copy ke kubeconfig

cp config ~/.kube/config

Test dulu yuk kubernetes nya

kubectl get namespaces

Membuat Azure DevOps Repo

Kita clone sample code dibawah dulu ya, di directory baru

cd ..
git clone https://github.com/ludesdeveloper/multistage_docker_golang.git

Change directory

cd multistage_docker_golang

Kita akan hapus .git file, nanti sample file ini akan kita gunakan ke Azure DevOps

rm -rf .git

Mari kita reinisiasi gitnya kembali

git init
git add .
git commit -m "sample repo for Azure Pipeline"

Selanjutnya, kita akan login ke url dibawah ini

https://dev.azure.com/

Mari buat project baru

Click Repo

Silahkan copy menggunakan button

Lalu tambahkan di git remote kita

git remote add origin isi_dengan_repo_yang_anda_copy

Silahkan generate Git Credential

Lalu push ke arah repo (Masukkan Git Credentials bila dibutuhkan)

git push origin master

Yuk kita setup build

Disini kita akan memilih “Deploy to Azure Kubernetes Service”

Silahkan memilih subscription, laku tekan “Continue”

Anda akan diminta untuk login ke akun azure, silahkan login ya gengz

Silahkan sesuai kan konfigurasi dibawah ini ya gengz, lalu klik “Validate and configure”

Silahkan klik “Save and run”

Silahkan klik “Save and run”

Kita akan diarah kan ke pipeline, silahkan klik seperti dibawah ini untuk melihat detail ekseskusi

Pada deploy stage, anda akan mendapatkan asking permission seperti dibawah, silahkan klik view

Lalu silahkan klik permit

Klik kembali permit

Azure DevOps akan melanjutkan pekerjaan seperti dibawah ini, kita tunggu sampai selesai ya gengz

Ntaps, yuk kita check dulu di kubectl

kubectl get pods -n azurepipeline
kubectl get svc -n azurepipeline

Yeehaaa, sudah bisa, silahkan copy “EXTERNAL-IP”, lalu paste di browser dengan port 5000

http://external_ip_and:5000

Luar biasa, sudah bisa diakses gengz,

Melakukan Perubahan Pada Code

Mari kita rubah main.go yang kita miliki menjadi seperti dibawah ini

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "Golang Multistage Container Build Update Version",
		})
	})
	r.Run(":5000")
}

Yuk kita push ke Azure DevOps

git add .
git commit -m "Update Version"
git push origin master

Hmmm, nampaknya kita lupa nge pull gengz =)), yuk kita pull dulu, karena kita punya azurepipeline file yang ada di repo

git pull origin master

Mari kita coba push lagi ya gengz

git push origin master

Yuk nonton pipeline lagi

Sudah selesai, dan kita tidak ditanya lagi terkait permission ya gengz

Mari kita refresh external ip port 5000 di browser

Cucokz meong, udah berubah ni gengz, selamat ya, kita sudah berhasil belajar tentang Azure DevOps

Container Insight

Kebetulan untuk konfigurasi terraform kali ini, saya menggunakan Container Insight, bisa dilihat di artikel berikut untuk lebih detail

https://docs.microsoft.com/en-us/azure/developer/terraform/create-k8s-cluster-with-tf-and-aks

Yuk kita mampir ke azure portal dulu

https://portal.azure.com/#home

Mari kita lihat semua resource yang sudah terbuat

Klik pada kubernetes cluster yang telah kita buat

Mari kita klik Insight

Mari kita lihat container yang sudah terbuat

Kita bisa melakukan filter terhadap name space, dan melihat pod golang yang sudah kita buat

Bersih Bersih

Kita akan kembali ke folder awal ya gengz

cd ..
cd container_registry_and_kubernetes_azure
ls

Mari kita destroy Container Registry dan Kubernetes yang kita punya

terraform destroy -input=false -auto-approve

Untuk Azure DevOps, kita bisa menghapusnya dengan cara berikut

Untuk menghapus RBAC yang sudah dibuat, silahkan menggunakan command berikut

az ad sp delete --id principalid_yang_anda_buat

Semoga bermanfaat ya gengz

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s

Situs yang Didukung WordPress.com.

Atas ↑

%d blogger menyukai ini: