登录项目

本页面介绍了如何在 Google Distributed Cloud (GDC) 网闸隔离配置中访问和管理工作负载和资源。其中介绍了如何进行身份验证、为可用区级和全球级资源生成 kubeconfig 文件,以及如何管理会话不活动状态。了解这些流程可确保安全可靠地访问您的项目和工作负载。

本页面适用于平台管理员群组(例如 IT 管理员)或应用运维人员群组(例如应用开发者)中希望使用 GDC 资源的受众群体。如需了解详情,请参阅适用于 GDC 网闸隔离配置文档的受众群体。

您可以使用 GDC 控制台、gdcloud CLI 或 kubectl CLI 访问工作负载。

对您的账号进行身份验证以获取访问权限

如需登录 GDC 控制台或集群,请执行以下步骤:

控制台

在新的浏览器标签页中打开以下网址,以访问 Distributed Cloud 界面 (UI):

https://GDC_URL

将 GDC_URL 替换为您用于访问基础架构运维人员 (IO) 提供的 Distributed Cloud 的域名。首次打开任何网址时,如果基础架构运营商 (IO) 配置了该页面,Distributed Cloud 会将您重定向到身份提供方登录页面。

例如,下图登录到名为 org-1 的组织的控制台界面:

控制台界面,其中显示了 org-1 项目的欢迎界面。

gdcloud

登录 gdcloud CLI 时,请使用 gdcloud auth login 命令向 gdcloud CLI 进行主账号的身份验证。gdcloud CLI 会使用该主账号进行身份验证和授权,以管理 Google Cloud 资源和服务。

在登录之前,请务必完成以下事项:

  • 下载 gdcloud CLI 二进制文件并将其安装到系统中。 如需了解详情,请参阅下载 gdcloud CLI。
  • 设置并初始化 gdcloud CLI 默认配置。请务必设置正确的组织网址,该网址用于提取登录配置端点。如需了解详情,请参阅 gdcloud CLI 安装。
  • 安装 kubectl CLI。
  • 安装身份验证插件 gdcloud-k8s-auth-plugin。如需了解详情,请参阅 gdcloud CLI 身份验证。

如需登录 Management API 服务器或 Kubernetes 集群,请完成以下步骤:

  • Management API 服务器:
  1. 导出要存储 Management API 服务器 kubeconfig 文件的路径:

    export KUBECONFIG=MANAGEMENT_API_SERVER
    

    将 MANAGEMENT_API_SERVER 替换为存储 kubeconfig 文件的目录的路径。

  2. 对 gdcloud CLI 实例进行身份验证以登录。有两种身份验证方式:

    • 标准浏览器登录:从浏览器登录时,请使用此身份验证流程。

      gdcloud auth login
      
    • 辅助设备登录:如果您的主要设备没有可用的浏览器,请使用此身份验证流程。此流程会在无法访问浏览器的主设备上启动登录,并在可以访问浏览器的辅助设备上继续登录。

      在没有浏览器的主设备上发起登录:

      gdcloud auth login --no-browser
      

      KUBECONFIG 环境变量会更新为组织中所有 API 服务器和集群的 kubeconfig 文件。如果未设置 KUBECONFIG 变量,kubectl CLI 会使用存储在 $HOME/.kube/config 中的默认 kubeconfig 文件。

      如需跳过修改 kubeconfig 文件,请在命令中添加 --skip-kubeconfig-update 标志。例如:

      gdcloud auth login --no-browser --skip-kubeconfig-update
      

      复制输出的 gdcloud CLI 命令输出,并在具有浏览器访问权限的机器上运行该命令。

  3. 按照网页上的说明完成登录流程。

    成功完成登录后,浏览器会显示消息身份验证成功。请关闭此窗口。

  4. 按照终端上的说明操作。成功登录后,终端会显示以下消息:您现在已登录。

  • Kubernetes 集群:
  1. 对 gdcloud CLI 实例进行身份验证以登录。有两种身份验证方式:

    • 标准浏览器登录:从浏览器登录时,请使用此身份验证流程。

      gdcloud auth login
      
    • 辅助设备登录:如果您的主要设备没有可用的浏览器,请使用此身份验证流程。此流程会在无法访问浏览器的主设备上启动登录,并在可以访问浏览器的辅助设备上继续登录。

      1. 在没有浏览器的主设备上发起登录:

        gdcloud auth login --no-browser
        

        主设备中的命令会输出另一个 gdcloud 命令,您必须在步骤 c 中在辅助设备上运行该命令。

      2. 重复第 1 步,在辅助设备上下载证书。

      3. 输入在步骤 a 中主设备上输出的命令,在辅助设备上完成登录。

    此操作会打开浏览器,以便登录到配置的身份提供方 (IdP)。提供您在初始 gdcloud CLI 设置期间设置的用户和密码,以便登录。

  2. 将用户身份 kubeconfig 文件导出为变量:

    export KUBECONFIG=/tmp/CLUSTER_NAME-ZONE-kubeconfig-with-user-identity.yaml
    
  3. 使用您的用户身份为可用区级集群生成 kubeconfig 文件:

    gdcloud clusters get-credentials CLUSTER_NAME --zone ZONE
    

    将 ZONE 替换为可用区名称。

    系统会使用您的用户身份生成 kubeconfig 文件。 以下 YAML 文件展示了一个示例:

    apiVersion: v1
    clusters:
    - cluster:
      certificate-authority-data: <REDACTED>
      server: https://10.200.0.32:443
    name: cluster-name
    contexts:
    - context:
      cluster: cluster-name
      user: cluster-name-anthos-default-user
    name: cluster-name-cluster-name-anthos-default-user
    current-context: cluster-name-cluster-name-anthos-default-user
    kind: Config
    preferences: {}
    users:
    - name: cluster-name-anthos-default-user
    user:
      exec:
        apiVersion: client.authentication.k8s.io/v1
        args:
        - --audience=root-admin
        command: gdcloud-k8s-auth-plugin
        env: null
        installHint: Run 'gdcloud components install gdcloud-k8s-auth-plugin' to use plugin
        interactiveMode: Never
        provideClusterInfo: false
    
  4. 如需验证您是否可以访问集群,请使用生成的 kubeconfig 文件以用户身份登录:

    kubectl --kubeconfig /tmp/admin-kubeconfig-with-user-identity.yaml version
    

退出账号

如需退出 GDC 控制台,请执行以下操作:

控制台

点击菜单栏中的 退出。

gdcloud

从 CLI 退出:

gdcloud auth revoke

手动生成 kubeconfig 文件

如果您通过直接调用 KRM API 来使用 kubectl CLI 管理资源,则必须为托管资源的集群或 API 服务器生成 kubeconfig 文件,具体取决于您管理的资源类型。

您还必须了解 GDC Universe 配置,以确定要将可用区级资源部署到哪些可用区,或确定全球资源的全球 API 服务器。如需了解详情,请参阅全球和可用区级 API 服务器。

确定您要操作的资源是全球级资源还是可用区级资源。如果您不确定,请参阅该资源的专用文档以获取帮助。

根据您的资源类型完成适用的设置。

可用区级 Management API 服务器资源

完成以下步骤,为可用区级 Management API 服务器生成 kubeconfig 文件:

  1. 查看所有可用区:

    gdcloud zones list
    

    请记下托管自定义资源的可用区的名称。

  2. 将 ZONE 环境变量设置为托管可用区级资源的可用区:

    export ZONE="ZONE"
    

    将 ZONE 替换为可用区名称。

  3. 设置 MANAGEMENT_API_SERVER 环境变量:

    export MANAGEMENT_API_SERVER="ORG_NAME-admin"
    

    将 ORG_NAME 替换为您的组织的名称,例如 org-1。

  4. 为目标可用区生成 Management API 服务器 kubeconfig 文件,并验证凭证:

    export KUBECONFIG=${HOME}/${MANAGEMENT_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${MANAGEMENT_API_SERVER:?} --zone ${ZONE:?}
    [[ $(kubectl config current-context) == *${MANAGEMENT_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 命令会移除主目录中的现有 kubeconfig 文件。生成新的 kubeconfig 文件时,它会覆盖现有文件。如果您不想覆盖或移除现有文件,请将其备份到另一个安全位置。

可用区级 Kubernetes 集群资源

完成以下步骤,为可用区级 Kubernetes 集群生成 kubeconfig 文件:

  1. 查看所有可用区:

    gdcloud zones list
    

    请记下托管自定义资源的可用区的名称。

  2. 将 ZONE 环境变量设置为托管 Kubernetes 集群的可用区:

    export ZONE="ZONE"
    

    将 ZONE 替换为可用区名称。

  3. 设置 KUBERNETES_CLUSTER 环境变量:

    export KUBERNETES_CLUSTER="KUBERNETES_CLUSTER_NAME"
    

    将 KUBERNETES_CLUSTER_NAME 替换为您的 Kubernetes 集群的名称。

  4. 为目标可用区变量生成 Kubernetes 集群 kubeconfig 文件,并验证凭据:

    export KUBECONFIG=${HOME}/${KUBERNETES_CLUSTER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${KUBERNETES_CLUSTER:?} --zone ${ZONE:?}
    [[ $(kubectl config current-context) == *${KUBERNETES_CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 命令会移除主目录中的现有 kubeconfig 文件。生成新的 kubeconfig 文件时,它会覆盖现有文件。如果您不想覆盖或移除现有文件,请将其备份到另一个安全位置。

全球 API 服务器资源

完成以下步骤,为全球 API 服务器生成 kubeconfig 文件:

  1. 设置 GLOBAL_API_SERVER 环境变量:

    export GLOBAL_API_SERVER="global-api"
    
  2. 生成全局 API 服务器 kubeconfig 文件,并验证凭据:

    export KUBECONFIG=${HOME}/${GLOBAL_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${GLOBAL_API_SERVER:?}
    [[ $(kubectl config current-context) == *${GLOBAL_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    rm ${KUBECONFIG:?} 命令会移除主目录中的现有 kubeconfig 文件。生成新的 kubeconfig 文件时,它会覆盖现有文件。如果您不想覆盖或移除现有文件,请将其备份到另一个安全位置。

会话闲置退出

在会话中闲置 15 分钟或更长时间后,GDC 控制台和 gdcloud CLI 会将您退出。Distributed Cloud 将会话不活动视为在打开的会话期间没有您的主动互动(例如没有光标或键盘移动)。活跃会话在有用户活动的情况下最长可持续 12 小时。

控制台

如果会话处于闲置状态,GDC 控制台会将您退出。在 GDC 控制台因您处于不活动状态而将您退出登录前两分钟,您会收到一个对话框,提醒您即将退出登录:

控制台界面,其中显示了一个对话框,其中包含 99 秒的计时器,倒计时结束后,用户会因处于闲置状态而退出。

在您因闲置而被退出登录后,您会看到以下界面:

控制台界面显示登录屏幕,其中包含一个横幅,横幅上显示有关会话退出的文本:“由于您的会话处于闲置状态的时间过长,您已退出系统。请重新登录或联系您的管理员寻求帮助。'

如需重新登录 GDC 控制台,请选择您的身份提供方并添加登录凭证。如果您使用监控信息中心等服务,并且 GDC 控制台因您处于不活动状态而将您退出,请重新登录以获取访问权限。

gdcloud

如果会话处于闲置状态,gdcloud CLI 会将您退出。gdcloud CLI 将您退出登录后,如果您尝试运行命令,则会收到授权错误:

Error: error when creating kube client: unable to create k8sclient: Unauthorized

如需重新登录 GDC,请按照登录中的 CLI 步骤操作。

如果您通过 Management API 服务器重新登录 GDC,kubeconfig 文件会自动更新。为避免 kubeconfig 文件更新,请在 gdcloud auth login 命令中使用 --skip-kubeconfig-update 标志。

kubectl

gdcloud CLI 会在会话处于非活跃状态后使 kubeconfig 文件过期。如果您在闲置一段时间后尝试运行 kubectl 命令,则会收到授权错误:

error: You must be logged in to the server (Unauthorized)

如需重新登录并使用 kubeconfig 文件,请按照登录中的 CLI 步骤操作。每次会话超时后,您都必须重新生成 kubeconfig 文件。