iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 7
0
Microsoft Azure

Azure 的奇幻之旅系列 第 7

Azure 系列文(7) - Azure Kubernetes Service

近期來虛擬化技術越來越紅了,但人也漸漸的覺得手動去部署這些容器是非常麻煩的,所以Kubernetes就這樣誕生了,相信大家也對Kubernets有一些的了解了,所以接下來就直接進入主題,直接介紹我們的主角-Azure Kubernetes Service。

準備

  • Azure 帳號
  • Azure 訂用帳戶
  • Docker
  • kuberctl

建立Azure Container Registry

注意
如果你有其他放Docker images的地方,那這個步驟是可以跳過的!

首先,所有事情的起頭就是建立,所以這次也不例外,我們先建立一個放Docker images的倉庫Azure Container Registry(ACR),Azure Portal的畫面
https://ithelp.ithome.com.tw/upload/images/20200916/20127994QgYuoptfvb.png

接下來建立資源群組,相信這些步驟有看過前幾篇文章的已經很熟了!
https://ithelp.ithome.com.tw/upload/images/20200916/20127994htT3qTcc09.png

再來搜尋"Container Registry"
https://ithelp.ithome.com.tw/upload/images/20200916/20127994x86sG9ChjN.png

填相關資料
https://ithelp.ithome.com.tw/upload/images/20200916/20127994rhXULlu6kS.png

最後直接建立即可
https://ithelp.ithome.com.tw/upload/images/20200916/20127994jwr6taecin.png

建立第一個Azure Kubernetes Service !

建立好ACR之後,我們就可以來建立AKS了!

一樣到Azure Portal的畫面
https://ithelp.ithome.com.tw/upload/images/20200916/20127994QgYuoptfvb.png

再來搜尋"Kubernetes Service"
https://ithelp.ithome.com.tw/upload/images/20200916/20127994TxVEhkTC1b.png

接下來的部分可以由個人需求自由調整(我只是用最省錢的方案...)
https://ithelp.ithome.com.tw/upload/images/20200916/20127994UjI299zrLm.png

https://ithelp.ithome.com.tw/upload/images/20200916/20127994crpIFlxrsZ.png

https://ithelp.ithome.com.tw/upload/images/20200916/201279946nCM401zNK.png
以上我只列出我有更動的部分,其他都是直接下一步

接下來案建立即可
https://ithelp.ithome.com.tw/upload/images/20200916/2012799437nkEGUHH2.png

再來建立要等一段時間,先泡杯咖啡吧!

上傳Image至ACR

我們要使用AKS之前要先把Image丟上ACR,然後AKS啟動服務時會去pull iamges

az acr login --name {ACR-Name}

docker pull image (這邊用我的範例程式示範)

docker pull llc564978/python-flask-hello

docker tag (注意 {ACR-Name}要改成小寫的)

docker tag llc564978/python-flask-hello {ACR-Name}.azurecr.io/sample

推到ACR

docker push {ACR-Name}.azurecr.io/sample

恭喜已經把Image推上ACR了,也可以透過ACR的Portal確認有沒有推成功!
https://ithelp.ithome.com.tw/upload/images/20200916/20127994I9zXW532rl.png

部署到AKS

接下來終於進到重頭戲了,將應用程式部署上AKS!!!

首先取得Kuberbetes的credentials

az aks get-credentials --resource-group={ResourceGroup} --name={AKS-ResourceName}

接下來就可以透過Commnad line操作AKS了,例如

kubectl get namespace

就可以取得AKS的Namespace

接下來將這個檔案複製到你的本機電腦

back-end.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backend
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
      - name: backend
        image: jesperaks.azurecr.io/sample
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  type: LoadBalancer
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: backend

接下來用kubectl指令部署上Kubernetes

kubectl apply -f back-end.yaml

接下來用kubectl取得建立狀態

kubectl get pods

建立完成後,用kubectl指令取得IP:Port

kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}:8080'

瀏覽IP及Port,恭喜可以看到Flask的畫面了!!!
https://ithelp.ithome.com.tw/upload/images/20200916/20127994U87wO4NBCz.png

今天AKS的介紹就到這邊,AKS拿來架微服務是很不錯的選擇,後續也會跟大家介紹Pipeline to AKS!!


上一篇
Azure 系列文(6) - Pipeline Make life easier (下)
下一篇
Azure 系列文(8) - Azure Kubernetes Service to Pipeline
系列文
Azure 的奇幻之旅30

尚未有邦友留言

立即登入留言