部署

部署 Operator时,如下所示附加一个新的 console 部分。

global:
  image: <PRIVATE_REGISTRY>/alluxio-operator
  imageTag: 3.3.2

console:
  web:
    authType: none

authTypenone 时,管理控制台没有登录页面,也不执行任何身份验证。

为了生产环境的安全,建议启用身份验证。您可以将 authType 更改为 okta 以与 Okta 集成。更多详情,请参阅 Okta Auth Type

启用 Okta 的配置示例:

global:
  image: <PRIVATE_REGISTRY>/alluxio-operator
  imageTag: 3.3.2

console:
  web:
    authType: okta
    oktaIssuer: https://your-okta-domain/oauth2/default
    oktaClientID: your-client-id-value

安装 Operator 后,您可以验证控制台 pod 是否在 alluxio-operator 命名空间中运行:

kubectl get pods -n alluxio-operator

示例输出:

NAME                                             READY   STATUS    RESTARTS   AGE
alluxio-cluster-controller-6768ff89dc-4dggt      1/1     Running   0          2m
alluxio-collectinfo-controller-87bbf67c8-m6rf6   1/1     Running   0          2m
alluxio-console-7ff487467c-kt88v                 1/1     Running   0          2m
alluxio-csi-controller-67b6c49786-55g9w          2/2     Running   0          2m
alluxio-csi-nodeplugin-lszbp                     2/2     Running   0          2m
alluxio-csi-nodeplugin-pmcwg                     2/2     Running   0          2m
alluxio-csi-nodeplugin-qknjd                     2/2     Running   0          2m
alluxio-license-controller-55fb54868-rmsq8       1/1     Running   0          2m
alluxio-ufs-controller-579c85f95f-vpd8d          1/1     Running   0          2m

查找 alluxio-console-* pod(在此示例中为 alluxio-console-7ff487467c-kt88v)以确认管理控制台正在运行。确认后,您可以按照下述方式访问管理控制台。

访问管理控制台

有几种方法可以访问控制台。

通过节点主机名访问

默认情况下,管理控制台会创建一个 ClusterIP 类型的 Kubernetes 服务,使其只能在集群内部访问。要从外部通过主机名或 IP 地址访问,您可以将服务类型更改为 NodePort 并指定一个端口(例如 30002)来暴露服务。

global:
  image: <PRIVATE_REGISTRY>/alluxio-operator
  imageTag: 3.3.2

console:
  web:
    authType: okta
    oktaIssuer: https://your-okta-domain/oauth2/default
    oktaClientID: your-client-id-value
  service:
    type: NodePort
    ports:
      api: 80
    nodePort: 30002

如果您知道主机的 IP 地址并已配置适当的安全组(具体设置取决于您的云服务提供商),您可以通过 IP-address:30002 访问服务。

如果您想通过主机名访问,可以获取主机名:

kubectl -n alluxio-operator get pod $(kubectl -n alluxio-operator get pod -l app.kubernetes.io/component=console --no-headers -o custom-columns=:metadata.name) -o jsonpath='{.spec.nodeName}'

假设主机名是 foo.kubernetes.org,那么您可以在以下地址访问管理控制台:

http://foo.kubernetes.org:80/

通过负载均衡器访问

要从外部暴露管理控制台,您可以配置一个 LoadBalancer 类型的 Kubernetes 服务。这允许来自集群外部的流量到达控制台组件。

以下是通过负载均衡器暴露控制台的服务定义示例:

apiVersion: v1
kind: Service
metadata:
  name: load-balancer
  namespace: alluxio-operator
  annotations:
    # 以下注释是针对 AWS 的。对于其他云提供商,请参阅其文档以了解 LoadBalancer 配置。
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app.kubernetes.io/instance: operator
    app.kubernetes.io/name: console

将以上内容保存为 load-balancer.yaml 并通过以下命令创建:

kubectl create -f load-balancer.yaml

服务创建后,Kubernetes 将根据您的云提供商提供一个外部 IP 或 DNS 名称。您可以使用以下命令检查状态:

kubectl -n alluxio-operator get service load-balancer

示例输出:

load-balancer   LoadBalancer   171.33.111.33  some-random-string.region.elb.amazonaws.com   80:30977/TCP   8m50s

您现在可以在浏览器中使用外部 IP 或 DNS 名称访问管理控制台。

集群管理

进入主页后,页面将显示当前 Kubernetes 环境中所有已部署的 Alluxio 集群。

您也可以单击“添加集群”按钮来创建新集群。系统提供两种创建集群的方式:

  • 手动配置:通过填写表单来配置集群参数,适用于需要逐步配置的场景

  • 上传 Yaml:直接上传现有的 Alluxio YAML 配置文件,适用于已存在配置文件的情况

在此示例中,我们演示如何使用手动配置通过填写表单来创建集群。

在手动配置页面,您需要填写集群的基本信息。

在此示例中,我们将部署一个带有控制台的集群,因此我们需要同时启用网关和控制台。

单击“下一步”后,系统将生成一个资源类型为 AlluxioCluster 的 YAML 文件。此文件将用于创建一个名为“alluxio”的新集群。您可以根据需要编辑此 YAML 文件,添加或修改配置项。

从生成的 YAML 文件中,您可以看到由于启用了网关和控制台,系统已自动为这两个组件生成了基本配置。接下来,我们将重点关注与控制台相关的配置选项。

启用审计日志

审计日志记录管理控制台中的用户活动和系统事件,以用于安全和合规目的。此功能默认启用,无需额外配置。

访问审计日志: 您可以在 Web 控制台 Pod 内的 /opt/alluxio/console/audit-logs/console-audit.log 查看日志文件。

配置示例:

apiVersion: k8s-operator.alluxio.com/v1
kind: AlluxioCluster
spec:
  console:
    enabled: true
    image: <PRIVATE_REGISTRY>/alluxio-console
    imageTag: AI-3.7-13.0.0
    auditLog:
      enabled: true  # 设置为 false 以禁用审计日志

配置网关和控制台之间的 TLS 连接

当您的网关中启用 TLS(传输层安全)时,您需要配置管理控制台以建立安全的 TLS 连接。这包括向 Web 控制台提供 CA(证书颁发机构)证书,它将使用该证书来验证网关的 TLS 证书。

  1. 准备证书文件

    • 获取有效的 CA 证书文件(通常名为 ca.crt

    • 准备网关证书(server.crt)和私钥(server.key)文件

    • 确保网关证书由 CA 正确签名

  2. 创建 Kubernetes 秘密

    # 使用 CA 证书、网关证书和密钥创建secret
    kubectl create secret generic gateway-k8s-secret-name \
      --from-file=ca.crt=/path/to/ca.crt \
      --from-file=server.key=/path/to/server.key \
      --from-file=server.crt=/path/to/server.crt \
      --namespace=alx-ns
  3. 配置您的 Alluxio 集群

    apiVersion: k8s-operator.alluxio.com/v1
    kind: AlluxioCluster
    spec:
      gateway:
        enabled: true
        image: <PRIVATE_REGISTRY>/alluxio-gateway
        imageTag: AI-3.7-13.0.0
        tls:
          enabled: true
          secretName: gateway-k8s-secret-name 
          certFile: server.crt 
          certKeyFile: server.key 
      console:
        enabled: true
        image: <PRIVATE_REGISTRY>/alluxio-dashboard
        imageTag: AI-3.7-13.0.0
        gateway:
          secretName: gateway-k8s-secret-name  
          caFile: ca.crt                  

重要说明:

  • 您配置中的 secretName 必须与创建的 Kubernetes secret 的名称完全匹配

  • 所有文件名(caFilecertFilecertKeyFile)必须与 secret 中使用的文件名匹配

  • 验证您的 CA 证书和网关证书是否有效且未过期

  • 管理控制台在连接期间使用 CA 证书来验证网关的 TLS 证书

  • 关键: CA 证书必须与网关证书属于同一证书链;使用不相关的 CA 将导致 TLS 验证失败

Okta 认证类型

Okta 身份验证为您的管理控制台提供安全的企业级访问控制。请按照以下步骤设置和使用 Okta 身份验证:

1. 在 Okta 中配置应用程序

  1. 登录到您的 Okta 管理仪表板

  2. 导航到 应用程序 > 应用程序

  3. 单击 创建应用集成

  4. 选择 单页应用程序 (SPA) 类型

  1. 使用您的应用程序名称和一些选项完成基本配置

  1. 在应用程序设置的 登录 部分,配置:

    • 登录重定向 URIhttp://your-domain:your-port/login/callback

    • 注销重定向 URIhttp://your-domain:your-port/user/login

    • your-domainyour-port 替换为您的实际域和端口值

    • 这些设置确保在 Okta 身份验证完成后正确重定向

  1. 保存您的应用程序配置

2. 用户组分配和授权

要控制对管理控制台的访问:

  1. 在您的 Okta 管理仪表板中,导航到 目录 >

  1. 如果尚不存在,请创建用户组(例如,“Admins”)

  2. 将适当的用户分配到这些组

  3. 返回到您的应用程序设置

  4. 分配 选项卡下,分配应有权访问管理控制台的用户组

3. 授权服务器配置

管理控制台需要特定的 OAuth 范围才能正常运行:

  1. 在您的 Okta 管理仪表板中,导航到 安全 > API

  2. 选择您的授权服务器(或根据需要创建一个)

  3. 转到 范围 选项卡

  4. 单击 添加范围

  1. 创建一个名为 alluxio 的范围,并附上适当的描述

  2. 管理控制台需要 openid 范围(Okta 中的默认范围)和此自定义 alluxio 范围

  3. 如果在您的部署中启用了授权,请将您指定的声明与此范围关联。在下面的屏幕截图中,授权配置中的 roleFieldName 设置为 userTypegroupFieldName 设置为 department。请访问 用户角色和访问控制 了解更多信息。

4. 获取配置值

完成设置后,为您的管理控制台配置收集这些值:

  1. Okta 颁发者 URL

    • 在您的 Okta 管理仪表板中导航到 安全 > API

    • 选择您的授权服务器

    • 复制颁发者 URL(格式:https://your-okta-domain/oauth2/default

  2. 客户端 ID

    • 转到您的应用程序设置

    • 客户端凭据 部分复制客户端 ID

  3. 使用这些值更新您的 Alluxio 配置:

    web:
      authType: okta
      oktaIssuer: https://your-okta-domain/oauth2/default
      oktaClientID: your-client-id-value

5. 登录过程

带 Okta 选项的管理控制台登录页面
Okta 认证门户

使用 Okta 身份验证时:

  1. 导航到您的管理控制台 URL

  2. 登录页面将显示一个“使用 Okta 登录”按钮

  3. 单击此按钮将被重定向到您组织的 Okta 身份验证门户

  4. 输入您的 Okta 凭据并完成任何多因素身份验证(如果已配置)

  5. 成功验证后,您将被重定向回管理控制台的仪表板

  6. 您的会话将根据您的 Okta 令牌配置保持活动状态

6. Okta 集成故障排除

如果您遇到 Okta 身份验证问题:

  • 验证重定向 URI 在 Okta 和您的应用程序中都已正确配置

  • 检查用户是否已分配到有权访问应用程序的适当组

  • 确保 alluxio 范围已正确创建并与您的授权服务器关联

  • 确认您配置中的颁发者 URL 和客户端 ID 与 Okta 中的值匹配

配置授权

管理控制台支持访问控制,以根据角色和职责限制用户权限。可以配置授权来控制哪些用户可以访问特定功能并在系统内执行某些操作。

有关设置和管理授权的详细说明,请参阅 用户角色和访问控制 文档。

Last updated