近期來虛擬化技術越來越紅了,但人也漸漸的覺得手動去部署這些容器是非常麻煩的,所以Kubernetes就這樣誕生了,相信大家也對Kubernets有一些的了解了,所以接下來就直接進入主題,直接介紹我們的主角-Azure Kubernetes Service。
準備
注意
如果你有其他放Docker images的地方,那這個步驟是可以跳過的!
首先,所有事情的起頭就是建立,所以這次也不例外,我們先建立一個放Docker images的倉庫Azure Container Registry(ACR),Azure Portal的畫面
接下來建立資源群組,相信這些步驟有看過前幾篇文章的已經很熟了!
再來搜尋"Container Registry"
填相關資料
最後直接建立即可
建立好ACR之後,我們就可以來建立AKS了!
一樣到Azure Portal的畫面
再來搜尋"Kubernetes Service"
接下來的部分可以由個人需求自由調整(我只是用最省錢的方案...)
以上我只列出我有更動的部分,其他都是直接下一步
接下來案建立即可
再來建立要等一段時間,先泡杯咖啡吧!
我們要使用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確認有沒有推成功!
接下來終於進到重頭戲了,將應用程式部署上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的畫面了!!!
今天AKS的介紹就到這邊,AKS拿來架微服務是很不錯的選擇,後續也會跟大家介紹Pipeline to AKS!!