使用Azure Pipeline & Azure Kubernetes Service (AKS) 搭建BoatHouse流水线
为BoatHouse准备AKS集群和ACR
## 使用Azure CLI登录az login## 设置默认订阅az account set -s <SubscriptionId>## 获取当前区域最新版的aks版本号version=$(az aks get-versions -l <Location> --query 'orchestrators[-1].orchestratorVersion' -o tsv)## 创建资源组az group create --name <ResourceGroupName> --location <Location>## 创建aks集群az aks create --resource-group <ResourceGroupName> --name <AKSClusterName> --enable-addons monitoring --kubernetes-version $version --generate-ssh-keys --location <Location>## 创建ACR容器镜像仓库az acr create --resource-group <ResourceGroupName> --name <ACRName> --sku Standard --location <Location>az acr login --name <ACRName>## 获取aks访问密钥az aks get-credentials --resource-group <ResourceGroupName> --name <AKSClusterName># 获取aks集群的clientIDCLIENT_ID=$(az aks show --resource-group <ResourceGroupName> --name <AKSClusterName> --query "identityProfile.kubeletidentity.clientId" --output tsv) # 获取acr的资源idACR_ID=$(az acr show --name <ACRName> --resource-group <ResourceGroupName> --query "id" --output tsv)# 授权aks直接访问acraz role assignment create --assignee $CLIENT_ID --role acrpull --scope $ACR_ID## 创建namespaceskubectl create namespace boathouse-testkubectl create namespace boathouse-prodkubectl get namespaces
使用azure voting app演示AKS node pool阔缩容
## 获取代码git clone https://github.com/Azure-Samples/azure-voting-app-redis.gitcd azure-voting-app-redis## build & rundocker-compose up -d## 发布镜像到ACRdocker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrname>.azurecr.io/azure-vote-front:v1az acr login --name <acrname>docker push <acrname>.azurecr.io/azure-vote-front:v1## 在AKS上启动应用kubectl create namespace votingkubectl apply -f azure-vote-all-in-one-redis.yaml -n votingkubectl get pods -n votingkubectl get svc -n vogint## 更新node pool自动扩容配置## 更新yaml文件中的replica数量并从新部署
使用Virutal Node进行动态扩容
## 注册ACI Provideraz provider register --namespace Microsoft.ContainerInstanceaz provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table## 创建资源组az group create --name <ResourceGroupName> --location <Location># 创建vnetaz network vnet create \ --resource-group <ResourceGroupName> \ --name myVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16az network vnet subnet create \ --resource-group <ResourceGroupName> \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16## 创建 service principal 获取 <appId> <password>az ad sp create-for-rbac --skip-assignment## 记录你的service principal信息## 获取VNetIdaz network vnet show --resource-group <ResourceGroupName> --name myVnet --query id -o tsv## 为vnet授权az role assignment create --assignee <appId> --scope <VNetId>## 获取<SubNetId>az network vnet subnet show --resource-group <ResourceGroupName> --vnet-name myVnet --name myAKSSubnet --query id -o tsv## 创建aks集群az aks create \ --resource-group <ResourceGroupName> \ --name myAKSCluster01 \ --node-count 1 \ --network-plugin azure \ --service-cidr 10.0.0.0/16 \ --dns-service-ip 10.0.0.10 \ --docker-bridge-address 172.17.0.1/16 \ --vnet-subnet-id <SubNetId> \ --service-principal <appId> \ --client-secret <password>## 获取集群密钥az aks get-credentials --resource-group <ResourceGroupName> --name myAKSCluster01## 激活虚拟节点az aks enable-addons \ --resource-group <ResourceGroupName> \ --name myAKSCluster01 \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet## 获取节点列表kubectl get nodes## 部署示例kubectl apply -f virtual-node.yamlkubectl get pods -o wide## 运行临时容器并测试ACI容器可访问kubectl run -it --rm testvk --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 apt-get update && apt-get install -y curl curl -L http://10.241.0.4