使用Azure Pipeline & Azure Kubernetes Service (AKS) 搭建BoatHouse流水线

为BoatHouse准备AKS集群和ACR

  1. ## 使用Azure CLI登录
  2. az login
  3. ## 设置默认订阅
  4. az account set -s <SubscriptionId>
  5. ## 获取当前区域最新版的aks版本号
  6. version=$(az aks get-versions -l <Location> --query 'orchestrators[-1].orchestratorVersion' -o tsv)
  7. ## 创建资源组
  8. az group create --name <ResourceGroupName> --location <Location>
  9. ## 创建aks集群
  10. az aks create --resource-group <ResourceGroupName> --name <AKSClusterName> --enable-addons monitoring --kubernetes-version $version --generate-ssh-keys --location <Location>
  11. ## 创建ACR容器镜像仓库
  12. az acr create --resource-group <ResourceGroupName> --name <ACRName> --sku Standard --location <Location>
  13. az acr login --name <ACRName>
  14. ## 获取aks访问密钥
  15. az aks get-credentials --resource-group <ResourceGroupName> --name <AKSClusterName>
  16. # 获取aks集群的clientID
  17. CLIENT_ID=$(az aks show --resource-group <ResourceGroupName> --name <AKSClusterName> --query "identityProfile.kubeletidentity.clientId" --output tsv)
  18. # 获取acr的资源id
  19. ACR_ID=$(az acr show --name <ACRName> --resource-group <ResourceGroupName> --query "id" --output tsv)
  20. # 授权aks直接访问acr
  21. az role assignment create --assignee $CLIENT_ID --role acrpull --scope $ACR_ID
  22. ## 创建namespaces
  23. kubectl create namespace boathouse-test
  24. kubectl create namespace boathouse-prod
  25. kubectl get namespaces

使用azure voting app演示AKS node pool阔缩容

  1. ## 获取代码
  2. git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
  3. cd azure-voting-app-redis
  4. ## build & run
  5. docker-compose up -d
  6. ## 发布镜像到ACR
  7. docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrname>.azurecr.io/azure-vote-front:v1
  8. az acr login --name <acrname>
  9. docker push <acrname>.azurecr.io/azure-vote-front:v1
  10. ## 在AKS上启动应用
  11. kubectl create namespace voting
  12. kubectl apply -f azure-vote-all-in-one-redis.yaml -n voting
  13. kubectl get pods -n voting
  14. kubectl get svc -n vogint
  15. ## 更新node pool自动扩容配置
  16. ## 更新yaml文件中的replica数量并从新部署

使用Virutal Node进行动态扩容

  1. ## 注册ACI Provider
  2. az provider register --namespace Microsoft.ContainerInstance
  3. az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
  4. ## 创建资源组
  5. az group create --name <ResourceGroupName> --location <Location>
  6. # 创建vnet
  7. az network vnet create \
  8. --resource-group <ResourceGroupName> \
  9. --name myVnet \
  10. --address-prefixes 10.0.0.0/8 \
  11. --subnet-name myAKSSubnet \
  12. --subnet-prefix 10.240.0.0/16
  13. az network vnet subnet create \
  14. --resource-group <ResourceGroupName> \
  15. --vnet-name myVnet \
  16. --name myVirtualNodeSubnet \
  17. --address-prefixes 10.241.0.0/16
  18. ## 创建 service principal 获取 <appId> <password>
  19. az ad sp create-for-rbac --skip-assignment
  20. ## 记录你的service principal信息
  21. ## 获取VNetId
  22. az network vnet show --resource-group <ResourceGroupName> --name myVnet --query id -o tsv
  23. ## 为vnet授权
  24. az role assignment create --assignee <appId> --scope <VNetId>
  25. ## 获取<SubNetId>
  26. az network vnet subnet show --resource-group <ResourceGroupName> --vnet-name myVnet --name myAKSSubnet --query id -o tsv
  27. ## 创建aks集群
  28. az aks create \
  29. --resource-group <ResourceGroupName> \
  30. --name myAKSCluster01 \
  31. --node-count 1 \
  32. --network-plugin azure \
  33. --service-cidr 10.0.0.0/16 \
  34. --dns-service-ip 10.0.0.10 \
  35. --docker-bridge-address 172.17.0.1/16 \
  36. --vnet-subnet-id <SubNetId> \
  37. --service-principal <appId> \
  38. --client-secret <password>
  39. ## 获取集群密钥
  40. az aks get-credentials --resource-group <ResourceGroupName> --name myAKSCluster01
  41. ## 激活虚拟节点
  42. az aks enable-addons \
  43. --resource-group <ResourceGroupName> \
  44. --name myAKSCluster01 \
  45. --addons virtual-node \
  46. --subnet-name myVirtualNodeSubnet
  47. ## 获取节点列表
  48. kubectl get nodes
  49. ## 部署示例
  50. kubectl apply -f virtual-node.yaml
  51. kubectl get pods -o wide
  52. ## 运行临时容器并测试ACI容器可访问
  53. kubectl run -it --rm testvk --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
  54. apt-get update && apt-get install -y curl
  55. curl -L http://10.241.0.4