This documentation is for a release that is no longer maintained
See documentation for the latest supported version.管理指南
Administering Red Hat OpenShift Dev Spaces 3.4
摘要
第 1 章 准备安装 复制链接链接已复制到粘贴板!
要准备 OpenShift Dev Spaces 安装,了解 OpenShift Dev Spaces 生态系统和部署限制:
1.1. 支持的平台 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 在以下 CPU 架构的 OpenShift 4.10 和 4.11 上运行:
-
AMD64 和 Intel 64 (
x86_64) -
IBM Power (
ppc64le)和 IBM Z (s390x)
其他资源
1.2. 架构 复制链接链接已复制到粘贴板!
图 1.1. 带有 Dev Workspace operator 的高级别 OpenShift Dev Spaces 架构
OpenShift Dev Spaces 在三组组件上运行:
- OpenShift Dev Spaces 服务器组件
- 管理用户项目和工作区。主要组件是 User dashboard,用户从中控制其工作区。
- dev Workspace operator
-
创建和控制所需的 OpenShift 对象以运行 User 工作区。包括
Pod、服务和PeristentVolumes。 - 用户工作区
- 基于容器的开发环境,包含 IDE。
这些 OpenShift 功能的角色是中心:
- Dev Workspace 自定义资源
- 代表用户工作区的有效 OpenShift 对象,并由 OpenShift Dev Spaces 操作。它是三组组件的通信通道。
- OpenShift 基于角色的访问控制(RBAC)
- 控制所有资源的访问。
其他资源
1.2.1. 服务器组件 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 服务器组件确保多租户和工作区管理。
图 1.2. 与 Dev Workspace Operator 交互的 OpenShift Dev Spaces 服务器组件
其他资源
1.2.1.1. Dev Spaces operator 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces Operator 确保 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引进了:
CheCluster自定义资源定义(CRD)-
定义
CheClusterOpenShift 对象。 - OpenShift Dev Spaces 控制器
- 创建并控制必要的 OpenShift 对象来运行 OpenShift Dev Spaces 实例,如 pod、服务和持久卷。
CheCluster自定义资源(CR)在具有 OpenShift Dev Spaces operator 的集群上,可以创建
CheCluster自定义资源(CR)。OpenShift Dev Spaces Operator 确保 OpenShift Dev Spaces 服务器组件在这个 OpenShift Dev Spaces 实例中的完整生命周期管理:
1.2.1.2. dev Workspace operator 复制链接链接已复制到粘贴板!
Dev Workspace operator 扩展 OpenShift 以提供 Dev Workspace 支持。它引进了:
- dev Workspace 自定义资源定义
- 从 Devfile v2 规范定义 Dev Workspace OpenShift 对象。
- dev Workspace 控制器
- 创建并控制必要的 OpenShift 对象来运行 Dev Workspace,如 pod、服务和持久卷。
- dev Workspace 自定义资源
- 在具有 Dev Workspace operator 的集群上,可以创建 Dev Workspace 自定义资源(CR)。Dev Workspace CR 是 Devfile 的 OpenShift 表示。它在 OpenShift 集群中定义用户工作区。
其他资源
1.2.1.3. gateway 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 网关具有以下角色:
- 路由请求.它使用 Traefik。
- 使用 OpenID Connect (OIDC)验证用户。它使用 OpenShift OAuth2 代理。
- 应用 OpenShift 基于角色的访问控制(RBAC)策略,以控制对任何 OpenShift Dev Spaces 资源的访问。它使用 'kube-rbac-proxy'。
OpenShift Dev Spaces 操作器将其作为 che-gateway Deployment 进行管理。
它控制对以下的访问:
图 1.3. OpenShift Dev Spaces 网关与其他组件交互
其他资源
1.2.1.4. 用户仪表板 复制链接链接已复制到粘贴板!
用户仪表板是 Red Hat OpenShift Dev Spaces 的登录页面。OpenShift Dev Spaces 用户浏览用户仪表板以访问和管理其工作区。它是 React 应用程序。OpenShift Dev Spaces 部署在 devspaces-dashboard Deployment 中启动它。
它需要访问:
图 1.4. 用户仪表板与其他组件交互
当用户请求用户仪表板以启动工作区时,用户仪表板执行这个操作序列:
- 当用户从代码示例创建工作区时,从 第 1.2.1.5 节 “devfile registry” 收集 devfile。
- 当用户从远程 devfile 创建工作区时,将存储库 URL 发送到 第 1.2.1.6 节 “dev Spaces 服务器” 并期望 devfile 返回。
- 读取描述工作区的 devfile。
- 从 第 1.2.1.8 节 “插件 registry” 收集附加元数据。
- 将信息转换为 Dev Workspace 自定义资源。
- 使用 OpenShift API 在用户项目中创建 Dev Workspace 自定义资源。
- 监视 Dev Workspace 自定义资源状态。
- 将用户重定向到正在运行的工作区 IDE。
1.2.1.5. devfile registry 复制链接链接已复制到粘贴板!
其他资源
OpenShift Dev Spaces devfile registry 是提供示例 devfiles 列表的服务,用于创建 ready-to-use 工作区。第 1.2.1.4 节 “用户仪表板” 在 Dashboard → Create Workspace 页面中显示示例列表。每个示例都包含一个 Devfile v2。OpenShift Dev Spaces 部署在 devfile-registry 部署中启动一个 devfile registry 实例。
图 1.5. devfile registry 与其他组件交互
1.2.1.6. dev Spaces 服务器 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 服务器主要功能有:
- 创建用户命名空间。
- 使用所需的 secret 和配置映射置备用户命名空间。
- 与 Git 服务提供商集成,用于获取和验证 devfile 和身份验证。
OpenShift Dev Spaces 服务器是一个 Java Web 服务,公开 HTTP REST API,需要访问:
- 第 1.2.1.7 节 “PostgreSQL”
- Git 服务提供商
- OpenShift API
图 1.6. OpenShift Dev Spaces 服务器与其他组件交互
1.2.1.7. PostgreSQL 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 服务器使用 PostgreSQL 数据库来持久保留用户配置,如工作区元数据。
OpenShift Dev Spaces 部署在 postgres Deployment 中启动一个专用的 PostgreSQL 实例。您可以使用外部数据库。
图 1.7. PostgreSQL 与其他组件交互
1.2.1.8. 插件 registry 复制链接链接已复制到粘贴板!
每个 OpenShift Dev Spaces 工作区都以特定的编辑器和关联的扩展集开始。OpenShift Dev Spaces 插件 registry 提供了可用编辑器和编辑器扩展列表。Devfile v2 描述了每个编辑器或扩展。
第 1.2.1.4 节 “用户仪表板” 正在读取 registry 的内容。
图 1.8. 插件 registry 与其他组件交互
1.2.2. 用户工作区 复制链接链接已复制到粘贴板!
图 1.9. 用户工作区与其他组件交互
用户工作区是在容器中运行的 Web IDE。
用户工作区是一个 Web 应用。它包括在容器中运行的微服务,提供浏览器中运行的现代 IDE 的所有服务:
- Editor
- 语言自动完成
- 语言服务器
- 调试工具
- 插件
- 应用程序运行时
工作区是包含工作区容器和已启用插件的 OpenShift 部署,以及相关的 OpenShift 组件:
- 容器
- ConfigMaps
- 服务
- Endpoints
- ingresses 或 Routes
- Secrets
- 持久性卷(PV)
OpenShift Dev Spaces 工作区包含项目的源代码,保留在 OpenShift 持久卷(PV)中。微服务具有对此共享目录的读写访问权限。
使用 devfile v2 格式指定 OpenShift Dev Spaces 工作区的工具和运行时应用程序。
下图显示了运行一个运行 OpenShift Dev Spaces 工作区及其组件。
图 1.10. OpenShift Dev Spaces 工作区组件
在图中,有一个正在运行的工作区。
1.3. 计算 Dev Spaces 资源要求 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces Operator、Dev Workspace Controller 和用户工作区由一组 pod 组成。pod 有助于 CPU 和内存限值和请求中的资源消耗。了解如何计算运行 Red Hat OpenShift Dev Spaces 所需的资源,如内存和 CPU。
流程
识别 devfile 的
components部分中明确指定的工作区组件。当此部分为空时,OpenShift Dev Spaces 只加载隐式组件。Expand 表 1.1. devfile 指定工作区组件内存要求 用途 Pod 容器名称 内存限制 内存请求 CPU 限制 CPU 请求 您的开发人员工具
Workspace总计
识别 OpenShift Dev Spaces 负载的隐式工作区组件:开发人员工具、编辑器和 OpenShift Dev Spaces 网关。
Expand 表 1.2. 隐式工作区组件默认要求 用途 Pod 容器名称 内存限制 内存请求 CPU 限制 CPU 请求 开发人员工具
Workspaceuniversal-developer-image1 GiB
256 MiB
500 M
30 M
Editor
Workspaceche-code128 MiB
32 MiB
500 M
30 M
OpenShift Dev Spaces 网关
Workspaceche-gateway256 Mi
64 Mi
500 M
50 M
总计
2.4 GiB
480 MiB
1.5
110 m
- 总结每个工作区所需的资源,并通过正在运行的工作区计数来多处。
服务器组件要求总和。
Expand 表 1.3. OpenShift Dev Spaces 服务器组件默认要求 用途 Pod 名称 容器名称 内存限制 内存请求 CPU 限制 CPU 请求 OpenShift Dev Spaces operator
devspaces-operatordevspaces-operator256 MiB
64 MiB
500 M
100 M
OpenShift Dev Spaces Server
devspacesdevspaces-server1 Gi
512 MiB
1
1 m
OpenShift Dev Spaces Dashboard
devspaces-dashboard-
devspaces-dashboard
256 MiB
32 MiB
500 M
100 M
OpenShift Dev Spaces Gateway
devspaces-gatewaytraefik4 GiB
128 MiB
1
100 M
OpenShift Dev Spaces Gateway
devspaces-gatewayconfigbump256 MiB
64 MiB
500 M
50 M
OpenShift Dev Spaces Gateway
devspaces-gatewayoauth-proxy512 MiB
64 MiB
500 M
100 M
OpenShift Dev Spaces Gateway
devspaces-gatewaykube-rbac-proxy512 MiB
64 MiB
500 M
100 M
devfile registry
devfile-registrydevfile-registry256 Mi
32 Mi
500 M
100 M
插件 registry
plugin-registryplugin-registry256 Mi
32 Mi
500 M
100 M
PostgreSQL 数据库
postgrespostgres1 Gi
512 Mi
500 M
100 M
dev Workspace Controller Manager
devworkspace-controller-managerdevworkspace-controller1 GiB
100 MiB
1
250 m
dev Workspace Controller Manager
devworkspace-controller-managerkube-rbac-proxyN/A
不适用
不适用
N/A
dev Workspace webhook 服务器
devworkspace-webhook-serverwebhook-server300 MiB
29 MiB
200 M
100 M
dev Workspace Operator Catalog
registry-serverN/A
50 MiB
N/A
10 M
dev Workspace Webhook Server
devworkspace-webhook-serverwebhook-server300 MiB
20 MiB
200 M
100 M
dev Workspace Webhook Server
devworkspace-webhook-serverkube-rbac-proxyN/A
不适用
不适用
N/A
总计
9.5 GiB
1.6 GiB
7.4
2.31
-
第 2 章 安装 Dev Spaces 复制链接链接已复制到粘贴板!
本节包含安装 Red Hat OpenShift Dev Spaces 的说明。
每个集群只能部署一个 OpenShift Dev Spaces 实例。
2.1. 安装 dsc 管理工具 复制链接链接已复制到粘贴板!
您可以在 Microsoft Windows、Apple MacOS 和 Linux 上安装 dsc (Red Hat OpenShift Dev Spaces 命令行管理工具)。使用 dsc,您可以执行 OpenShift Dev Spaces 服务器的操作,如启动、停止、更新和删除服务器。
先决条件
Linux 或 macOS。
注意有关在 Windows 上安装
dsc,请查看以下页面:
流程
-
将存档从 https://developers.redhat.com/products/openshift-dev-spaces/download 下载到
$HOME等目录中。 -
在存档上运行
tar xvzf以提取/dsc目录。 -
将提取的
/dsc/bin子目录添加到$PATH。
验证
运行
dsc查看有关它的信息。dsc
$ dscCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- "DSC 参考文档"
2.2. 使用 CLI 在 OpenShift 上安装 Dev Spaces 复制链接链接已复制到粘贴板!
您可以在 OpenShift 上安装 OpenShift Dev Spaces。
先决条件
- OpenShift Container Platform
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。 -
DSC:请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
可选: 如果您之前在此 OpenShift 集群上部署了 OpenShift Dev Spaces,请确保删除了以前的 OpenShift Dev Spaces 实例:
dsc server:delete
$ dsc server:deleteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 OpenShift Dev Spaces 实例:
dsc server:deploy --platform openshift
$ dsc server:deploy --platform openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证 OpenShift Dev Spaces 实例状态:
dsc server:status
$ dsc server:statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进入 OpenShift Dev Spaces 集群实例:
dsc dashboard:open
$ dsc dashboard:openCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 使用 Web 控制台在 OpenShift 上安装 Dev Spaces 复制链接链接已复制到粘贴板!
本节论述了如何使用 OpenShift Web 控制台安装 OpenShift Dev Spaces。考虑 第 2.2 节 “使用 CLI 在 OpenShift 上安装 Dev Spaces”。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
流程
可选: 如果您之前在此 OpenShift 集群上部署了 OpenShift Dev Spaces,请确保删除了以前的 OpenShift Dev Spaces 实例:
dsc server:delete
$ dsc server:deleteCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 安装 Red Hat OpenShift Dev Spaces Operator。请参阅使用 Web 控制台从 OperatorHub 安装。
在 OpenShift 中创建
openshift-devspaces项目,如下所示:oc create namespace openshift-devspaces
oc create namespace openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 OpenShift Web 控制台的 Administrator 视图中,进入 → → → → 。
-
在 YAML 视图中,将
namespace: openshift-operators替换为namespace: openshift-devspaces。 - 选择 Create。请参阅 从已安装的 Operator 创建应用程序。
验证
- 要验证 OpenShift Dev Spaces 实例是否已正确安装,请导航到 Operator 详情页面的 Dev Spaces Cluster 选项卡。Red Hat OpenShift Dev Spaces 实例规格 页面显示 Red Hat OpenShift Dev Spaces 实例列表及其状态。
-
单击 devspaces
CheCluster,再导航到 Details 选项卡。 查看以下字段的内容:
-
Message 字段包含错误消息。预期内容为
None。 - Red Hat OpenShift Dev Spaces URL 字段包含 Red Hat OpenShift Dev Spaces 实例的 URL。当部署成功完成时,将显示 URL。
-
Message 字段包含错误消息。预期内容为
- 导航到 Resources 选项卡。查看分配给 OpenShift Dev Spaces 部署的资源列表及其状态。
2.4. 在受限环境中安装 Dev Spaces 复制链接链接已复制到粘贴板!
在受限网络中的 OpenShift 集群上,公共资源不可用。
但是,部署 OpenShift Dev Spaces 并运行工作区需要以下公共资源:
- Operator 目录
- 容器镜像
- 项目示例
要使这些资源可用,您可以将这些资源替换为 OpenShift 集群可访问的注册表中的副本。
先决条件
- OpenShift 集群至少有 64 GB 磁盘空间。
- OpenShift 集群可在受限网络中运行,OpenShift control plane 可以访问公共互联网。请参阅关于断开连接的安装镜像,以及 在受限网络中使用 Operator Lifecycle Manager。
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。 -
到
registry.redhat.io的红帽生态系统目录的活跃的oc registry会话。请参阅: Red Hat Container Registry 身份验证。
-
opm.请参阅安装opmCLI。 -
jq.请参阅 下载jq。 -
Podman.请参阅 安装 Podman。 -
一个活跃的
skopeo会话,具有对 < my_registry > registry 的管理访问权限。请参阅安装 Skopeo,对 registry 进行身份验证,并为断开连接的安装 mirror 镜像。 -
DSC用于 OpenShift Dev Spaces 版本 3.4。请参阅 第 2.1 节 “安装 dsc 管理工具”。
流程
下载并执行镜像脚本,以安装自定义 Operator 目录并镜像相关的镜像: prepare-restricted-environment.sh。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在上一步中,使用
che-operator-cr-patch.yaml中设置的配置安装 OpenShift Dev Spaces:dsc server:deploy --platform=openshift \ --che-operator-cr-patch-yaml=che-operator-cr-patch.yaml
$ dsc server:deploy --platform=openshift \ --che-operator-cr-patch-yaml=che-operator-cr-patch.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 允许从 OpenShift Dev Spaces 命名空间到用户项目中的所有 Pod 的传入流量。请参阅: 第 3.7.1 节 “配置网络策略”。
其他资源
第 3 章 配置 Dev Spaces 复制链接链接已复制到粘贴板!
本节论述了 Red Hat OpenShift Dev Spaces 的配置方法和选项。
3.1. 了解 CheCluster 自定义资源 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 的默认部署由 Red Hat OpenShift Dev Spaces Operator 组成一个 CheCluster 自定义资源参数。
CheCluster 自定义资源是一个 Kubernetes 对象。您可以通过编辑 CheCluster 自定义资源 YAML 文件来配置它。此文件包含配置每个组件的部分: devWorkspace、cheServer、pluginRegistry、devfileRegistry、database、仪表板 和 imagePuller。
Red Hat OpenShift Dev Spaces Operator 将 CheCluster 自定义资源转换为 OpenShift Dev Spaces 安装的每个组件可用的配置映射。
OpenShift 平台将配置应用到每个组件,并创建必要的 Pod。当 OpenShift 检测到组件配置中的更改时,它会相应地重启 Pod。
例 3.1. 配置 OpenShift Dev Spaces 服务器组件的主要属性
-
在
cheServer组件部分中应用带有适当修改的CheCluster自定义资源 YAML 文件。 -
Operator 生成
cheConfigMap。 -
OpenShift 检测到
ConfigMap中的更改,并触发 OpenShift Dev Spaces Pod 重启。
其他资源
3.1.1. 在安装过程中使用 dsc 配置 CheCluster 自定义资源 复制链接链接已复制到粘贴板!
要使用合适的配置部署 OpenShift Dev Spaces,请在安装 OpenShift Dev Spaces 的过程中编辑 CheCluster 自定义资源 YAML 文件。否则,OpenShift Dev Spaces 部署使用 Operator 的默认配置参数。
先决条件
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 CLI 入门。 -
DSC:请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
创建一个
che-operator-cr-patch.yamlYAML 文件,其中包含要配置的CheCluster自定义资源的子集:spec: <component>: <property_to_configure>: <value>spec: <component>: <property_to_configure>: <value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 OpenShift Dev Spaces 并应用
che-operator-cr-patch.yaml文件中描述的更改:dsc server:deploy \ --che-operator-cr-patch-yaml=che-operator-cr-patch.yaml \ --platform <chosen_platform>
$ dsc server:deploy \ --che-operator-cr-patch-yaml=che-operator-cr-patch.yaml \ --platform <chosen_platform>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证配置的属性的值:
oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspaces$ oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 使用 CLI 配置 CheCluster 自定义资源 复制链接链接已复制到粘贴板!
要配置正在运行的 OpenShift Dev Spaces 实例,请编辑 CheCluster 自定义资源 YAML 文件。
先决条件
- OpenShift 上的 OpenShift Dev Spaces 实例。
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。
流程
编辑集群中的 CheCluster 自定义资源:
oc edit checluster/devspaces -n openshift-devspaces
$ oc edit checluster/devspaces -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存并关闭该文件以应用更改。
验证
验证配置的属性的值:
oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspaces$ oc get configmap che -o jsonpath='{.data.<configured_property>}' \ -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. CheCluster 自定义资源字段参考 复制链接链接已复制到粘贴板!
本节介绍了可用于自定义 CheCluster 自定义资源的所有字段。
-
例 3.2 “最小
CheCluster自定义资源示例。” - 表 3.1 “开发环境配置选项。”
- 表 3.4 “OpenShift Dev Spaces 组件配置。”
- 表 3.5 “DevWorkspace operator 组件配置。”
- 表 3.6 “与 OpenShift Dev Spaces 服务器组件相关的常规配置设置。”
- 表 3.7 “与 OpenShift Dev Spaces 安装使用的插件 registry 组件相关的配置设置。”
- 表 3.8 “与 OpenShift Dev Spaces 安装使用的 Devfile registry 组件相关的配置设置。”
- 表 3.9 “与 OpenShift Dev Spaces 安装使用的数据库组件相关的配置设置。”
- 表 3.10 “与 OpenShift Dev Spaces 安装使用的 Dashboard 组件相关的配置设置。”
- 表 3.11 “Kubernetes Image Puller 组件配置。”
- 表 3.12 “OpenShift Dev Spaces 服务器指标组件配置。”
- 表 3.13 “网络、OpenShift Dev Spaces 身份验证和 TLS 配置。”
- 表 3.14 “配置存储 OpenShift Dev Spaces 镜像的备用 registry。”
-
表 3.15 “
CheCluster自定义资源状态定义 OpenShift Dev Spaces 安装观察状态”
例 3.2. 最小 CheCluster 自定义资源示例。
| 属性 | 描述 |
|---|---|
| containerBuildConfiguration | 容器构建配置。 |
| defaultComponents | 应用到 DevWorkspace 的默认组件。这些默认组件旨在在 Devfile (不包含任何组件)中使用。 |
| defaultEditor |
使用创建工作区的默认编辑器。它可以是插件 ID 或 URI。插件 ID 必须具有 |
| defaultNamespace | 用户的默认命名空间。 |
| defaultPlugins | 应用到 DevWorkspace 的默认插件。 |
| disableContainerBuildCapabilities | 禁用容器构建功能。 |
| nodeSelector | 节点选择器限制可以运行工作空间 pod 的节点。 |
| secondsOfInactivityBeforeIdling | 以秒为单位的工作区空闲超时。这个超时是在没有活动时将闲置工作区的持续时间。要禁用因为不活跃而闲置的工作空间,请将此值设置为 -1。 |
| secondsOfRunBeforeIdling | 以秒为单位运行工作区超时。这个超时是工作区运行的最长持续时间。要禁用工作区运行超时,请将此值设置为 -1。 |
| serviceAccount | 在启动工作区时,DevWorkspace operator 使用 ServiceAccount。 |
| storage | 工作区持久性存储。 |
| 容限(tolerations) | 工作区 pod 的 pod 容限限制工作区 pod 可以运行的位置。 |
| trustedCerts | 可信证书设置。 |
| 属性 | 描述 |
|---|---|
| autoProvision | 指明是否允许自动创建用户命名空间。如果设为 false,则集群管理员必须预先创建用户命名空间。 |
| 模板 |
如果您没有提前创建用户命名空间,此字段定义了启动第一个工作区时创建的 Kubernetes 命名空间。您可以使用 < |
| 属性 | 描述 |
|---|---|
| perUserStrategyPvcConfig |
使用 |
| perWorkspaceStrategyPvcConfig |
使用 |
| pvcStrategy |
Che 服务器的持久性卷声明策略。支持的策略有: |
| 属性 | 描述 |
|---|---|
| cheServer | 与 Che 服务器相关的常规配置设置。 |
| dashboard | 与 Che 安装使用的仪表板相关的配置设置。 |
| 数据库 | 与 Che 安装使用的数据库相关的配置设置。 |
| devWorkspace | DevWorkspace Operator 配置。 |
| devfileRegistry | 与 Che 安装使用的 devfile registry 相关的配置设置。 |
| imagePuller | Kubernetes 镜像提取器配置。 |
| metrics | Che 服务器指标配置。 |
| pluginRegistry | 与 Che 安装使用的插件 registry 相关的配置设置。 |
| 属性 | 描述 |
|---|---|
| runningLimit | 每个用户运行的工作区的最大数量。 |
| 属性 | 描述 |
|---|---|
| clusterRoles |
分配给 Che ServiceAccount 的 ClusterRole。默认角色为: - < |
| debug | 为 Che 服务器启用调试模式。 |
| 部署 | 部署覆盖选项。 |
| extraProperties |
除了从 |
| logLevel |
Che 服务器的日志级别: |
| proxy | Kubernetes 集群的代理服务器设置。OpenShift 集群不需要额外的配置。通过为 OpenShift 集群指定这些设置,您可以覆盖 OpenShift 代理配置。 |
| 属性 | Description |
|---|---|
| 部署 | 部署覆盖选项。 |
| disableInternalRegistry | 禁用内部插件 registry。 |
| externalPluginRegistries | 外部插件 registry。 |
| openVSXURL | 打开 VSX 注册表 URL。如果省略了一个嵌入式实例,则将使用。 |
| 属性 | Description |
|---|---|
| 部署 | 部署覆盖选项。 |
| disableInternalRegistry | 禁用内部 devfile registry。 |
| externalDevfileRegistries | 外部 devfile registry 服务示例可直接使用的 devfile。 |
| 属性 | 描述 |
|---|---|
| credentialsSecretName |
包含 Che 服务器用于连接数据库的 PostgreSQL |
| 部署 | 部署覆盖选项。 |
| externalDb |
指示 Operator 部署专用数据库。默认情况下,专用 PostgreSQL 数据库作为 Che 安装的一部分部署。当 |
| postgresDb | Che 服务器用于连接数据库的 PostgreSQL 数据库名称。 |
| postgresHostName |
Che 服务器连接到的 PostgreSQL 数据库主机名。仅在使用外部数据库时覆盖这个值。请参阅 |
| postgresPort |
Che 服务器连接的 PostgreSQL 数据库端口。仅在使用外部数据库时覆盖这个值。请参阅 |
| pvc | PostgreSQL 数据库的 PVC 设置。 |
| 属性 | Description |
|---|---|
| 部署 | 部署覆盖选项。 |
| headerMessage | 仪表板标头消息。 |
| 属性 | 描述 |
|---|---|
| enable |
安装和配置社区支持的 Kubernetes Image Puller Operator。当您在不提供任何 specs 的情况下将值设为 |
| spec | 在 CheCluster 中配置镜像拉取程序的 Kubernetes Image Puller 规格。 |
| 属性 | 描述 |
|---|---|
| enable |
为 Che 服务器端点启用 |
| 属性 | 描述 |
|---|---|
| annotations | 定义将为 Ingress 设置的注解(OpenShift 平台的路由)。kubernetes 平台的默认值为:kubernetes.io/ingress.class: \nginx\ nginx.ingress.kubernetes.io/proxy-read-timeout: \3600\, nginx.ingress.kubernetes.io/proxy-connect-timeout: \3600\, nginx.ingress.kubernetes.io/ssl-redirect: \true\ |
| auth | 身份验证设置。 |
| domain | 对于 OpenShift 集群,Operator 使用域为路由生成主机名。生成的主机名遵循此模式: che-<devspaces-namespace>.<domain>。<devspaces-namespace> 是创建 CheCluster CRD 的命名空间。与标签结合使用,它会创建一个由非默认 Ingress 控制器提供的路由。对于 Kubernetes 集群,它包含一个全局入口域。没有默认值:您必须指定它们。 |
| 主机名 | 安装的 Che 服务器的公共主机名。 |
| labels | 定义将为 Ingress 设置的标签(OpenShift 平台的路由)。 |
| tlsSecretName |
用于设置 Ingress TLS 终止的 secret 名称。如果字段是一个空字符串,则使用默认集群证书。secret 必须具有 |
| 属性 | 描述 |
|---|---|
| 主机名 | 从中拉取镜像的替代容器 registry 的可选主机名或 URL。这个值会覆盖在 Che 部署中涉及的所有默认容器镜像中定义的容器 registry 主机名。这对在受限环境中安装 Che 特别有用。 |
| 机构 | 从中拉取镜像的替代 registry 的可选仓库名称。这个值会覆盖在 Che 部署中涉及的所有默认容器镜像中定义的容器 registry。这对在受限环境中安装 OpenShift Dev Spaces 特别有用。 |
| 属性 | 描述 |
|---|---|
| chePhase | 指定 Che 部署的当前阶段。 |
| cheURL | Che 服务器的公共 URL。 |
| cheVersion | 当前安装的 Che 版本。 |
| devfileRegistryURL | 内部 devfile registry 的公共 URL。 |
| gatewayPhase | 指定网关部署的当前阶段。 |
| message | 人类可读的消息,指示 Che 部署处于当前阶段的详细信息。 |
| pluginRegistryURL | 内部插件 registry 的公共 URL。 |
| postgresVersion | 正在使用的镜像的 PostgreSQL 版本。 |
| reason | 简短的 CamelCase 消息指示 Che 部署处于当前阶段的详细信息。 |
| workspaceBaseDomain | 解析的工作区基域。这是 spec 中相同名称的显式定义属性的副本,或者在 spec 中未定义,并且我们在 OpenShift 中运行,则会自动解析的基域。 |
3.2. 配置项目 复制链接链接已复制到粘贴板!
对于每个用户,OpenShift Dev Spaces 会隔离项目中的工作区。OpenShift Dev Spaces 通过存在标签和注解来识别用户项目。在启动工作区时,如果所需的项目不存在,OpenShift Dev Spaces 会使用模板名称创建项目。
您可以通过以下方法修改 OpenShift Dev Spaces 的行为:
3.2.1. 配置项目名称 复制链接链接已复制到粘贴板!
您可以配置 OpenShift Dev Spaces 用来在启动工作区时创建所需项目的项目名称模板。
有效的项目名称模板遵循以下约定:
-
<
;username> 或<userid> 占位符是必需的。 -
用户名和 ID 不能包含无效字符。如果用户名或 ID 格式化与 OpenShift 对象的命名约定不兼容,OpenShift Dev Spaces 会将用户名或 ID 更改为有效名称,方法是将不兼容的字符替换为
-符号。 -
OpenShift Dev Spaces 将
<userid> 占位符评估为 14 个字符长字符串,并添加随机的 6 个字符长后缀,以防止 ID 协调。结果存储在用户首选项中以供重复使用。 - Kubernetes 将项目名称的长度限制为 63 个字符。
- OpenShift 将长度进一步限制为 49 个字符。
流程
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>spec: components: devEnvironments: defaultNamespace: template: <workspace_namespace_template_>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 3.3. 用户工作区项目名称模板示例
Expand 用户工作区项目名称模板 生成的项目示例 <username>-devspaces(默认)user1-devspaces
<userid>-namespacecge1egvsb2nhba-namespace-ul1411<userid>-aka-<username>-namespacecgezegvsb2nhba-aka-user1-namespace-6m2w2b
3.2.2. 提前置备项目 复制链接链接已复制到粘贴板!
您可以提前调配工作区项目,而不依赖于自动调配。为每个用户重复这些步骤。
流程
使用以下标签和注解为 < username > 用户创建 <project_name > 项目:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用您选择的项目名称。
3.3. 配置服务器组件 复制链接链接已复制到粘贴板!
secret 是存储敏感数据的 OpenShift 对象,例如:
- usernames
- 密码
- 身份验证令牌
采用加密形式。
用户可以在 OpenShift Dev Spaces 受管容器中挂载包含敏感数据或 ConfigMap 的 OpenShift Secret,如下所示:
- 一个文件
- 环境变量
挂载过程使用标准的 OpenShift 挂载机制,但它需要额外的注释和标签。
先决条件
- 正在运行的 Red Hat OpenShift Dev Spaces 实例。
流程
在部署了 OpenShift Dev Spaces 的 OpenShift 项目中创建一个新的 OpenShift Secret 或 ConfigMap。要创建的对象标签必须与一组标签匹配:
-
app.kubernetes.io/part-of: che.eclipse.org -
app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND> &
lt;DEPLOYMENT_NAME> 对应于以下部署:-
postgres -
Keycloak -
devfile-registry -
plugin-registry devspaces和
-
<OBJECT_KIND> 是:secret或者
-
configmap
-
例 3.4. 例如:
或者
注解必须表示给定对象被挂载为文件。
配置注解值:
-
Che.eclipse.org/mount-as: file- 表示对象被挂载为文件。 -
Che.eclipse.org/mount-path: <TARGET_PATH> - 提供所需的挂载路径。
-
例 3.5. 例如:
或者
OpenShift 对象可以包含多个项目,其名称必须与挂载到容器中的所需文件名匹配。
例 3.6. 例如:
或者
这将导致名为 ca.crt 的文件挂载到 OpenShift Dev Spaces 容器的 /data 路径。
要使 OpenShift Dev Spaces 容器中的更改可见,请完全重新创建对象。
先决条件
- 正在运行的 Red Hat OpenShift Dev Spaces 实例。
流程
在部署了 OpenShift Dev Spaces 的 OpenShift 项目中创建一个新的 OpenShift Secret 或 ConfigMap。要创建的对象标签必须与一组标签匹配:
-
app.kubernetes.io/part-of: che.eclipse.org -
app.kubernetes.io/component: <DEPLOYMENT_NAME>-<OBJECT_KIND> &
lt;DEPLOYMENT_NAME> 对应于以下部署:-
postgres -
Keycloak -
devfile-registry -
plugin-registry devspaces和
-
<OBJECT_KIND> 是:secret或者
-
configmap
-
例 3.7. 例如:
或者
注解必须表示给定对象被挂载为环境变量。
配置注解值:
-
Che.eclipse.org/mount-as: env- 表示对象被挂载为环境变量 -
Che.eclipse.org/env-name : <FOOO_ENV> - 提供环境变量名称,这是挂载对象键值所必需的
-
例 3.8. 例如:
或者
这会生成两个环境变量:
-
FOO_ENV -
myvalue
被置备为一个 OpenShift Dev Spaces 容器。
如果对象提供多个数据项,则必须为每个数据键提供环境变量名称,如下所示:
例 3.9. 例如:
或者
这会生成两个环境变量:
-
FOO_ENV -
OTHER_ENV
被置备为一个 OpenShift Dev Spaces 容器。
OpenShift 对象中注解名称的最大长度为 63 个字符,其中为以 / 结尾的前缀保留 9 个字符。这充当可用于对象的密钥的最大长度限制。
要使 OpenShift Dev Spaces 容器中的更改可见,请完全重新创建对象。
3.3.2. Dev Spaces 服务器的高级配置选项 复制链接链接已复制到粘贴板!
下面的部分描述了 OpenShift Dev Spaces 服务器组件的高级部署和配置方法。
3.3.2.1. 了解 OpenShift Dev Spaces 服务器高级配置 复制链接链接已复制到粘贴板!
下面的部分描述了 OpenShift Dev Spaces 服务器组件高级配置方法。
高级配置需要:
-
从标准
CheCluster自定义资源字段添加 Operator 不会自动生成的环境变量。 -
覆盖 Operator 从标准
CheCluster自定义资源字段自动生成的属性。
customCheProperties 字段( CheCluster 自定义资源 服务器设置 的一部分)包含要应用到 OpenShift Dev Spaces 服务器组件的额外环境变量映射。
例 3.10. 覆盖工作区的默认内存限值
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
以前的 OpenShift Dev Spaces Operator 版本有一个名为 custom 的 ConfigMap 来满足此角色。如果 OpenShift Dev Spaces Operator 找到了一个名为 custom 的 configMap,它会将其包含的数据添加到 customCheProperties 字段中,重新部署 OpenShift Dev Spaces,并删除 自定义 configMap。
3.4. 在全局范围内配置工作区 复制链接链接已复制到粘贴板!
本节论述了如何在全局范围内配置工作区。
3.4.1. 限制用户可以保留的工作区数量 复制链接链接已复制到粘贴板!
默认情况下,用户可以在仪表板中保留无限数量的工作区,但您可以限制这个数字来减少对集群的需求。
此配置是 CheCluster 自定义资源的一部分:
spec:
components:
cheServer:
extraProperties:
CHE_LIMITS_USER_WORKSPACES_COUNT: "<kept_workspaces_limit>"
spec:
components:
cheServer:
extraProperties:
CHE_LIMITS_USER_WORKSPACES_COUNT: "<kept_workspaces_limit>"
- 1
- 设置每个用户的最大工作区数。默认值
-1允许用户保留无限数量的工作区。使用正整数来设置每个用户的最大工作区数。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认为
openshift-devspaces。oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
CHE_LIMITS_USER_WORKSPACES_COUNT:oc patch checluster/devspaces -n openshift-devspaces \ --type='merge' -p \ '{"spec":{"components":{"cheServer":{"extraProperties":{"CHE_LIMITS_USER_WORKSPACES_COUNT": "<kept_workspaces_limit>"}}}}}'$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"cheServer":{"extraProperties":{"CHE_LIMITS_USER_WORKSPACES_COUNT": "<kept_workspaces_limit>"}}}}}'2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. 允许用户同时运行多个工作区 复制链接链接已复制到粘贴板!
默认情况下,用户一次只能运行一个工作区。您可以允许用户同时运行多个工作区。
如果使用默认存储方法,如果用户在多节点集群中跨节点分布 pod,则用户在运行工作区时可能会遇到问题。从用户 通用 存储策略切换到 每个工作区 存储策略,或 使用临时存储 类型避免或解决这些问题。
此配置是 CheCluster 自定义资源的一部分:
spec:
components:
devWorkspace:
runningLimit: "<running_workspaces_limit>"
spec:
components:
devWorkspace:
runningLimit: "<running_workspaces_limit>"
- 1
- 设置每个用户同时运行的工作区的最大数量。默认值为:
1。
流程
获取 OpenShift Dev Spaces 命名空间的名称。默认为
openshift-devspaces。oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"$ oc get checluster --all-namespaces \ -o=jsonpath="{.items[*].metadata.namespace}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
runningLimit:oc patch checluster/devspaces -n openshift-devspaces \ --type='merge' -p \ '{"spec":{"components":{"devWorkspace":{"runningLimit": "<running_workspaces_limit>"}}}}'$ oc patch checluster/devspaces -n openshift-devspaces \1 --type='merge' -p \ '{"spec":{"components":{"devWorkspace":{"runningLimit": "<running_workspaces_limit>"}}}}'2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.3. 带有自签名证书的 Git 复制链接链接已复制到粘贴板!
您可以将 OpenShift Dev Spaces 配置为支持使用自签名证书的 Git 供应商中的操作。
先决条件
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。 - Git 版本 2 或更高版本
流程
使用 Git 服务器的详情创建新 ConfigMap :
oc create configmap che-git-self-signed-cert \ --from-file=ca.crt=<path_to_certificate> \ --from-literal=githost=<host:port> -n openshift-devspaces
$ oc create configmap che-git-self-signed-cert \ --from-file=ca.crt=<path_to_certificate> \1 --from-literal=githost=<host:port> -n openshift-devspaces2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
如果没有指定
githost,则给定证书将用于所有 HTTPS 存储库。 -
证书文件通常存储为 Base64 ASCII 文件,例如:
.pem,.crt,.ca-bundle.此外,它们也可编码为二进制数据,如.cer。所有保存证书文件的Secret应该使用 Base64 ASCII 证书,而不是二进制数据证书。
-
如果没有指定
将所需的标签添加到 ConfigMap 中:
oc label configmap che-git-self-signed-cert \ app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
$ oc label configmap che-git-self-signed-cert \ app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 OpenShift Dev Spaces 操作对象,为 Git 存储库使用自签名证书。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。
spec: devEnvironments: trustedCerts: gitTrustedCertsConfigMapName: che-git-self-signed-certspec: devEnvironments: trustedCerts: gitTrustedCertsConfigMapName: che-git-self-signed-certCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
创建并启动新工作区。工作区使用的每个容器都会挂载一个包含具有自签名证书的文件的特殊卷。容器的
/etc/gitconfig文件包含有关 Git 服务器主机(its URL)和http部分中的证书路径的信息(请参阅 git-config的 Git 文档)。例 3.11.
/etc/gitconfig文件的内容[http "https://10.33.177.118:3000"] sslCAInfo = /etc/config/che-git-tls-creds/certificate
[http "https://10.33.177.118:3000"] sslCAInfo = /etc/config/che-git-tls-creds/certificateCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.4. 配置工作区 nodeSelector 复制链接链接已复制到粘贴板!
本节论述了如何为 OpenShift Dev Spaces 工作区的 Pod 配置 nodeSelector。
流程
OpenShift Dev Spaces 使用 CHE_WORKSPACE_POD_NODE__SELECTOR 环境变量来配置 nodeSelector。此变量可以包含一组用逗号分开的 key=value 对,以形成 nodeSelector 规则或 NULL 来禁用它。
CHE_WORKSPACE_POD_NODE__SELECTOR=disktype=ssd,cpu=xlarge,[key=value]
CHE_WORKSPACE_POD_NODE__SELECTOR=disktype=ssd,cpu=xlarge,[key=value]
nodeSelector 必须在 OpenShift Dev Spaces 安装过程中配置。这可防止现有工作区因为卷关联性冲突而无法运行,因为现有的工作区 PVC 和 Pod 被调度到不同的区中。
为了避免 Pod 和 PVC 在大型多区集群上的不同区中调度,请创建一个额外的 StorageClass 对象(请注意 allowedTopologies 字段),它将协调 PVC 创建过程。
通过 CHE_INFRA_KUBERNETES_PVC_STORAGE__CLASS__NAME 环境变量将这个新创建的 StorageClass 的名称传递给 OpenShift Dev Spaces。此变量的默认空值指示 OpenShift Dev Spaces 使用集群的默认 StorageClass。
3.4.5. 打开 VSX registry URL 复制链接链接已复制到粘贴板!
为了搜索并安装扩展,Visis Studio Code 编辑器使用嵌入的 Open VSX 注册表实例。您还可以将 OpenShift Dev Spaces 配置为使用另一个 Open VSX registry 实例,而不是嵌入的实例。
流程
在 CheCluster Custom Resource
spec.components.pluginRegistry.openVSXURL字段中设置 Open VSX registry 实例的 URL。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. 缓存镜像以便更快地启动工作区 复制链接链接已复制到粘贴板!
要提高 OpenShift Dev Spaces 工作区的开始时间性能,请使用 Image Puller,它是一个 OpenShift Dev Spaces 无关的组件,可用于为 OpenShift 集群预拉取镜像。Image Puller 是一个额外的 OpenShift 部署,它会创建一个 DaemonSet,它可以配置为在每个节点上预拉取相关的 OpenShift Dev Spaces 工作区镜像。当 OpenShift Dev Spaces 工作区启动时,这些镜像可能已经可用,因此改进了工作空间开始时间。
Image Puller 为配置提供以下参数。
| 参数 | 使用方法 | 默认 |
|---|---|---|
|
| DaemonSet 健康检查间隔(以小时为单位) |
|
|
| 拉取器运行时每个缓存的镜像内存请求。请参阅 第 3.5.2 节 “定义内存设置”。 |
|
|
| 拉取程序运行时每个缓存的镜像的内存限值。请参阅 第 3.5.2 节 “定义内存设置”。 |
|
|
| 拉取器运行时每个缓存的镜像的处理器请求 |
|
|
| 拉取器运行时每个缓存的镜像的处理器限制 |
|
|
| 要创建的 DaemonSet 的名称 |
|
|
| 要创建的部署名称 |
|
|
| 包含要创建的 DaemonSet 的 OpenShift 项目 |
|
|
|
要拉取的镜像的分号分隔列表,格式为 < | |
|
| 应用到 DaemonSet 创建的 pod 的节点选择器 |
|
|
| 应用到 DaemonSet 创建的 pod 的关联性 |
|
|
|
镜像 pull secret 列表,格式为 |
|
其他资源
3.5.1. 定义镜像列表 复制链接链接已复制到粘贴板!
Image Puller 可以预先拉取大多数镜像,包括 che-machine-exec 等全新镜像。但是,在 Dockerfile 中挂载卷的镜像(如 traefik )不支持在 OpenShift 3.11 上预拉取(pull)卷的镜像。
流程
-
导航到
"https://devspaces-<openshift_deployment_name>.<domain_name>"/plugin-registry/v3/external_images.txtURL,以收集要拉取的相关容器镜像列表。 -
确定列表中的镜像,以进行预先拉取。为了加快工作空间启动时间,请考虑拉取与工作区相关的镜像,如
generic-developer-image、che-code' 和che-gateway。
3.5.2. 定义内存设置 复制链接链接已复制到粘贴板!
定义内存请求和限值参数,以确保拉取的容器和平台有足够的内存来运行。
先决条件
流程
-
要为
CACHING_MEMORY_REQUEST或CACHING_MEMORY_LIMIT定义最小值,请考虑运行每个容器镜像所需的必要内存量。 要为
CACHING_MEMORY_REQUEST或CACHING_MEMORY_LIMIT定义 maximal 值,请考虑分配给集群中 DaemonSet Pod 的总内存:(memory limit) * (number of images) * (number of nodes in the cluster)
(memory limit) * (number of images) * (number of nodes in the cluster)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 20 个节点上拉取 5 个镜像,容器内存限值为
20Mi需要2000Mi内存。
3.5.3. 使用 Web 控制台在 OpenShift 上安装 Image Puller 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台在 OpenShift 上安装社区支持的 Kubernetes Image Puller Operator。
先决条件
- 第 3.5.1 节 “定义镜像列表”
- 第 3.5.2 节 “定义内存设置”.
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
流程
- 安装社区支持的 Kubernetes Image Puller Operator。请参阅使用 Web 控制台从 OperatorHub 安装。
-
从社区支持的
Kubernetes Image PullerOperator 创建一个 kubernetes-image-puller KubernetesImagePuller 操作对象。请参阅 从已安装的 Operator 创建应用程序。
3.5.4. 使用 CLI 在 OpenShift 上安装镜像提取程序 复制链接链接已复制到粘贴板!
您可以使用 OpenShift oc 管理工具在 OpenShift 上安装 Kubernetes Image Puller。
先决条件
- 第 3.5.1 节 “定义镜像列表”.
- 第 3.5.2 节 “定义内存设置”.
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。
流程
克隆 Image Puller 存储库,并获取到包含 OpenShift 模板的目录中:
git clone https://github.com/che-incubator/kubernetes-image-puller cd kubernetes-image-puller/deploy/openshift
$ git clone https://github.com/che-incubator/kubernetes-image-puller $ cd kubernetes-image-puller/deploy/openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下参数配置
app.yaml、configmap.yaml和serviceaccount.yamlOpenShift 模板:Expand 表 3.17. app.yaml中的镜像 Puller OpenShift 模板参数 值 使用方法 默认 DEPLOYMENT_NAMEConfigMap 中的
DEPLOYMENT_NAME的值kubernetes-image-pullerIMAGE用于
kubernetes-image-puller部署的镜像registry.redhat.io/devspaces/imagepuller-rhel8:3.4IMAGE_TAG要拉取的镜像标签
latestSERVICEACCOUNT_NAME由部署创建的并使用的 ServiceAccount 的名称
kubernetes-image-pullerExpand 表 3.18. configmap.yaml中的镜像 Puller OpenShift 模板参数 值 使用方法 默认 CACHING_CPU_LIMITConfigMap 中的
CACHING_CPU_LIMIT的值.2CACHING_CPU_REQUESTConfigMap 中的
CACHING_CPU_REQUEST的值.05CACHING_INTERVAL_HOURSConfigMap 中的
CACHING_INTERVAL_HOURS的值"1"CACHING_MEMORY_LIMITConfigMap 中的
CACHING_MEMORY_LIMIT的值"20Mi"CACHING_MEMORY_REQUESTConfigMap 中的
CACHING_MEMORY_REQUEST的值"10Mi"DAEMONSET_NAMEConfigMap 中的
DAEMONSET_NAME的值kubernetes-image-pullerDEPLOYMENT_NAMEConfigMap 中的
DEPLOYMENT_NAME的值kubernetes-image-puller镜像ConfigMap 中的
IMAGES值"undefined"NAMESPACEConfigMap 中的
NAMESPACE值k8s-image-pullerNODE_SELECTORConfigMap 中的
NODE_SELECTOR的值"{}"Expand 表 3.19. serviceaccount.yaml中的镜像 Puller OpenShift 模板参数 值 使用方法 默认 SERVICEACCOUNT_NAME由部署创建的并使用的 ServiceAccount 的名称
kubernetes-image-puller创建一个 OpenShift 项目来托管 Image Puller:
oc new-project <k8s-image-puller>
$ oc new-project <k8s-image-puller>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 处理并应用模板来安装 puller:
oc process -f serviceaccount.yaml | oc apply -f - oc process -f configmap.yaml | oc apply -f - oc process -f app.yaml | oc apply -f -
$ oc process -f serviceaccount.yaml | oc apply -f - $ oc process -f configmap.yaml | oc apply -f - $ oc process -f app.yaml | oc apply -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证 < kubernetes-image-puller> 部署和 < kubernetes-image-puller> DaemonSet 是否存在。DaemonSet 需要为集群中的每个节点有一个 Pod:
oc get deployment,daemonset,pod --namespace <k8s-image-puller>
$ oc get deployment,daemonset,pod --namespace <k8s-image-puller>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 < kubernetes-image-puller >
ConfigMap的值。oc get configmap <kubernetes-image-puller> --output yaml
$ oc get configmap <kubernetes-image-puller> --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 配置可观察性 复制链接链接已复制到粘贴板!
要配置 OpenShift Dev Spaces 可观察性功能,请参阅:
3.6.1. Che-Theia 工作区 复制链接链接已复制到粘贴板!
3.6.1.1. Telemetry 概述 复制链接链接已复制到粘贴板!
Telemetry 是操作数据的明确和 ethical 集合。默认情况下,Red Hat OpenShift Dev Spaces 不提供遥测,但在 Che-Theia 编辑器中有一个抽象 API,允许使用插件机制在 chectl 命令行工具用法数据中启用遥测,可以使用 segment 来收集。此方法在红帽托管的 "Ecli Che 托管的服务"中使用,每个 Che-Theia 工作区都启用了遥测服务。
本文档包括一个指南,介绍如何为 Red Hat OpenShift Dev Spaces 自行进行遥测客户端,后跟 Red Hat OpenShift Dev Spaces Woopra Telemetry Plugin 的概述。
3.6.1.2. 使用案例 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 遥测 API 允许跟踪:
- 工作区使用率的持续时间
- 用户驱动的操作,如文件编辑、提交和推送到远程存储库。
- 工作区中使用的编程语言和 devfile。
3.6.1.3. 它如何工作 复制链接链接已复制到粘贴板!
当 Dev Workspace 启动时,che-theia 容器会启动遥测插件,该插件负责将遥测事件发送到后端。如果在 Dev Workspace Pod 中设置了 $DEVWORKSPACE_TELEMETRY_BACKEND_PORT 环境变量,遥测插件会将事件发送到侦听该端口的后端。后端将收到的事件转换为特定于事件的后端表示,并将它们发送到配置的分析后端(如 Segment 或 Woopra)。
3.6.1.4. Che-Theia 遥测插件发送到后端的事件 复制链接链接已复制到粘贴板!
| 事件 | 描述 |
|---|---|
| WORKSPACE_OPENED | Che-Theia 开始运行时发送 |
| COMMIT_LOCALLY |
使用 |
| PUSH_TO_REMOTE |
使用 |
| EDITOR_USED | 在编辑器中更改了文件时发送 |
可以在后端插件中检测到 WORKSPACE_INACTIVE 和 WORKSPACE_STOPPED 等其他事件。
3.6.1.5. Woopra 遥测插件 复制链接链接已复制到粘贴板!
Woopra Telemetry Plugin 是一个插件,用于将遥测从 Red Hat OpenShift Dev Spaces 安装发送到 Segment 和 Woopra。此插件 由 Red Hat 托管的 Eclipse Che 使用,但任何 Red Hat OpenShift Dev Spaces 部署都可以利用此插件。有效 Woopra 域和 Segment Write 键没有依赖项。插件的 devfile v2 是 plugin.yaml,有四个环境变量可以传递给插件:
-
WOOPRA_DOMAIN- 要发送事件的 Woopra 域。 -
SEGMENT_WRITE_KEY- 将事件发送到 Segment 和 Woopra 的写入密钥。 -
WOOPRA_DOMAIN_ENDPOINT- 如果您不希望直接传递 Woopra 域,则插件将从返回 Woopra 域的提供 HTTP 端点中获取它。 -
SEGMENT_WRITE_KEY_ENDPOINT- 如果您不希望直接传递 Segment 写密钥,则插件将从返回 Segment 写密钥的提供的 HTTP 端点中获取它。
要在 Red Hat OpenShift Dev Spaces 安装中启用 Woopra 插件:
流程
将
plugin.yamldevfile v2 文件部署到带有环境变量设置的 HTTP 服务器中。配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6. 创建遥测插件 复制链接链接已复制到粘贴板!
本节演示了如何创建一个扩展 AbstractAnalyticsManager 的 AnalyticsManager 类并实施以下方法:
-
isEnabled ()- 确定遥测后端是否正常工作。这可能意味着始终返回true或具有更复杂的检查,例如,当缺少连接属性时返回false。 -
destroy ()- 在关闭遥测后端之前运行清理方法。此方法发送WORKSPACE_STOPPED事件。 -
onActivity ()- 通知给定用户仍发生一些活动。这主要用于发送WORKSPACE_INACTIVE事件。 -
onEvent ()- 将遥测事件提交到遥测服务器,如WORKSPACE_USED或WORKSPACE_STARTED。 -
increaseDuration ()- 增加当前事件的持续时间,而不是在小时间内发送多个事件。
以下部分涵盖了:
- 创建遥测服务器以将事件回显到标准输出.
- 扩展 OpenShift Dev Spaces 遥测客户端并实施用户的自定义后端。
-
创建一个
plugin.yaml文件,代表自定义后端的 Dev Workspace 插件。 -
通过设置
CheCluster自定义资源中的workspacesDefaultPlugins属性,指定自定义插件的位置。
3.6.1.6.1. 开始使用 复制链接链接已复制到粘贴板!
本文档描述了扩展 OpenShift Dev Spaces 遥测系统以与自定义后端通信所需的步骤:
- 创建接收事件的服务器进程
- 扩展 OpenShift Dev Spaces 库,以创建向服务器发送事件的后端
- 在容器中打包遥测后端并将其部署到镜像 registry
- 为后端添加插件,并指示 OpenShift Dev Spaces 在 Dev Workspaces 中加载插件
此处 提供了遥测后端的一个完整示例。
创建接收事件的服务器
出于演示目的,本例演示了如何创建服务器,从我们的遥测插件接收事件并将其写入标准输出。
对于生产用例,请考虑与第三方遥测系统(如 Segment、Woopra)集成,而不是创建自己的遥测服务器。在这种情况下,使用供应商的 API 将事件从自定义后端发送到其系统。
以下 Go 代码在端口 8080 上启动一个服务器,并将事件写入标准输出:
例 3.12. main.go
基于此代码创建容器镜像,并将其作为部署在 openshift-devspaces 项目中的 OpenShift 中的部署。示例遥测服务器的代码位于 telemetry-server-example。要部署遥测服务器,请克隆存储库并构建容器:
git clone https://github.com/che-incubator/telemetry-server-example cd telemetry-server-example podman build -t registry/organization/telemetry-server-example:latest . podman push registry/organization/telemetry-server-example:latest
$ git clone https://github.com/che-incubator/telemetry-server-example
$ cd telemetry-server-example
$ podman build -t registry/organization/telemetry-server-example:latest .
$ podman push registry/organization/telemetry-server-example:latest
manifest_with_ingress.yaml 和 manifest_with_route 包含 Deployment 和 Service 的定义。前者还定义了 Kubernetes Ingress,后者则定义了 OpenShift 路由。
在清单文件中,替换 image 和 host 字段,以匹配您推送的镜像,以及 OpenShift 集群的公共主机名。然后运行:
kubectl apply -f manifest_with_[ingress|route].yaml -n openshift-devspaces
$ kubectl apply -f manifest_with_[ingress|route].yaml -n openshift-devspaces
3.6.1.6.2. 创建后端项目 复制链接链接已复制到粘贴板!
为了在开发时进行快速反馈,建议在 Dev Workspace 内进行开发。这样,您可以在集群中运行应用程序,并从前端遥测插件接收事件。
Maven Quarkus 项目构建:
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOTmvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOTCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除
src/main/java/mygroup和src/test/java/mygroup下的文件。 -
如需最新的版本,请参阅 GitHub 软件包,以及
后端基础的Maven 协调。 将以下依赖项添加到
pom.xml中:例 3.13.
pom.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建一个具有
read:packages权限的个人访问令牌,以便从 GitHub 软件包下载org.eclipse.che.incubator.workspace-telemetry:backend-base依赖项。 在
~/.m2/settings.xml文件中添加您的 GitHub 用户名、个人访问令牌和che-incubator存储库详情:例 3.14.
settings.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.3. 创建分析管理器的规范实施并添加专用逻辑 复制链接链接已复制到粘贴板!
在 src/main/java/mygroup 下创建两个文件:
-
MainConfiguration.java- 包含提供给AnalyticsManager的配置。 -
AnalyticsManager.java- 包含特定于遥测系统的逻辑。
例 3.15. MainConfiguration.java
- 1
- MicroProfile 配置注释用于注入
welcome.message配置。
有关如何设置特定于您的后端的配置属性的更多详细信息,请参阅 Quarkus 配置参考指南。
例 3.16. AnalyticsManager.java
由于 org.my.group.AnalyticsManager 和 org.my.group.MainConfiguration 是替代 Bean,因此请使用 src/main/resources/application.properties 中的 quarkus.arc.selected-alternatives 属性来指定它们。
例 3.17. application.properties
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
quarkus.arc.selected-alternatives=MainConfiguration,AnalyticsManager
3.6.1.6.4. 在 Dev Workspace 中运行应用程序 复制链接链接已复制到粘贴板!
在 Dev Workspace 中设置
DEVWORKSPACE_TELEMETRY_BACKEND_PORT环境变量。在这里,值设为4167。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Dev Spaces 仪表板重启 Dev Workspace。
在 Dev Workspace 的终端窗口中运行以下命令启动应用程序。使用
--settings标志指定包含 GitHub 访问令牌的settings.xml文件的路径。mvn --settings=settings.xml quarkus:dev -Dquarkus.http.port=${DEVWORKSPACE_TELEMETRY_BACKEND_PORT}$ mvn --settings=settings.xml quarkus:dev -Dquarkus.http.port=${DEVWORKSPACE_TELEMETRY_BACKEND_PORT}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用程序现在通过前端插件的端口
4167接收遥测事件。
验证步骤
验证以下输出是否已记录:
INFO [org.ecl.che.inc.AnalyticsManager] (Quarkus Main Thread) No welcome message provided INFO [io.quarkus] (Quarkus Main Thread) devworkspace-telemetry-example-plugin 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 0.323s. Listening on: http://localhost:4167 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kubernetes-client, rest-client, rest-client-jackson, resteasy, resteasy-jsonb, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]
INFO [org.ecl.che.inc.AnalyticsManager] (Quarkus Main Thread) No welcome message provided INFO [io.quarkus] (Quarkus Main Thread) devworkspace-telemetry-example-plugin 1.0.0-SNAPSHOT on JVM (powered by Quarkus 2.7.2.Final) started in 0.323s. Listening on: http://localhost:4167 INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated. INFO [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, kubernetes-client, rest-client, rest-client-jackson, resteasy, resteasy-jsonb, smallrye-context-propagation, smallrye-openapi, swagger-ui, vertx]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证
AnalyticsManager的onEvent ()方法是否从前端插件接收事件,请按 l 键来禁用 Quarkus 实时编码,并编辑 IDE 中的任何文件。应该记录以下输出:INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (Aesh InputStream Reader) Live reload disabled INFO [org.ecl.che.inc.AnalyticsManager] (executor-thread-2) The received event is: Edit Workspace File in Che
INFO [io.qua.dep.dev.RuntimeUpdatesProcessor] (Aesh InputStream Reader) Live reload disabled INFO [org.ecl.che.inc.AnalyticsManager] (executor-thread-2) The received event is: Edit Workspace File in CheCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.5. 实现 isEnabled () 复制链接链接已复制到粘贴板!
在本示例中,此方法始终会在调用时返回 true。
例 3.18. AnalyticsManager.java
@Override
public boolean isEnabled() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
可以在 isEnabled () 中放置更复杂的逻辑。例如,托管的 OpenShift Dev Spaces Woopra 后端 在确定是否启用了后端前检查是否存在配置属性。
3.6.1.6.6. 实施 onEvent () 复制链接链接已复制到粘贴板!
onEvent () 将后端收到的事件发送到遥测系统。对于示例应用程序,它将 HTTP POST 有效负载发送到来自遥测服务器的 /event 端点。
将 POST 请求发送到示例遥测服务器
在以下示例中,遥测服务器应用通过以下 URL 部署到 OpenShift :http://little-telemetry-server-che.apps-crc.testing,其中 apps-crc.testing 是 OpenShift 集群的入口域名。
通过创建
TelemetryService.java设置 RESTEasy REST 客户端例 3.19.
TelemetryService.javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 发出
POST请求的端点。
在
src/main/resources/application.properties文件中指定TelemetryService的基本 URL:例 3.20.
application.propertiesorg.my.group.TelemetryService/mp-rest/url=http://little-telemetry-server-che.apps-crc.testing
org.my.group.TelemetryService/mp-rest/url=http://little-telemetry-server-che.apps-crc.testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
TelemetryService注入AnalyticsManager,并在onEvent ()中发送POST请求例 3.21.
AnalyticsManager.javaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将 HTTP 请求发送到遥测服务器,并在短时间内自动延迟相同的事件。默认持续时间为 1500 毫秒。
3.6.1.6.7. 实施 increaseDuration () 复制链接链接已复制到粘贴板!
许多遥测系统都识别事件持续时间。AbstractAnalyticsManager 将同一时间段内的类似的事件合并到一个事件中。这个 increase Duration ()的实现 是一个 no-op。此方法使用用户遥测提供程序的 API 来更改事件或事件属性,以反映事件的增加持续时间。
例 3.22. AnalyticsManager.java
@Override
public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
@Override
public void increaseDuration(AnalyticsEvent event, Map<String, Object> properties) {}
3.6.1.6.8. 实施 onActivity () 复制链接链接已复制到粘贴板!
设置不活跃超时限制,并使用 onActivity () 发送 WORKSPACE_INACTIVE 事件(如果最后一次事件时间超过超时)。
例 3.23. AnalyticsManager.java
3.6.1.6.9. 实施 destroy () 复制链接链接已复制到粘贴板!
调用 destroy () 时,发送 WORKSPACE_STOPPED 事件并关闭任何资源,如连接池。
例 3.24. AnalyticsManager.java
@Override
public void destroy() {
onEvent(WORKSPACE_STOPPED, lastOwnerId, lastIp, lastUserAgent, lastResolution, commonProperties);
}
@Override
public void destroy() {
onEvent(WORKSPACE_STOPPED, lastOwnerId, lastIp, lastUserAgent, lastResolution, commonProperties);
}
运行 mvn quarkus:dev,如 第 3.6.1.6.4 节 “在 Dev Workspace 中运行应用程序” 所述,使用 Ctrl+C 终止应用程序,向服务器发送 WORKSPACE_STOPPED 事件。
3.6.1.6.10. 打包 Quarkus 应用程序 复制链接链接已复制到粘贴板!
如需了解在容器中打包应用程序的最佳说明,请参阅 Quarkus 文档。构建容器并将其推送到您选择的容器 registry。
用于构建使用 JVM 运行的 Quarkus 镜像的 Dockerfile 示例
例 3.25. Dockerfile.jvm
要构建镜像,请运行:
mvn package && \ podman build -f src/main/docker/Dockerfile.jvm -t image:tag .
mvn package && \
podman build -f src/main/docker/Dockerfile.jvm -t image:tag .
用于构建 Quarkus 原生镜像的 Dockerfile 示例
例 3.26. Dockerfile.native
要构建镜像,请运行:
mvn package -Pnative -Dquarkus.native.container-build=true && \ podman build -f src/main/docker/Dockerfile.native -t image:tag .
mvn package -Pnative -Dquarkus.native.container-build=true && \
podman build -f src/main/docker/Dockerfile.native -t image:tag .
3.6.1.6.11. 为您的插件创建 plugin.yaml 复制链接链接已复制到粘贴板!
创建一个 plugin.yaml devfile v2 文件,该文件代表在 Dev Workspace Pod 中运行自定义后端的 Dev Workspace 插件。有关 devfile v2 的更多信息,请参阅 Devfile v2 文档
例 3.27. plugin.yaml
- 1
- 指定从 第 3.6.1.6.10 节 “打包 Quarkus 应用程序” 构建的容器镜像。
- 2
- 设置 Example 4 中的
welcome.message可选配置属性的值。
通常,用户会将此文件部署到企业 Web 服务器。本指南说明了如何在 OpenShift 上创建 Apache Web 服务器,并在该插件内托管。
创建引用新 plugin.yaml 文件的 ConfigMap 对象。
oc create configmap --from-file=plugin.yaml -n openshift-devspaces telemetry-plugin-yaml
$ oc create configmap --from-file=plugin.yaml -n openshift-devspaces telemetry-plugin-yaml
创建部署、服务和用于公开 Web 服务器的路由。部署引用此 ConfigMap 对象并将其放置在 /var/www/html 目录中。
例 3.28. manifest.yaml
oc apply -f manifest.yaml
$ oc apply -f manifest.yaml
验证步骤
部署启动后,确认 web 服务器中提供了
plugin.yaml:curl apache-che.apps-crc.testing/plugin.yaml
$ curl apache-che.apps-crc.testing/plugin.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.12. 在 Dev Workspace 中指定遥测插件 复制链接链接已复制到粘贴板!
在现有 Dev Workspace 的
components字段中添加以下内容:components: ... - name: telemetry-plugin plugin: uri: http://apache-che.apps-crc.testing/plugin.yamlcomponents: ... - name: telemetry-plugin plugin: uri: http://apache-che.apps-crc.testing/plugin.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 OpenShift Dev Spaces 仪表板启动 Dev Workspace。
验证步骤
验证遥测插件容器是否在 Dev Workspace pod 中运行。此处通过检查编辑器中的 Workspace 视图来验证这一点。
- 在编辑器中编辑文件,并在示例遥测服务器日志中观察其事件。
3.6.1.6.13. 为所有 Dev Workspaces 应用遥测插件 复制链接链接已复制到粘贴板!
将遥测插件设置为默认插件。默认插件应用于新和现有的 Dev Workspaces 的 Dev Workspace 启动。
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 从 Red Hat OpenShift Dev Spaces 仪表板启动新的或现有的 Dev Workspace。
- 按照 第 3.6.1.6.12 节 “在 Dev Workspace 中指定遥测插件” 的验证步骤,验证遥测插件是否正常工作。
3.6.2. 配置服务器日志记录 复制链接链接已复制到粘贴板!
可以微调 OpenShift Dev Spaces 服务器中可用的各个日志记录器的日志级别。
整个 OpenShift Dev Spaces 服务器的日志级别使用 Operator 的 cheLogLevel 配置属性全局配置。请参阅 第 3.1.3 节 “CheCluster 自定义资源字段参考”。要在不是由 Operator 管理的安装中设置全局日志级别,请在 che ConfigMap 中指定 CHE_LOG_LEVEL 环境变量。
可以使用 CHE_LOGGER_CONFIG 环境变量在 OpenShift Dev Spaces 服务器中配置各个日志记录器的日志级别。
3.6.2.1. 配置日志级别 复制链接链接已复制到粘贴板!
流程
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "<key1=value1,key2=value2>"spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "<key1=value1,key2=value2>"1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 以逗号分隔的键值对列表,其中键是 OpenShift Dev Spaces 服务器日志输出和值中找到的日志记录器名称。
例 3.29. 为
WorkspaceManager配置调试模式spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "org.eclipse.che.api.workspace.server.WorkspaceManager=DEBUG"spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "org.eclipse.che.api.workspace.server.WorkspaceManager=DEBUG"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2.2. 日志记录器命名 复制链接链接已复制到粘贴板!
日志记录器的名称遵循使用这些日志记录器的内部服务器类的类名称。
3.6.2.3. 日志记录 HTTP 流量 复制链接链接已复制到粘贴板!
流程
要记录 OpenShift Dev Spaces 服务器和 Kubernetes 或 OpenShift 集群的 API 服务器之间的 HTTP 流量,请配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "che.infra.request-logging=TRACE"spec: components: cheServer: extraProperties: CHE_LOGGER_CONFIG: "che.infra.request-logging=TRACE"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.3. 使用 dsc 收集日志 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 安装由 OpenShift 集群中运行的几个容器组成。虽然可以从每个运行中的容器手动收集日志,dsc 提供自动化进程的命令。
以下命令可使用 dsc 工具从 OpenShift 集群收集 Red Hat OpenShift Dev Spaces 日志:
dsc server:logs收集现有 Red Hat OpenShift Dev Spaces 服务器日志,并将其存储在本地计算机上的一个目录中。默认情况下,日志会下载到计算机上的临时目录中。但是,这可以通过指定
-d参数来覆盖。例如,要将 OpenShift Dev Spaces:wq:q 日志下载到/home/user/che-logs/目录,请使用 命令dsc server:logs -d /home/user/che-logs/
dsc server:logs -d /home/user/che-logs/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在运行时,
dsc server:logs会在控制台中打印一条消息,指定将存储日志文件的目录:Red Hat OpenShift Dev Spaces logs will be available in '/tmp/chectl-logs/1648575098344'
Red Hat OpenShift Dev Spaces logs will be available in '/tmp/chectl-logs/1648575098344'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 Red Hat OpenShift Dev Spaces 安装在非默认项目中,
dsc server:logs需要-n <NAMESPACE> paremeter,其中 <NAMESPACE> 是安装 Red Hat OpenShift Dev Spaces 的 OpenShift 项目。例如,若要从my-namespace项目中的 OpenShift Dev Spaces 获取日志,请使用 命令dsc server:logs -n my-namespace
dsc server:logs -n my-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow dsc server:deploy-
使用
dsc安装时,会在 OpenShift Dev Spaces 安装过程中自动收集日志。与dsc server:logs一样,可以使用-d参数指定目录日志存储在 中。
其他资源
- "DSC 参考文档"
3.6.4. 使用 Prometheus 和 Grafana 监控 复制链接链接已复制到粘贴板!
您可以使用集群中运行的 Prometheus 和 Grafana 实例来收集并查看 OpenShift Dev Spaces 指标。
3.6.4.1. 安装 Prometheus 和 Grafana 复制链接链接已复制到粘贴板!
您可以通过应用 template.yaml 来安装 Prometheus 和 Grafana。本例中的 template.yaml 文件提供了一个基本配置、Deployment 和 Services 的监控堆栈,以开始 Prometheus 和 Grafana。
另外,您可以使用 Prometheus Operator 和 Grafana Operator。
先决条件
- oc
流程
使用 template.yaml 安装 Prometheus 和 Grafana:
为 Prometheus 和 Grafana 创建一个新项目
监控:oc new-project monitoring
$ oc new-project monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
监控项目中应用template.yaml:oc apply -f template.yaml -n monitoring
$ oc apply -f template.yaml -n monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow
例 3.30. template.yaml
3.6.4.2. 监控 Dev Workspace Operator 复制链接链接已复制到粘贴板!
您可以配置一个监控堆栈示例,以处理 Dev Workspace Operator 公开的指标。
3.6.4.2.1. 使用 Prometheus 收集 Dev Workspace Operator 指标 复制链接链接已复制到粘贴板!
使用 Prometheus 收集、存储和查询 Dev Workspace Operator 的指标:
先决条件
-
devworkspace-controller-metrics服务在端口8443上公开指标。默认是预先配置的。 -
devworkspace-webhookserverService 在端口9443上公开指标。默认是预先配置的。 -
Prometheus 2.26.0 或更高版本正在运行。Prometheus 控制台使用对应的服务在端口
9090上运行。请参阅 Prometheus 的第一步。
流程
创建一个 ClusterRoleBinding,将与 Prometheus 关联的 ServiceAccount 绑定到 devworkspace-controller-metrics-reader ClusterRole。对于 示例监控堆栈,要使用的 ServiceAccount 的名称是
prometheus。注意如果没有 ClusterRoleBinding,您无法访问 Dev Workspace 指标,因为访问使用基于角色的访问控制(RBAC)进行保护。
例 3.31. ClusterRoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Prometheus 配置为从
devworkspace-controller-metricsService 公开的端口8443和devworkspace-webhookserverService 公开的端口9443中提取指标。注意监控堆栈示例 已创建了带有空配置的
prometheus-configConfigMap。要提供 Prometheus 配置详情,请编辑 ConfigMap 的data字段。例 3.32. Prometheus 配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 提取目标的频率。
- 2
- 重新检查记录和警报规则的速度。
- 3
- Prometheus 监控的资源。在默认配置中,两个作业(
DevWorkspace和DevWorkspace Webhook)提取devworkspace-controller-metrics和devworkspace-webhookserver服务公开的时间序列数据。 - 4
- 从端口
8443中提取指标的目标。将<DWO_project> 替换为devworkspace-controller-metricsService所在的项目。 - 5
- 从端口
9443中提取指标的目标。将<DWO_project> 替换为devworkspace-webhookserverService所在的项目。
将
PrometheusDeployment 向下扩展,以读取上一步中更新的 ConfigMap。oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
$ oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
PrometheusService:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过查看
localhost:9090/targets的目标端点来验证所有目标是否都已启动。 使用 Prometheus 控制台查看和查询指标:
-
查看
localhost:9090/metrics的指标。 从
localhost:9090/graph查询指标。如需更多信息 ,请参阅使用表达式浏览器。
-
查看
3.6.4.2.2. dev Workspace 特定的指标 复制链接链接已复制到粘贴板!
下表描述了 devworkspace-controller-metrics 服务公开的 Dev Workspace 特定指标。
| 名称 | 类型 | 描述 | 标签 |
|---|---|---|---|
|
| 计数 | Dev Workspace 启动事件的数量。 |
|
|
| 计数 |
Dev Workspaces 的数量成功进入 |
|
|
| 计数 | 失败的 Dev Workspaces 数量。 |
|
|
| Histogram | 启动 Dev Workspace 所需的时间(以秒为单位)。 |
|
| 名称 | 描述 | 值 |
|---|---|---|
|
|
Dev Workspace 的 |
|
|
|
Dev Workspace 的 |
|
|
| 工作空间启动失败原因。 |
|
| 名称 | 描述 |
|---|---|
|
| 由于用于创建 Dev Workspace 的 devfile 无效,启动失败。 |
|
|
由于以下错误导致启动失败: |
|
| 未知的故障原因。 |
3.6.4.2.3. 在 Grafana 仪表板中查看 Dev Workspace Operator 指标 复制链接链接已复制到粘贴板!
使用示例仪表板查看 Grafana 上的 Dev Workspace Operator 指标:
先决条件
- Prometheus 收集指标。请参阅 第 3.6.4.2.1 节 “使用 Prometheus 收集 Dev Workspace Operator 指标”。
- Grafana 版本 7.5.3 或更高版本。
-
Grafana 使用对应的服务在端口
3000上运行。请参阅 安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
-
导入
grafana-dashboard.json仪表板示例。
验证步骤
- 使用 Grafana 控制台查看 Dev Workspace Operator 指标仪表板。请参阅 第 3.6.4.2.4 节 “Dev Workspace Operator 的 Grafana 仪表板”。
其他资源
3.6.4.2.4. Dev Workspace Operator 的 Grafana 仪表板 复制链接链接已复制到粘贴板!
基于 grafana-dashboard.json 的 Grafana 仪表板示例从 Dev Workspace Operator 中显示以下指标。
Dev Workspace 特定的指标 面板
图 3.1. Dev Workspace 特定的指标 面板
- 平均工作区开始时间
- 平均工作空间启动持续时间。
- 工作区启动
- 成功和失败的工作区启动数量。
- 工作空间启动持续时间
- 显示工作空间启动持续时间的热图。
- dev Workspace 成功/失败
- 成功和失败的 Dev Workspace 启动之间的比较。
- dev Workspace 失败率
- 失败工作空间启动数与工作空间启动总数之间的比率。
- Dev Workspace 启动失败原因
显示工作区启动故障分布的 pie chart:
-
BadRequest -
InfrastructureFailure -
Unknown
-
Operator 指标 面板(第 1 部分)
图 3.2. Operator 指标 面板(第 1 部分)
- Webhook in flight
- 不同 webhook 请求数量之间的比较。
- 工作队列持续时间
- 显示协调请求在处理前保持在工作队列中的热图。
- Webhook 延迟(/mutate)
-
显示
/mutatewebhook 延迟的热图。 - 协调时间
- 显示协调持续时间的热图。
Operator 指标 面板(第 2 部分)
图 3.3. Operator 指标 面板(第 2 部分)
- Webhook 延迟(/convert)
-
显示
/convertWebhook 延迟的 heatmap。 - 工作队列深度
- 协调工作队列中的请求数。
- 内存
- Dev Workspace 控制器和 Dev Workspace Webhook 服务器的内存用量。
- 协调计数(DWO)
- Dev Workspace 控制器的平均协调数。
3.6.4.3. 监控 Dev Spaces 服务器 复制链接链接已复制到粘贴板!
您可以将 OpenShift Dev Spaces 配置为公开 JVM 指标,如 OpenShift Dev Spaces 服务器的 JVM 内存和类加载。
3.6.4.3.1. 启用并公开 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 在 che-host 服务的端口 8087 上公开 JVM 指标。您可以配置此行为。
流程
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: metrics: enable: <boolean>spec: components: metrics: enable: <boolean>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
true启用,false会禁用。
3.6.4.3.2. 使用 Prometheus 收集 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
使用 Prometheus 为 OpenShift Dev Spaces 服务器收集、存储和查询 JVM 指标:
先决条件
-
OpenShift Dev Spaces 在端口
8087上公开指标。请参阅启用和公开 OpenShift Dev Spaces 服务器 JVM 指标。 -
Prometheus 2.26.0 或更高版本正在运行。Prometheus 控制台使用对应的服务在端口
9090上运行。请参阅 Prometheus 的第一步。
流程
配置 Prometheus,以从端口
8087中提取指标。注意监控堆栈示例 已创建了带有空配置的
prometheus-configConfigMap。要提供 Prometheus 配置详情,请编辑 ConfigMap 的data字段。例 3.33. Prometheus 配置
将
PrometheusDeployment 向下扩展,以读取上一步中更新的 ConfigMap。oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoring
$ oc scale --replicas=0 deployment/prometheus -n monitoring && oc scale --replicas=1 deployment/prometheus -n monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
PrometheusService:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过查看
localhost:9090/的目标端点来验证所有目标是否都已启动。targets 使用 Prometheus 控制台查看和查询指标:
-
查看
localhost:9090/metrics的指标。 从
localhost:9090/graph查询指标。如需更多信息 ,请参阅使用表达式浏览器。
-
查看
3.6.4.3.3. 在 Grafana 仪表板中查看 OpenShift Dev Spaces 服务器指标 复制链接链接已复制到粘贴板!
查看 Grafana 上的 OpenShift Dev Spaces 服务器指标:
先决条件
- Prometheus 在 OpenShift Dev Spaces 集群上收集指标。请参阅 第 3.6.4 节 “使用 Prometheus 和 Grafana 监控”。
-
Grafana 6.0 或更高版本在带有对应服务的端口
3000上运行。请参阅 安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
- 导入示例 dashboard。请参阅 导入仪表板。
在 Grafana 控制台中查看 OpenShift Dev Spaces JVM 指标:
图 3.4. OpenShift Dev Spaces 服务器 JVM 仪表板
图 3.5. 快速事实
图 3.6. JVM 内存
图 3.7. JVM Misc
图 3.8. JVM 内存池(heap)
图 3.9. JVM 内存池(Non-Heap)
图 3.10. 垃圾回收
图 3.11. 类加载
图 3.12. 缓冲区池
3.7. 配置网络 复制链接链接已复制到粘贴板!
3.7.1. 配置网络策略 复制链接链接已复制到粘贴板!
默认情况下,OpenShift 集群中的所有 Pod 都可以相互通信,即使它们位于不同的命名空间中。在 OpenShift Dev Spaces 中,这可让一个用户项目中的工作区 Pod 将流量发送到其他用户项目中的另一个工作区 Pod。
为安全起见,可以使用 NetworkPolicy 对象配置多租户隔离,以限制用户项目中的所有 Pod 通信。但是,OpenShift Dev Spaces 项目中的 Pod 必须能够与用户项目中的 Pod 通信。
先决条件
- OpenShift 集群具有网络限制,如多租户隔离。
流程
将
allow-from-openshift-devspacesNetworkPolicy 应用到每个用户项目。allow-from-openshift-devspacesNetworkPolicy 允许从 OpenShift Dev Spaces 命名空间的传入流量到用户项目中的所有 Pod。例 3.34.
allow-from-openshift-devspaces.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.2. 配置 Dev Spaces 主机名 复制链接链接已复制到粘贴板!
此流程描述了如何配置 OpenShift Dev Spaces 以使用自定义主机名。
先决条件
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。 - 生成证书和私钥文件。
要生成对私钥和证书,与其他 OpenShift Dev Spaces 主机相同的证书颁发机构(CA)必须相同。
要求 DNS 供应商将自定义主机名指向集群入口。
流程
为 OpenShift Dev Spaces 预先创建项目:
oc create project openshift-devspaces
$ oc create project openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 TLS secret:
oc create secret TLS <tls_secret_name> \ --key <key_file> \ --cert <cert_file> \ -n openshift-devspaces
$ oc create secret TLS <tls_secret_name> \1 --key <key_file> \2 --cert <cert_file> \3 -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将所需的标签添加到 secret 中:
oc label secret <tls_secret_name> \ app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
$ oc label secret <tls_secret_name> \1 app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- TLS secret 名称
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: networking: hostname: <hostname> tlsSecretName: <secret>spec: networking: hostname: <hostname>1 tlsSecretName: <secret>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果 OpenShift Dev Spaces 已部署,请等待所有 OpenShift Dev Spaces 组件的推出完成。
3.7.3. 将不受信任的 TLS 证书导入到 Dev Spaces 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 组件与外部服务通信使用 TLS 加密。它们需要由可信证书颁发机构(CA)签名的 TLS 证书。因此,您必须导入到 OpenShift Dev Spaces 中由外部服务使用的所有不可信 CA 链,例如:
- 代理
- 身份提供程序(OIDC)
- 源代码存储库供应商(Git)
OpenShift Dev Spaces 在 OpenShift Dev Spaces 项目中使用标记的配置映射作为 TLS 证书的源。配置映射可以有一个任意数量的密钥,每个密钥都有随机的证书。
当 OpenShift 集群包含通过 cluster- wide-proxy 配置 添加的集群范围的可信 CA 证书时,OpenShift Dev Spaces Operator 会检测到它们,并使用 config.openshift.io/inject-trusted-cabundle="true" 标签自动注入配置映射。根据此注解,OpenShift 会自动在配置映射的 ca-bundle.crt 键内自动注入集群范围的可信 CA 证书。
先决条件
流程
将要导入的所有 CA 链 PEM 文件串联到
custom-ca-certificates.pem文件中,并删除与 Java 信任存储不兼容的返回字符。cat ca-cert-for-{prod-id-short}-*.pem | tr -d '\r' > custom-ca-certificates.pem$ cat ca-cert-for-{prod-id-short}-*.pem | tr -d '\r' > custom-ca-certificates.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用所需 TLS 证书创建
custom-ca-certificates配置映射:oc create configmap custom-ca-certificates \ --from-file=custom-ca-certificates.pem \ --namespace=openshift-devspaces$ oc create configmap custom-ca-certificates \ --from-file=custom-ca-certificates.pem \ --namespace=openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 标记
custom-ca-certificates配置映射:oc label configmap custom-ca-certificates \ app.kubernetes.io/component=ca-bundle \ app.kubernetes.io/part-of=che.eclipse.org \ --namespace=openshift-devspaces$ oc label configmap custom-ca-certificates \ app.kubernetes.io/component=ca-bundle \ app.kubernetes.io/part-of=che.eclipse.org \ --namespace=openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果之前尚未部署,部署 OpenShift Dev Spaces。否则,请等待 OpenShift Dev Spaces 组件的推出完成。
- 重启正在运行的工作区以使更改生效。
验证步骤
验证配置映射是否包含自定义 CA 证书。这个命令以 PEM 格式返回您的自定义 CA 证书:
oc get configmap \ --namespace=openshift-devspaces \ --output='jsonpath={.items[0:].data.custom-ca-certificates\.pem}' \ --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.org$ oc get configmap \ --namespace=openshift-devspaces \ --output='jsonpath={.items[0:].data.custom-ca-certificates\.pem}' \ --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.orgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OpenShift Dev Spaces pod 包含挂载
ca-certs-merged配置映射的卷:oc get pod \ --selector=app.kubernetes.io/component=devspaces \ --output='jsonpath={.items[0].spec.volumes[0:].configMap.name}' \ --namespace=openshift-devspaces \ | grep ca-certs-merged$ oc get pod \ --selector=app.kubernetes.io/component=devspaces \ --output='jsonpath={.items[0].spec.volumes[0:].configMap.name}' \ --namespace=openshift-devspaces \ | grep ca-certs-mergedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OpenShift Dev Spaces 服务器容器是否有自定义 CA 证书。这个命令以 PEM 格式返回您的自定义 CA 证书:
oc exec -t deploy/devspaces \ --namespace=openshift-devspaces \ -- cat /public-certs/custom-ca-certificates.pem$ oc exec -t deploy/devspaces \ --namespace=openshift-devspaces \ -- cat /public-certs/custom-ca-certificates.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OpenShift Dev Spaces 服务器中验证导入的证书计数是否不为空:
oc logs deploy/devspaces --namespace=openshift-devspaces \ | grep custom-ca-certificates.pem$ oc logs deploy/devspaces --namespace=openshift-devspaces \ | grep custom-ca-certificates.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 列出证书的 SHA256 指纹:
for certificate in ca-cert*.pem ; do openssl x509 -in $certificate -digest -sha256 -fingerprint -noout | cut -d= -f2; done
$ for certificate in ca-cert*.pem ; do openssl x509 -in $certificate -digest -sha256 -fingerprint -noout | cut -d= -f2; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 OpenShift Dev Spaces 服务器 Java 信任存储是否包含具有相同指纹的证书:
oc exec -t deploy/devspaces --namespace=openshift-devspaces -- \ keytool -list -keystore /home/user/cacerts \ | grep --after-context=1 custom-ca-certificates.pem$ oc exec -t deploy/devspaces --namespace=openshift-devspaces -- \ keytool -list -keystore /home/user/cacerts \ | grep --after-context=1 custom-ca-certificates.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 启动工作区,获取其创建的项目名称:< workspace_namespace > 并等待工作区启动。
验证
che-trusted-ca-certs配置映射是否包含您的自定义 CA 证书。这个命令以 PEM 格式返回您的自定义 CA 证书:oc get configmap che-trusted-ca-certs \ --namespace=<workspace_namespace> \ --output='jsonpath={.data.custom-ca-certificates\.custom-ca-certificates\.pem}'$ oc get configmap che-trusted-ca-certs \ --namespace=<workspace_namespace> \ --output='jsonpath={.data.custom-ca-certificates\.custom-ca-certificates\.pem}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证工作区 pod 是否挂载
che-trusted-ca-certs配置映射:oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].spec.volumes[0:].configMap.name}' \ | grep che-trusted-ca-certs$ oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].spec.volumes[0:].configMap.name}' \ | grep che-trusted-ca-certsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 generic
-developer-image容器(或工作区 devfile 中定义的容器)挂载che-trusted-ca-certs卷:oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].spec.containers[0:]}' \ | jq 'select (.volumeMounts[].name == "che-trusted-ca-certs") | .name'$ oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].spec.containers[0:]}' \ | jq 'select (.volumeMounts[].name == "che-trusted-ca-certs") | .name'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取工作区 pod 名称 < ;workspace_pod_name> :
oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].metadata.name}' \$ oc get pod \ --namespace=<workspace_namespace> \ --selector='controller.devfile.io/devworkspace_name=<workspace_name>' \ --output='jsonpath={.items[0:].metadata.name}' \Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证工作区容器是否具有自定义 CA 证书。这个命令以 PEM 格式返回您的自定义 CA 证书:
oc exec <workspace_pod_name> \ --namespace=<workspace_namespace> \ -- cat /public-certs/custom-ca-certificates.custom-ca-certificates.pem$ oc exec <workspace_pod_name> \ --namespace=<workspace_namespace> \ -- cat /public-certs/custom-ca-certificates.custom-ca-certificates.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
3.7.4. 配置 OpenShift 路由 复制链接链接已复制到粘贴板!
如果您的机构需要,您可以配置 OpenShift Route 标签和注解。
先决条件
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。 - 在 OpenShift 中运行的 OpenShift Dev Spaces 实例。
流程
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: networking: labels: <labels> annotations: <annotations>spec: networking: labels: <labels>1 annotations: <annotations>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.5. 配置 OpenShift 路由 复制链接链接已复制到粘贴板!
您可以配置标签、注解和域,供 OpenShift Route 使用 路由器分片。
先决条件
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。 -
DSC:请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
配置
CheCluster自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: networking: labels: <labels> domain: <domain> annotations: <annotations>spec: networking: labels: <labels>1 domain: <domain>2 annotations: <annotations>3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8. 配置存储 复制链接链接已复制到粘贴板!
3.8.1. 使用存储类安装 Dev Spaces 复制链接链接已复制到粘贴板!
要将 OpenShift Dev Spaces 配置为使用配置的基础架构存储,请使用存储类安装 OpenShift Dev Spaces。当用户希望绑定非默认置备程序提供的持久性卷时,这特别有用。为此,用户将这个存储绑定到 OpenShift Dev Spaces 数据保存,并为该存储设置参数。这些参数可确定以下内容:
- 特殊主机路径
- 存储容量
- 卷 mod
- 挂载选项
- 文件系统
- 访问模式
- 存储类型
- 以及许多其他
OpenShift Dev Spaces 有两个组件,需要持久性卷来存储数据:
- PostgreSQL 数据库。
-
OpenShift Dev Spaces 工作区。OpenShift Dev Spaces 工作区使用卷存储源代码,如
/projects卷。
只有当工作区不是临时时,OpenShift Dev Spaces 工作区源代码才会存储在持久性卷中。
持久性卷声明事实:
- OpenShift Dev Spaces 不会在基础架构中创建持久性卷。
- OpenShift Dev Spaces 使用持久性卷声明(PVC)挂载持久性卷。
OpenShift Dev Spaces 服务器创建持久性卷声明。
用户在 OpenShift Dev Spaces 配置中定义存储类名称,以使用 OpenShift Dev Spaces PVC 中的存储类功能。使用存储类时,用户通过额外的存储参数以灵活的方式配置基础架构存储。也可以使用类名称将静态置备的持久性卷绑定到 OpenShift Dev Spaces PVC。
流程
使用 CheCluster 自定义资源定义来定义存储类:
定义存储类名称:配置
CheCluster自定义资源并安装 OpenShift Dev Spaces。请参阅 第 3.1.1 节 “在安装过程中使用 dsc 配置CheCluster自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
che-postgres-pv.yaml文件中定义 PostgreSQL 数据库的持久性卷:che-postgres-pv.yamlfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
che-postgres-pv.yaml文件中定义 OpenShift Dev Spaces 工作区的持久性卷:che-workspace-pv.yamlfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 绑定两个持久性卷:
kubectl apply -f che-workspace-pv.yaml -f che-postgres-pv.yaml
$ kubectl apply -f che-workspace-pv.yaml -f che-postgres-pv.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您必须为卷提供有效的文件权限。您可以使用存储类配置或手动进行配置。要手动定义权限,请定义 storageClass#mountOptions uid 和 gid。PostgreSQL 卷需要 uid=26 和 gid=26。
3.9. 管理身份和授权 复制链接链接已复制到粘贴板!
本节论述了管理 Red Hat OpenShift Dev Spaces 的身份和授权的不同方面。
3.9.1. OAuth 用于 GitHub、GitLab 或 Bitbucket 复制链接链接已复制到粘贴板!
允许用户使用远程 Git 存储库:
3.9.1.1. 为 GitHub 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用托管在 GitHub 上的远程 Git 存储库:
- 设置 GitHub OAuth 应用程序(OAuth 2.0)。
- 应用 GitHub OAuth App Secret。
3.9.1.1.1. 设置 GitHub OAuth 应用程序 复制链接链接已复制到粘贴板!
使用 OAuth 2.0 设置 GitHub OAuth 应用程序。
先决条件
- 已登陆到 GitHub。
-
base64安装在您正在使用的操作系统中。
流程
- 进入 https://github.com/settings/applications/new。
输入以下值:
-
应用程序名称 :
OpenShift Dev Spaces。 -
主页 URL:
"https://devspaces-<openshift_deployment_name>.<domain_name>"/ -
授权回调 URL:
"https://devspaces-<openshift_deployment_name>.<domain_name>"/api/oauth/callback
-
应用程序名称 :
- 点击 Register application。
- 点 Generate new client secret。
复制 GitHub OAuth 客户端 ID 并将其编码为 Base64,以便在应用 GitHub OAuth App Secret 时使用:
echo -n '<github_oauth_client_id>' | base64
$ echo -n '<github_oauth_client_id>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制 GitHub OAuth 客户端 Secret 并将其编码为 Base64,以便在应用 GitHub OAuth App Secret 时使用:
echo -n '<github_oauth_client_secret>' | base64
$ echo -n '<github_oauth_client_secret>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.9.1.1.2. 应用 GitHub OAuth 应用程序 Secret 复制链接链接已复制到粘贴板!
准备并应用 GitHub OAuth App Secret。
先决条件
- 设置 GitHub OAuth 应用程序已完成。
设置 GitHub OAuth App 时生成的 Base64 编码的值已准备好:
- GitHub OAuth 客户端 ID
- GitHub OAuth 客户端机密
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。
流程
准备 Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证在创建 Secret 的输出中。
3.9.1.2. 为 GitLab 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
要使用户能够使用 GitLab 实例托管的远程 Git 存储库:
- 设置 GitLab 授权应用程序(OAuth 2.0)。
- 应用 GitLab 授权应用 Secret。
3.9.1.2.1. 设置 GitLab 授权应用程序 复制链接链接已复制到粘贴板!
使用 OAuth 2.0 设置 GitLab 授权应用程序。
先决条件
- 您已登录到 GitLab。
-
base64安装在您正在使用的操作系统中。
流程
- 点击您的 avatar,再转到 → 。
- 输入 OpenShift Dev Spaces 作为 Name。
-
输入
"https://devspaces-<openshift_deployment_name>.<domain_name>"/api/oauth/callback作为 Redirect URI。 - 选中 机密和 过期访问令牌 复选框。
-
在 Scopes 下,选中
api、write_repository和openid复选框。 - 点 Save application。
复制 GitLab 应用 ID 并将其编码为 Base64,以便在应用 GitLab-authorized 应用 Secret 时使用:
echo -n '<gitlab_application_id>' | base64
$ echo -n '<gitlab_application_id>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制 GitLab 客户端 Secret 并将其编码为 Base64,以便在应用 GitLab-authorized 应用 Secret 时使用:
echo -n '<gitlab_client_secret>' | base64
$ echo -n '<gitlab_client_secret>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
3.9.1.2.2. 应用 GitLab-authorized 应用程序 Secret 复制链接链接已复制到粘贴板!
准备并应用 GitLab-authorized 应用 Secret。
先决条件
- 设置 GitLab 授权应用程序已完成。
设置 GitLab 授权应用程序时生成的 Base64 编码的值已准备好:
- GitLab Application ID
- GitLab 客户端机密
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。
流程
准备 Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证在创建 Secret 的输出中。
3.9.1.3. 为 Bitbucket 服务器配置 OAuth 1.0 复制链接链接已复制到粘贴板!
要让用户使用在 Bitbucket 服务器上托管的远程 Git 存储库:
- 在 Bitbucket 服务器上设置应用链接(OAuth 1.0)。
- 为 Bitbucket 服务器应用应用链接 Secret。
3.9.1.3.1. 在 Bitbucket 服务器上设置应用程序链接 复制链接链接已复制到粘贴板!
在 Bitbucket 服务器上为 OAuth 1.0 设置应用链接。
流程
在命令行中,运行命令为后续步骤创建必要的文件,并在应用应用程序链接 Secret 时使用:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 前往 → 。
-
在 URL 字段中输入
"https://devspaces-<openshift_deployment_name>.<domain_name>"/,然后点击 Create new link。 - 在提供的 Application URL 下,选中 Use this URL 复选框,再单击 Continue。
- 输入 OpenShift Dev Spaces 作为 Application Name。
- 选择 Generic Application 作为 应用程序类型。
- 输入 OpenShift Dev Spaces 作为 Service Provider Name。
-
粘贴
bitbucket-consumer-key文件的内容作为 Consumer 键。 -
粘贴
bitbucket-shared-secret文件的内容作为 Shared secret。 -
输入
<bitbucket_server_url> /plugins/servlet/oauth/request-token作为 Request Token URL。 -
输入
<bitbucket_server_url> /plugins/servlet/oauth/access-token作为 Access token URL。 -
输入
<bitbucket_server_url> /plugins/servlet/oauth/authorize作为 Authorize URL。 - 选中 创建传入链接 复选框,再单击 继续。
-
粘贴
bitbucket_consumer_key文件的内容作为 Consumer Key。 - 输入 OpenShift Dev Spaces 作为 Consumer 名称。
-
将
public-stripped.pub文件的内容作为 公钥 粘贴,然后单击 Continue。
3.9.1.3.2. 为 Bitbucket 服务器应用应用程序链接 Secret 复制链接链接已复制到粘贴板!
为 Bitbucket 服务器准备并应用应用链接 Secret。
先决条件
- 应用链接在 Bitbucket 服务器上设置。
设置应用程序链接时创建的以下 Base64 编码文件已准备好:
-
privatepkcs8-stripped.pem -
bitbucket_consumer_key -
bitbucket-shared-secret
-
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。
流程
准备 Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证在创建 Secret 的输出中。
3.9.1.4. 为 Bitbucket 云配置 OAuth 2.0 复制链接链接已复制到粘贴板!
您可以允许用户使用在 Bitbucket 云上托管的远程 Git 存储库:
- 在 Bitbucket 云中设置 OAuth 使用者(OAuth 2.0)。
- 为 Bitbucket 云应用 OAuth 使用者 Secret。
3.9.1.4.1. 在 Bitbucket 云中设置 OAuth 使用者 复制链接链接已复制到粘贴板!
在 Bitbucket 云中为 OAuth 2.0 设置 OAuth 使用者。
先决条件
- 您已登录到 Bitbucket 云。
-
base64安装在您正在使用的操作系统中。
流程
- 点 avatar,再进入 All workspaces 页面。
- 选择一个工作区并点它。
- 前往 → 。
- 输入 OpenShift Dev Spaces 作为 Name。
-
输入
"https://devspaces-<openshift_deployment_name>.<domain_name>"/api/oauth/callback作为 Callback URL。 - 在 Permissions 下,选中所有 帐户和 存储库 复选框,然后单击保存。
扩展添加的消费者,然后复制 Key 值并将其编码为 Base64,以便在应用 Bitbucket OAuth 消费者 Secret 时使用:
echo -n '<bitbucket_oauth_consumer_key>' | base64
$ echo -n '<bitbucket_oauth_consumer_key>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 复制 Secret 值并将其编码为 Base64,以便在应用 Bitbucket OAuth 消费者 Secret 时使用:
echo -n '<bitbucket_oauth_consumer_secret>' | base64
$ echo -n '<bitbucket_oauth_consumer_secret>' | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.9.1.4.2. 为 Bitbucket 云应用 OAuth 使用者 Secret 复制链接链接已复制到粘贴板!
为 Bitbucket 云准备并应用 OAuth 使用者 Secret。
先决条件
- OAuth 使用者在 Bitbucket 云中设置。
设置 Bitbucket OAuth 消费者时生成的 Base64 编码的值已准备好:
- Bitbucket OAuth 消费者密钥
- Bitbucket OAuth 消费者 Secret
-
一个活跃的
oc会话,具有到目标 OpenShift 集群的管理权限。请参阅 CLI 入门。
流程
准备 Secret:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用 Secret:
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证在创建 Secret 的输出中。
3.9.2. 配置管理用户 复制链接链接已复制到粘贴板!
要在 OpenShift Dev Spaces 服务器上执行需要管理特权的操作,如删除用户数据,请激活具有管理特权的用户。默认安装为 admin 用户启用管理特权,无论它在 OpenShift 中存在。
流程
配置
CheCluster自定义资源,以使用管理特权设置 & lt;admin > 用户。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_SYSTEM_ADMIN__NAME: '<admin>'spec: components: cheServer: extraProperties: CHE_SYSTEM_ADMIN__NAME: '<admin>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.9.3. 删除用户数据 复制链接链接已复制到粘贴板!
3.9.3.1. 根据 GDPR 删除用户数据 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Dev Spaces API 删除 OpenShift Dev Spaces 用户的数据。按照此流程,使服务符合 EU General Data Protection Regulation (GDPR),它强制个人擦除个人数据。
先决条件
- 具有到 OpenShift Dev Spaces 的管理权限的活跃会话。请参阅 第 3.9.2 节 “配置管理用户”。
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。
流程
-
获取 < ;username> user <id >
id: 导航到 https:// <devspaces- <openshift_deployment_name>.<domain_name>> /swagger/#/user/find_1,点 , set name: <username> ,然后点 。向下滚动 Response body 以查找id值。 -
删除 OpenShift Dev Spaces 服务器 管理的 <id > 用户数据,如 user preferences: 导航到 https:// <devspaces- <openshift_deployment_name>.<domain_name> >/swagger/#/user/remove,点 , set id: <id>,然后点 。预期为
204响应代码: 删除 user 项目,以删除绑定到用户的所有 OpenShift 资源,如工作区、机密和 configmap。
oc delete namespace <username>-devspaces
$ oc delete namespace <username>-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 第 5 章 使用 Dev Spaces 服务器 API.
- 第 3.2.1 节 “配置项目名称”.
- 要删除所有用户的数据,请参阅 第 7 章 卸载 Dev Spaces。
第 4 章 管理 IDE 扩展 复制链接链接已复制到粘贴板!
IDE 使用扩展或插件来扩展其功能,以及管理 IDE 之间扩展的机制。
4.1. Microsoft Visual Studio Code 扩展 - 开源 复制链接链接已复制到粘贴板!
要管理扩展,此 IDE 使用以下 Open VSX registry 实例之一:
- public, primary open-vsx.org registry。
-
在 OpenShift Dev Spaces 的
plugin-registrypod 中运行的 Open VSX registry 的嵌入式实例,以支持 air-gapped、offline 和 proxy-restricted 环境。嵌入式 Open VSX 注册表仅包含在 open-vsx.org 上发布的扩展的子集。可以自定义此子集。 - 独立 Open VSX registry 实例,部署到可从 OpenShift Dev Spaces 工作区 pod 访问的网络上。
4.1.1. 选择 Open VSX registry 实例 复制链接链接已复制到粘贴板!
如果从您机构的集群中解析,位于 https://open-vsx.org 的 Open VSX 注册表是默认设置。如果没有,则 OpenShift Dev Spaces plugin-registry pod 中嵌入的 Open VSX registry 是默认值。
如果默认的 Open VSX registry 实例不是您需要的,您可以选择另一个 Open VSX registry 实例,如下所示:
流程
编辑
CheCluster自定义资源中的openVSXURL值:spec: components: pluginRegistry: openVSXURL: "<url_of_an_open_vsx_registry_instance>"spec: components: pluginRegistry: openVSXURL: "<url_of_an_open_vsx_registry_instance>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示-
默认的
openVSXURL值是https://open-vsx.org。 -
要在
plugin-registrypod 中选择嵌入的 Open VSX registry 实例,请使用openVSXURL: ''。有关如何自定义所含扩展的详情,请查看下一部分。 -
如果从您组织的集群内部访问其 URL,您也可以将
openVSXURL指向独立 Open VSX registry 实例的 URL,且代理不会阻断它。
-
默认的
4.1.2. 在嵌入式 Open VSX registry 实例中添加或删除扩展 复制链接链接已复制到粘贴板!
您可以在 OpenShift Dev Spaces 部署的嵌入式 Open VSX registry 实例中添加或删除扩展,以支持离线和代理的环境。
这将创建 Open VSX 注册表的自定义构建,可在您的组织的工作区中使用。
要在 OpenShift Dev Spaces 更新后获取最新的安全修复,请根据 latest 标签或 SHA 重建容器。
流程
- 下载或分叉,并克隆 插件 registry 存储库。
对于需要添加或删除的每个扩展,编辑
openvsx-sync.json文件 :如果扩展在 open-vsx.org 上发布,您可以使用 < published_by&
gt; 格式添加扩展 ID。< unique_identifier >。您可以在 open-vsx.org 上找到有关扩展列表页的id详情。{ "id": "<published_by>.<unique_identifier>" }{ "id": "<published_by>.<unique_identifier>" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示open-vsx.org 上的最新扩展版本是默认值。或者,您可以在
新行中添加 "<extension_version>version": " 以指定版本。如果扩展仅适用于 Microsoft Visual Studio Marketplace,但不是 Open VSX,您可以要求扩展发布者根据 这些说明 在 open-vsx.org 上发布。https://github.com/marketplace/actions/publish-vs-code-extension
提示- 如果扩展发布者不可用,或无法将扩展发布到 open-vsx.org,如果没有与扩展等效的 Open VSX,请考虑 向 Open VSX 团队报告问题。
如果您有一个闭源扩展或者只为公司内部使用开发的扩展,您可以使用自定义插件 registry 容器访问的 URL 直接从
.vsix文件添加扩展:{ "id": "<published_by>.<unique_identifier>", "download": "<url_to_download_vsix_file>", "version": "<extension_version>" }{ "id": "<published_by>.<unique_identifier>", "download": "<url_to_download_vsix_file>", "version": "<extension_version>" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
警告在使用其资源之前,请阅读 使用 Microsoft Visual Studio Marketplace 的使用条款。
-
您可以通过从
openvsx-sync.json文件中删除扩展。
构建插件 registry 容器镜像,并将其发布到类似 quay.io 的容器 registry:
./build.sh -o <username> -r quay.io -t custom
$ ./build.sh -o <username> -r quay.io -t customCopy to Clipboard Copied! Toggle word wrap Toggle overflow podman push quay.io/<username/plugin_registry:custom>
$ podman push quay.io/<username/plugin_registry:custom>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑机构的集群中的
CheCluster自定义资源以指向镜像(例如,在 quay.io上),然后保存更改:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
检查
plugin-registryPod 是否已重启并正在运行。 - 重新启动工作区,并检查工作区 IDE 的 Extensions 视图中的可用扩展。
第 5 章 使用 Dev Spaces 服务器 API 复制链接链接已复制到粘贴板!
要管理 OpenShift Dev Spaces 服务器工作负载,请使用 Swagger Web 用户界面来浏览 OpenShift Dev Spaces 服务器 API。
流程
-
导航到 Swagger API web 用户界面
"https://devspaces-<openshift_deployment_name>.<domain_name>"/swagger。
其他资源
第 6 章 升级 Dev Spaces 复制链接链接已复制到粘贴板!
本章论述了如何从 CodeReady Workspaces 3.1 升级到 OpenShift Dev Spaces 3.4。
6.1. 升级 chectl 管理工具 复制链接链接已复制到粘贴板!
这部分论述了如何升级 dsc 管理工具。
6.2. 指定更新批准策略 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces Operator 支持两个升级策略:
自动- Operator 在更新可用时会安装新的更新。
Manual(手动)- 在开始安装前,需要手动批准新的更新。
您可以使用 OpenShift Web 控制台为 Red Hat OpenShift Dev Spaces Operator 指定更新批准策略。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
- 使用 Red Hat Ecosystem Catalog 安装的 OpenShift Dev Spaces 实例。
流程
- 在 OpenShift Web 控制台中,导航到 → 。
- 在安装的 Operator 列表中,点 Red Hat OpenShift Dev Spaces。
- 导航到 Subscription 选项卡。
-
将 更新批准策略配置为
Automatic或Manual。
其他资源
6.3. 使用 OpenShift Web 控制台升级 Dev Spaces 复制链接链接已复制到粘贴板!
您可以使用 OpenShift web 控制台中的 Red Hat OpenShift Dev Spaces Operator 从早期次版本手动批准升级。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
- 使用 Red Hat Ecosystem Catalog 安装的 OpenShift Dev Spaces 实例。
-
订阅中的批准策略是
Manual。请参阅 第 6.2 节 “指定更新批准策略”。
流程
- 手动批准待处理的 Red Hat OpenShift Dev Spaces Operator 升级。请参阅 手动批准待处理的 Operator 升级。
验证步骤
- 导航到 OpenShift Dev Spaces 实例。
- 3.4 版本号显示在页面的底部。
其他资源
6.4. 使用 CLI 管理工具升级 Dev Spaces 复制链接链接已复制到粘贴板!
本节论述了如何使用 CLI 管理工具从以前的次版本进行升级。
先决条件
- OpenShift 上的管理帐户。
-
在 openshift-devspaces OpenShift 项目中,使用 CLI 管理工具在
openshift-devspacesOpenShift 项目中安装以前次要版本的运行实例。 -
DSC用于 OpenShift Dev Spaces 版本 3.4。请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
- 保存并推送更改,返回到所有正在运行的 CodeReady Workspaces 3.1 工作区的 Git 存储库。
- 关闭 CodeReady Workspaces 3.1 实例中的所有工作区。
升级 OpenShift Dev Spaces:
dsc server:update -n openshift-devspaces
$ dsc server:update -n openshift-devspacesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于缓慢的系统或互联网连接,请添加
--k8spodwaittimeout=1800000标志选项,将 Pod 超时期限扩展到 1800000 ms 或更长时间。
验证步骤
- 导航到 OpenShift Dev Spaces 实例。
- 3.4 版本号显示在页面的底部。
6.5. 在受限环境中升级 Dev Spaces 复制链接链接已复制到粘贴板!
本节论述了如何使用受限环境中的 CLI 管理工具升级 Red Hat OpenShift Dev Spaces 并执行次要版本更新。
先决条件
-
OpenShift Dev Spaces 实例使用
openshift-devspaces项目中的dsc --installer operator方法在 OpenShift 上安装。请参阅 第 2.4 节 “在受限环境中安装 Dev Spaces”。
- OpenShift 集群至少有 64 GB 磁盘空间。
- OpenShift 集群可在受限网络中运行,OpenShift control plane 可以访问公共互联网。请参阅关于断开连接的安装镜像,以及 在受限网络中使用 Operator Lifecycle Manager。
-
一个活跃的
oc会话,具有 OpenShift 集群的管理权限。请参阅 OpenShift CLI 入门。 -
到
registry.redhat.io的红帽生态系统目录的活跃的oc registry会话。请参阅: Red Hat Container Registry 身份验证。
-
opm.请参阅安装opmCLI。 -
jq.请参阅 下载jq。 -
Podman.请参阅 安装 Podman。 -
一个活跃的
skopeo会话,具有对 < my_registry > registry 的管理访问权限。请参阅安装 Skopeo,对 registry 进行身份验证,并为断开连接的安装 mirror 镜像。 -
DSC用于 OpenShift Dev Spaces 版本 3.4。请参阅 第 2.1 节 “安装 dsc 管理工具”。
流程
下载并执行镜像脚本,以安装自定义 Operator 目录并镜像相关的镜像: prepare-restricted-environment.sh。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在 CodeReady Workspaces 3.1 实例中的所有运行工作区中,将更改保存并推送回 Git 存储库。
- 停止 CodeReady Workspaces 3.1 实例中的所有工作区。
运行以下命令:
dsc server:update --che-operator-image="$TAG" -n openshift-devspaces --k8spodwaittimeout=1800000
$ dsc server:update --che-operator-image="$TAG" -n openshift-devspaces --k8spodwaittimeout=1800000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 导航到 OpenShift Dev Spaces 实例。
- 3.4 版本号显示在页面的底部。
其他资源
6.6. 在 OpenShift 上修复 Dev Workspace Operator 复制链接链接已复制到粘贴板!
在某些情况下,如 OLM 重启或集群升级,OpenShift Dev Spaces 的 Dev Spaces Operator 可能会自动安装 Dev Workspace Operator,即使它已存在于集群中。在这种情况下,您可以在 OpenShift 上修复 Dev Workspace Operator,如下所示:
先决条件
-
一个活跃的
oc会话作为集群管理员到目标 OpenShift 集群。请参阅 CLI 入门。 - 在 OpenShift Web 控制台的 Installed Operators 页面中,您会看到 Dev Workspace Operator 的多个条目,或者一个处于 Re put 和 Pending 的条目。
流程
-
删除包含故障 pod 的
devworkspace-controller命名空间。 通过将转换策略设置为
None并删除整个webhook部分,更新DevWorkspace和DevWorkspaceTemplate自定义资源定义(CRD):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您可以通过在 →
中搜索DevWorkspace,在 OpenShift Web 控制台的 Administrator 视角中找到并编辑DevWorkspace和DevWorkspaceTemplateCRD。注意DevWorkspaceOperatorConfig和DevWorkspaceRoutingCRD 默认将转换策略设置为None。删除 Dev Workspace Operator 订阅:
oc delete sub devworkspace-operator \ -n openshift-operators
$ oc delete sub devworkspace-operator \ -n openshift-operators1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
openshift-operators或安装 Dev Workspace Operator 的 OpenShift 项目。
以 < devworkspace_operator.vX.Y.Z > 格式获取 Dev Workspace Operator CSV:
oc get csv | grep devworkspace
$ oc get csv | grep devworkspaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除每个 Dev Workspace Operator CSV:
oc delete csv <devworkspace_operator.vX.Y.Z> \ -n openshift-operators
$ oc delete csv <devworkspace_operator.vX.Y.Z> \ -n openshift-operators1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
openshift-operators或安装 Dev Workspace Operator 的 OpenShift 项目。
重新创建 Dev Workspace Operator 订阅:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
.自动或手动
重要对于
installPlanApproval: Manual,在 OpenShift Web 控制台的 Administrator 视角中,进入 → ,并为 Dev Workspace Operator 选择以下内容: → → 。- 在 OpenShift Web 控制台的 Administrator 视角中,进入 → ,验证 Dev Workspace Operator 的 Succeeded 状态。
第 7 章 卸载 Dev Spaces 复制链接链接已复制到粘贴板!
卸载 OpenShift Dev Spaces 会删除所有与 OpenShift Dev Spaces 相关的用户数据!
使用 oc 来卸载 OpenShift Dev Spaces 实例。
先决条件
-
DSC:请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
删除 OpenShift Dev Spaces 实例:
dsc server:delete
$ dsc server:deleteCopy to Clipboard Copied! Toggle word wrap Toggle overflow
--delete-namespace 选项删除 OpenShift Dev Spaces 命名空间。
--delete-all 选项删除 Dev Workspace Operator 和相关资源。