Azure 上的 Kubernetes
- 前提条件
- 在 Azure 上创建 Kubernetes 集群
- 连接本地计算机至集群
- 创建 DNS 区域并授权集群进行管理(可选,推荐操作)
- 部署 Vaadin Control Center
- 访问 Vaadin Control Center
Azure 是由 Microsoft 创建的云计算服务,用于通过 Microsoft 管理的数据中心构建、测试、部署和管理应用程序与服务。它提供一系列云服务,包括计算、分析、存储和网络服务。Azure 广泛支持 Kubernetes —— 它是一个用于自动化容器化应用程序的部署、扩展及管理的开源系统。
以下是在 Azure 上为部署 Vaadin Control Center 设置 Kubernetes 集群的分步指南。
前提条件
-
如果尚未安装 Azure CLI(
az),请从 http://docs.microsoft.com/en-us/cli/azure/install-azure-cli 安装。 -
如果尚未安装 Kubernetes CLI(
kubectl),请从 http://kubernetes.io/docs/tasks/tools/ 安装。
在 Azure 上创建 Kubernetes 集群
-
登录 http://portal.azure.com,并在菜单中搜索 "Kubernetes"。
-
点击 "Kubernetes services",然后点击 "Create cluster"。
-
填写所需字段:
-
Subscription:选择您的 Azure 订阅。如果尚未拥有订阅,可以新建一个。对于新用户,Azure 提供免费试用额度。
-
Cluster Preset:对于开发或测试环境,选择 "Dev/Test"。此选项会创建一个节点数较少且成本较低的集群。对于生产环境,请选择合适的生产配置文件。
-
Resource Group:创建一个新的资源组,并根据您的使用场景命名。本示例使用 "foobar"。稍后您可以使用此名称作为参考,以便轻松删除此组中的所有资源。
-
Kubernetes Cluster Name:为您的集群输入一个名称。本示例同样可用 "foobar"。
-
Region:选择要部署集群 的区域。
-
-
点击 "Next" 配置节点池。
-
点击
agentpool编辑默认节点池。-
在节点池部分,可以配置节点数量及其规格。此示例保持默认配置,但将集群的最小规模设为 1,最大规模设为 3。这样,集群可以根据负载自动扩缩容。
-
点击 Update 返回上一页面。
-
-
点击 "Review + create" 以复查您的设置。
-
点击 "Create" 创建集群。此过程需几分钟。
创建 DNS 区域并授权集群进行管理(可选,推荐操作)
Vaadin Control Center 可以为您的应用程序管理 DNS 名称和证书。若要实现该功能,您需创建 DNS 区域并授权集群进行管理。此步骤为可选但推荐执行。
创建 DNS 区域
-
在 Azure 门户的菜单中搜索 "DNS zones"。
-
点击 "DNS zones",然后点击 "Create"。
-
填写所需字段:
-
Subscription:选择您的 Azure 订阅。
-
Resource Group:选择之前创建的资源组(例如 "foobar")。
-
Name:输入您的 DNS 区域名称。此处应填写您拥有或有访问权限的域名。本示例使用 "example.com"。
-
-
点击 "Review + create" 以复查设置。
-
点击 "Create" 创建 DNS 区域。此过程需几分钟。
授权集群管理 DNS 区域
-
首先,为集群管理 DNS 区域创建身份验证文件。
Source code
bash
export NAME=<name you used before, in this example "foobar">
export DOMAIN=<your domain name, in this example "example.com">
export RESOURCEGROUP=$NAME
export KUBENAME=$NAME
export PRINCIPAL_ID=$(az aks show --resource-group $RESOURCEGROUP --name $KUBENAME --query "identityProfile.kubeletidentity.objectId" --output tsv)
export IDENTITY_CLIENT_ID=$(az aks show --resource-group $RESOURCEGROUP --name $KUBENAME --query "identityProfile.kubeletidentity.clientId" --output tsv)
export DNS_ID=$(az network dns zone show --name $DOMAIN --resource-group $RESOURCEGROUP --query "id" --output tsv)
az role assignment create --role "DNS Zone Contributor" --assignee $PRINCIPAL_ID --scope $DNS_ID
cat > azure.json <<EOF
{
"tenantId": "$(az account show --query tenantId -o tsv)",
"subscriptionId": "$(az account show --query id -o tsv)",
"resourceGroup": "$RESOURCEGROUP",
"useManagedIdentityExtension": true,
"userAssignedIdentityID": "$IDENTITY_CLIENT_ID"
}
EOF-
然后,使用身份验证文件创建 Kubernetes secret。
Source code
kubectl create namespace $NAME
kubectl create secret generic azure-config-file --namespace $NAME --from-file=azure.json部署 Vaadin Control Center
使用上述已创建的 DNS 区域(推荐)
此处假设您已创建 DNS 区域并授权集群进行管理。如果未执行上述操作,您依然可以部署 Vaadin Control Center,但需要手动管理 DNS 名称和证书。
-
首先,创建部署配置文件。
Source code
bash
cat > cc-config.yaml <<EOF
domain: &domain $DOMAIN
acme:
enabled: true
external-dns:
enabled: true
provider:
name: azure
txtOwnerId: "control-center"
domainFilters:
- *domain
fullnameOverride: external-dns
serviceAccount:
labels:
azure.workload.identity/use: "true"
annotations:
azure.workload.identity/client-id: $IDENTITY_CLIENT_ID
podLabels:
azure.workload.identity/use: "true"
extraVolumes:
- name: azure-config-file
secret:
secretName: azure-config-file
extraVolumeMounts:
- name: azure-config-file
mountPath: /etc/kubernetes
readOnly: true
EOF-
然后,使用该配置文件部署 Vaadin Control Center。
Source code
bash
helm install control-center oci://docker.io/vaadin/control-center \
--set user.email=your@email.address.com \
-n $NAME \
--set ingress-nginx.controller.service.externalTrafficPolicy=Local \
--values cc-config.yaml \
--wait无 DNS 区域部署(不推荐)
-
部署 Vaadin Control Center
Source code
bash
helm install control-center oci://docker.io/vaadin/control-center \
--set user.email=your@email.address.com \
-n $NAME --create-namespace \
--set domain=example.com \
--set ingress-nginx.controller.service.externalTrafficPolicy=Local \
--wait-
为您的应用程序及 Control Center 创建 DNS 名称和证书。
访问 Vaadin Control Center
-
获取 Control Center 的临时密码。
Source code
bash
kubectl get secret control-center-user -n $NAME -o go-template="{{ .data.password | base64decode | println }}"-
使用上述命令输出中的 URL(格式为
http://control.<your-domain>;)、安装时填写的邮箱及上一步获取的临时密码登录 Vaadin Control Center。