Docs

Documentation versions (currently viewingVaadin 24)
Documentation translations (currently viewingChinese)

本页面内容由官方文档 http://vaadin.com/docs 机器翻译而来,可能包含错误、不准确或不完整之处。Vaadin 不对翻译内容的准确性、可靠性或时效性做出任何保证或声明。

Azure 上的 Kubernetes

了解如何在运行于 Azure 的 Kubernetes 上设置 Control Center。

Azure 是由 Microsoft 创建的云计算服务,用于通过 Microsoft 管理的数据中心构建、测试、部署和管理应用程序与服务。它提供一系列云服务,包括计算、分析、存储和网络服务。Azure 广泛支持 Kubernetes —— 它是一个用于自动化容器化应用程序的部署、扩展及管理的开源系统。

以下是在 Azure 上为部署 Vaadin Control Center 设置 Kubernetes 集群的分步指南。

前提条件

在 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:选择要部署集群的区域。

Create Cluster
  • 点击 "Next" 配置节点池。

  • 点击 agentpool 编辑默认节点池。

    • 在节点池部分,可以配置节点数量及其规格。此示例保持默认配置,但将集群的最小规模设为 1,最大规模设为 3。这样,集群可以根据负载自动扩缩容。

    • 点击 Update 返回上一页面。

Node Pool
  • 点击 "Review + create" 以复查您的设置。

  • 点击 "Create" 创建集群。此过程需几分钟。

连接本地计算机至集群

Source code
bash
az aks get-credentials --resource-group foobar --name foobar

创建 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 区域

  • 在您的域名注册商后台,为您的域名新建 NS 记录,并将其指向 Azure 提供的域名服务器。您可在 Azure 门户中您创建的 DNS 区域下找到这些域名服务器。

Check Name Server from the DNS Zone

授权集群管理 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。