本文档概述了将现有 Looker 实例从 Looker(原始版本)环境迁移到 Looker (Google Cloud Core) 的技术步骤。
Looker (Google Cloud Core) 是一个与 Google Cloud 平台深度集成的部署环境。Looker (Google Cloud Core) 托管在 Google Cloud 基础架构上;您可以直接通过 Google Cloud 控制台进行管理;它与 Google Cloud的许多其他产品、服务和功能深度集成。
Looker (Google Cloud Core) 不支持从 Looker(原始版本)实例迁移到启用了 FIPS 的 Looker (Google Cloud Core) 实例,因为 Looker(原始版本)实例不支持 FIPS 合规性。
准备工作
- 通过查看以下文档,熟悉 Google Cloud 原则和工具:
- 请与您的客户代表联系,了解迁移事宜以及您的 Looker(原始版本)实例是否符合条件。如果您的实例符合条件,并且您已升级现有 Looker(原始版本)合同以涵盖 Looker (Google Cloud Core),则可以完成本文档中的步骤来迁移实例。
-
如需获得准备迁移所需的权限,请让管理员为您授予 Looker (Google Cloud Core)实例所在的 Google Cloud 项目的以下 IAM 角色:
-
创建 Looker (Google Cloud Core) 实例:Looker Admin (
roles/looker.admin)。 -
在 Google Cloud 项目中分配 IAM 角色:Project IAM Admin (
roles/resourcemanager.projectIamAdmin)。 -
创建 Cloud Storage 存储桶:Storage Admin (
roles/storage.admin)。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
创建 Looker (Google Cloud Core) 实例:Looker Admin (
- 如需管理 Looker(原始版本)实例以准备迁移,您必须在该实例中拥有 Admin Looker 角色。
创建一个新的“空”Looker (Google Cloud Core) 实例。
请务必为新的 Looker (Google Cloud Core) 实例选择适当的版本、网络连接类型(公共安全连接或专用连接)和其他配置属性(CMEK、VPC-SC),以确保其具备必要的功能。Looker (Google Cloud Core) 中的某些功能取决于所选版本或所选网络类型。
让实例保持“空”状态;不要在其中填充任何数据,例如模型文件、用户、连接、探索、信息中心或文件夹。在导入步骤中,所有设置或内容都将被清除,并替换为迁移的数据。
不过,通过 Google Cloud 控制台指定的 Looker (Google Cloud Core) 配置属性,或只能在实例创建期间指定的配置属性,在迁移过程中不会被覆盖。
概览
概括来讲,迁移过程包括以下步骤。
- 确保您的 Looker(原始版本)实例已做好迁移准备。
- 从 Looker(原始版本)实例中导出数据。
- 将数据导入新的“空”Looker (Google Cloud Core) 实例。
- 完成 Looker (Google Cloud Core) 实例的设置。
- 停用 Looker(原始版本)实例。
以下各部分详细介绍了其中每个步骤。
确保您的 Looker(原始)实例已准备好进行迁移
您的 Looker(原版)实例必须满足以下前提条件,才能进行迁移:
- 您的 Looker(原创版)实例必须由 Google 管理(即非客户托管),并托管在 Google Cloud 或 Amazon Web Services 上。
您的 Looker(原始版本)实例必须使用与当前 Looker (Google Cloud Core) 版本相差不超过一个每月版本的版本。如需查找当前的 Looker (Google Cloud Core) 版本,请参阅 Looker 版本说明,并查找最新的部署公告。
此外,请在迁移前执行以下活动:
Looker(原始版本)和 Looker (Google Cloud Core) 之间存在一些功能差异。请查看这些差异,确保 Looker (Google Cloud Core) 中的功能能够满足您的持续需求。
迁移会复制所有生产模式项目及其包含的模型文件,但不会复制属于个别用户的开发模式项目。为确保开发模式文件通过迁移进行转移,您必须在启动迁移之前将所有开发模式项目中的所有文件提交到 Git 代码库。
Looker (Google Cloud Core) 仅支持 Google OAuth、SAML 和 OpenID Connect 身份验证方法。
- 如果您的 Looker(原始版本)实例使用其他身份验证方法(例如邮箱和密码或 LDAP),请将所有用户转换为 Looker (Google Cloud Core) 支持的身份验证方法。如需防止在转换用户时创建重复的用户账号,请参阅排查因电子邮件地址更改而导致 Looker 账号重复的问题。
- 尽可能保留 Looker(原版)实例中使用的外部身份验证方法。
- 如果您更改外部身份验证方法(例如,从 OpenID Connect 更改为 SAML),之前镜像的群组仍会保留在 Looker 中,并由前一种方法进行外部管理。如果您在新身份验证方法中配置同名的镜像群组,Looker 会返回
Looker group name already exists in the system错误,并且用户可能会丢失角色映射。为避免此冲突,请在 Looker 界面中指定其他群组名称(例如<group_name>_v2)。 - 如果您的 Looker(原始)实例已使用 Google OAuth,则所有用户记录都将转移,但您仍必须在 Looker (Google Cloud Core) 实例的项目中为用户手动创建 IAM 权限。
- 如果您的 Looker(原版)实例使用 SAML,则必须将SAML 身份验证管理控制台页面上的使用以下方式合并用户设置设为 Google 或 OIDC,以避免在测试 SAML 身份验证时出错。
- 如果您的 Looker(原始)实例使用 OIDC,则必须将OpenID Connect 身份验证管理控制台页面上的合并用户时使用设置设为 Google 或 SAML,以避免在测试 OpenID Connect 身份验证时出错。
- 如果您使用的是外部身份提供方,则必须将身份提供方中的回调网址更新为 Looker(Google Cloud 核心版)网址,以便对新的 Looker (Google Cloud Core)实例进行身份验证。
- 如果您的 Looker (Google Cloud Core) 实例将使用 SAML 或 OpenID Connect 作为身份验证方法,建议您同时设置 Google OAuth,作为 Looker (Google Cloud Core) 的备用身份验证方法。
- 如果您要将自定义网域与 Looker (Google Cloud Core) 实例搭配使用,请在启用自定义网域后再为该实例设置 SAML 或 OpenID Connect。
在迁移期间,两个 Looker 实例(一个 Looker [原始版本] 实例和一个 Looker (Google Cloud Core) 实例)将并行运行一段时间。任何自动执行的活动(例如提醒和预定的数据传送,以及访问后端数据库的后台活动)都可能会重复。为避免重复活动,请删除 Looker(原始版本)或 Looker (Google Cloud Core) 实例中的自动提醒和时间表。
从 Looker(原始)实例中导出数据
从 Looker(原始版本)实例导出数据需要执行两个步骤:
请参阅为 Looker (Google Cloud Core) 实例一次性导入或导出数据文档,了解导出操作中包含和不包含哪些数据。
创建用于存储迁移数据的位置
在您创建 Looker (Google Cloud Core) 实例的同一 Google Cloud 项目中执行以下所有操作。
- 创建新的 Cloud Storage 存储桶(例如
<bucket-name>)。- 此存储桶将用于存储迁移数据。
- 按照创建存储桶文档页面上的说明操作。
- 请注意,
<bucket-name>在所有 Google Cloud中必须是唯一的。我们建议在存储桶名称前加上唯一标识符,例如您的项目 ID。
- 为 Cloud Storage 存储桶内的文件夹确定一个名称(例如
<folder-name>)。现在不要创建该文件夹。在导出请求期间指定文件夹名称。系统会在导出过程中自动创建该数据集。 - 在 Cloud KMS 中创建密钥环和密钥(例如
<kms_keyring_id>和<kms-key-id>)。- 此密钥将用于加密迁移数据。由于它是 KMS 密钥,因此您只需在 Looker(原版)管理控制台中的导出页面上披露密钥名称,而无需披露密钥本身。
- 按照创建密钥环和创建密钥文档页面上的说明操作。
- 专门为迁移创建新的服务账号(例如
<export-service-account>)。- 此服务账号与 Looker 服务账号不同。
- 按照创建服务账号文档页面中的说明操作。
向
<export-service-account>授予两个特定的 IAM 角色:- 针对 Cloud Storage 存储桶的
Storage Object Creator权限 - KMS 密钥的
Cloud KMS CryptoKey Encrypter角色 - 请按照使用 IAM 权限 (Cloud Storage) 和使用 IAM 进行访问权限控制 (KMS) 文档页面上的说明操作。
- 针对 Cloud Storage 存储桶的
创建与
<export-service-account>关联的服务账号密钥,然后下载 JSON 密钥文件。- 按照创建和删除服务账号密钥文档页面上的说明操作。
请求导出
确保实例已准备好进行迁移、创建了“空”Looker (Google Cloud Core) 实例,并创建了用于存储迁移数据的位置后,请在 Looker(原版)实例的管理控制台面板中的导出页面中输入以下信息:
- 您创建的 Cloud Storage 存储桶的名称。
- Cloud Storage 文件夹名称 - 导出期间,系统会自动创建具有此名称的文件夹。导出完成后,导出文件将显示在您创建的 Cloud Storage 存储桶中此文件夹内带有时间戳的子文件夹中。
- KMS 密钥名称。
- 包含服务账号密钥的 JSON 文本。
在导出页面上输入信息后,点击请求导出以启动导出。
导出过程需要几分钟到几小时。导出完成后,您会在 Cloud Storage 存储桶和文件夹中看到多个导出文件(采用非人类可读格式)。这些文件是后续导入步骤的输入。
将数据导入新的“空”Looker (Google Cloud Core) 实例
导出实例数据后,您可以将其导入 Looker (Google Cloud Core) 实例。
按照将数据从 Cloud Storage 导入 Looker (Google Cloud Core) 实例页面上的说明操作,将命令指向放置导出文件的存储桶和文件夹。
导入操作需要几分钟到几小时。迁移完成后,您的 Looker (Google Cloud Core) 实例将重启,并包含所有迁移的数据。
完成 Looker (Google Cloud Core) 实例的设置
此时,Looker 管理员可以前往实例网址并登录实例,以完成设置。
迁移过程会尽可能多地复制 Looker(原始)实例配置。不过,有些内容无法迁移,或者在 Looker (Google Cloud Core)中的运作方式略有不同,必须进行调整。
已知需要特别注意的一些事项包括:
常规设置(在 Looker 管理面板中) |
常规设置(以及管理面板中的其他设置)的大多数选项不会自动复制,因为它们在 Looker (Google Cloud Core)中往往有所不同或不存在。您应根据所选的 Looker (Google Cloud Core) 配置,仔细检查并配置所有设置。如需详细了解 Looker (Google Cloud Core) 中的设置,请参阅通过 Looker 管理 Looker (Google Cloud Core) 实例和通过 Google Cloud 控制台管理 Looker (Google Cloud Core) 实例文档页面。 |
用户 |
Looker (Google Cloud Core) 仅支持 Google OAuth、SAML 和 OpenID Connect 身份验证方法。 尽可能保留 Looker(原版)实例中使用的外部身份验证方法。 如果 Looker(原始)实例也配置了 Google OAuth,则系统会复制用户记录及其属性(只要它们在两个实例中都与同一 Google ID 和电子邮件地址相关联)。Project IAM Admin 必须为每个用户授予实例所在 Google Cloud 项目的 Looker Admin 或 Looker Instance User IAM 角色。 如果 Looker(原始)实例配置为使用 SAML 或 OpenID Connect,请确保身份验证方法的合并用户时使用字段仅指示 Looker (Google Cloud Core) 支持的身份验证方法。 如果您在迁移期间更改外部身份验证方法(例如,从 OpenID Connect 更改为 SAML),之前镜像的群组仍会保留在 Looker 中,并由前一种方法进行外部管理。如果您在新的身份验证方法中配置同名的镜像群组,Looker 会返回“Looker group name already exists in the system”(系统中已存在该 Looker 群组名称)错误,并且用户可能会失去角色映射。为避免此冲突,请在 Looker 界面中指定其他群组名称(例如 如果 Looker(原始版本)实例的某些用户通过 Looker (Google Cloud Core) 不支持的机制(例如 LDAP 或电子邮件地址和密码)进行身份验证,则需要重新创建这些用户账号并将其转换为受支持的身份验证方法。 如需防止在转换用户时创建重复的用户账号,或排查迁移期间创建的重复账号,请参阅排查电子邮件更改时重复的 Looker 账号问题。 |
数据库连接数 |
Looker (Google Cloud Core) 支持的数据库方言与 Looker(原始版本)略有不同。数据库连接的所有配置属性(包括连接字符串和密码,如果适用)都会被复制。不过,Looker (Google Cloud Core)中的网络拓扑不同,可能会导致数据库连接无法立即正常运行。例如,如果数据库是通过特定于 Looker(原始)实例的防火墙或隧道访问的,您可能需要重新配置防火墙或隧道。您应测试每个连接,并在必要时重新建立连接。 |
使用 OAuth 的数据库连接 |
从 Looker(原始)迁移到 Looker (Google Cloud Core)不会保留单个用户与 BigQuery 或 Snowflake 的数据库连接的 OAuth 访问令牌或刷新令牌。迁移后,当 Looker (Google Cloud Core) 用户查看引用 OAuth 数据库连接的探索或信息中心时,系统会提示他们重新进行 OAuth 身份验证。用户还可以前往账号页面,然后在 OAuth 连接凭据标题下为每个数据库选择登录,从而重新向其数据库进行身份验证。由单个用户拥有且引用 OAuth 连接的所有自动时间表或提醒都将失效,直到该用户使用其 OAuth 凭据登录。 |
Git 代码库连接 |
如果实例使用的是裸 Git 代码库,则这些代码库应该无需修改即可正常运行(已复制,但未共享)。但如果实例连接到远程仓库,则可能需要验证并重新启用这些连接,就像数据库连接一样。 |
其他网络配置 |
Looker 实例可能具有其他类型的网络连接,包括入站和出站连接(例如,在专用连接、Action Hub、Marketplace、电子邮件等上下文中)。这些网络连接也必须经过验证。 |
用于访问 Looker (Google Cloud Core) 实例的网址 |
Looker (Google Cloud Core) 实例附带一个随机分配的主网址。如果需要通过特定网址访问实例,您可以配置自定义网域。 |
时间表和提醒 |
如果 Looker(原始版本)和 Looker (Google Cloud Core) 实例同时处于活跃状态,它们可能会生成重复的定时操作和提醒,并执行重复的后台操作来访问已连接的数据库。应尽快在其中一个实例中停用这些活动。 由单个用户拥有并引用该用户个人 OAuth 连接的任何自动化时间表或提醒都将中断,直到该用户使用其 OAuth 凭据登录。 |
维护窗口 |
与 Looker(原始版本)不同,您可以为 Looker (Google Cloud Core) 指定维护政策。 |
Elite 系统活动 |
Elite 系统活动数据不会在迁移过程中复制。Looker (Google Cloud Core) 实例将从全新的历史记录开始。 |
自定义网域 |
您可以为 Looker (Google Cloud Core) 实例创建自定义网域。您必须设置 DNS 记录,以确保 SSL 证书部署成功。此外,在启用自定义网域并设置身份验证方法后,请务必将身份验证客户端中的回调网址更新为自定义网域。无法使用 如果您想使用 Looker(原始)实例的自定义网址为 Looker (Google Cloud Core) 实例创建自定义网域,则应在迁移完成且确认 Looker (Google Cloud Core) 实例已可供使用后,再设置自定义网域。启用自定义网域后,用户在访问实例网址时将看到 Looker (Google Cloud Core) 实例,而不是 Looker(原始版本)实例。 在实例准备就绪、DNS 记录已更新且自定义网域已启用之前,请勿为 Looker (Google Cloud Core) 实例设置 SAML 或 OpenID Connect。 |
书签 |
如果您在 Looker(原始版本)实例中使用自定义网址(不使用 启用自定义域名后,指向 Looker(原始版本)内容(例如 此流程不适用于使用网域 |
该列表并不详尽。在认为迁移完成之前,请测试实例中对您最重要的所有方面。
迁移完成后,如果您确定不需要再次导出,可以删除之前创建的 <export-service-account>,这样一来,为其共享的 JSON 密钥就会失效。
停用 Looker(原始版本)实例
迁移后的 Looker (Google Cloud Core) 实例正常运行后,您可以向用户发送该实例的网址,并指示他们开始访问该实例,停止访问 Looker(原始版本)实例。
问题排查
以下部分可帮助您解决导入或导出期间的问题。
导出过程中出现的问题
如果 Looker(原始版)数据导出出现问题,管理员面板的导出页面上会显示 ERROR 状态。点击 ERROR 状态会显示一条出错提示。
常见错误来源如下:
- Cloud Storage 存储桶、KMS 密钥或
<export-service-account>无效。 <export-service-account>缺少必要的权限。
在提交导出请求之前,最好先确认这些对象的状态。
导入过程中出现的问题
如果导入操作在 4 小时后仍未完成(如果源实例非常大,则可能需要更长时间),或者导入操作因错误而退出,您可能需要向 Cloud Customer Care 提交工单来解决此问题。此操作直接向客户显示的诊断信息相对较少。
接下来怎么做?
- “管理”页面中的设置 - 导出
- 将 Looker (Google Cloud Core) 连接到您的数据库
- 设置 Looker (Google Cloud Core) 实例
- 管理用户对 Looker (Google Cloud Core) 实例的访问权限
- 通过 Google Cloud 控制台管理 Looker (Google Cloud Core) 实例
- 通过 Looker 管理 Looker (Google Cloud Core) 实例