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

- Developer akan melakukan Push ke arah Azure Devops
- Azure DevOps Push ke arah Azure Container Registry
- 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
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