This documentation is for a release that is no longer maintained
See documentation for the latest supported version.管理指南
管理 Red Hat OpenShift Dev Spaces 3.1
摘要
第 1 章 准备安装 复制链接链接已复制到粘贴板!
要准备 OpenShift Dev Spaces 安装,了解 OpenShift Dev Spaces 生态系统和部署限制:
1.1. 支持的平台 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 3.1 在列出的平台上提供,它带有列出的安装方法:
平台 | 构架 | 部署方法 |
---|---|---|
OpenShift Container Platform 4.10 |
| |
OpenShift Container Platform 4.11 |
| |
OpenShift Dedicated 4.10 |
| |
OpenShift Dedicated 4.11 |
| |
Red Hat OpenShift Service on AWS(ROSA)4.10 |
| |
Red Hat OpenShift Service on AWS (ROSA) 4.11 |
|
1.2. OpenShift Dev Spaces 架构 复制链接链接已复制到粘贴板!
图 1.1. 使用 DevWorkspace 运算符的高级 OpenShift Dev Spaces 架构
OpenShift Dev Spaces 在三个组件组上运行:
- OpenShift Dev Spaces 服务器组件
- 管理用户项目和工作区。主要组件是用户仪表板,用户可从中控制其工作区。
- DevWorkspace operator
-
创建和控制运行用户工作区所需的 OpenShift 对象。包括
Pod
、
。服务和
永久卷 - 用户工作区
- 基于容器的开发环境,包括 IDE。
这些 OpenShift 功能的角色是中心:
- DevWorkspace 自定义资源
- 有效的 OpenShift 对象代表用户工作区,并由 OpenShift Dev Spaces 操作。它是三个组件组的通信频道。
- OpenShift 基于角色的访问控制(RBAC)
- 控制所有资源的访问。
其他资源
1.2.1. OpenShift Dev Spaces 服务器组件 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 服务器组件确保多租户和工作区管理。
图 1.2. OpenShift Dev Spaces 服务器组件与 DevWorkspace 运算符交互
其他资源
1.2.1.1. OpenShift Dev Spaces operator 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 操作器确保 OpenShift Dev Spaces 服务器组件的完整生命周期管理。它引进了:
CheCluster
自定义资源定义(CRD)-
定义
CheCluster
OpenShift 对象。 - OpenShift Dev Spaces 控制器
- 创建和控制运行 OpenShift Dev Spaces 实例所需的 OpenShift 对象,如容器集、服务和持久卷。
CheCluster
自定义资源(CR)在带有 OpenShift Dev Spaces 操作器的集群中,可以创建
CheCluster
自定义资源(CR)。OpenShift Dev Spaces operator 确保此 OpenShift Dev Spaces 实例上的 OpenShift Dev Spaces 服务器组件的完整生命周期管理:
1.2.1.2. DevWorkspace operator 复制链接链接已复制到粘贴板!
DevWorkspace operator 扩展 OpenShift 以提供 DevWorkspace 支持。它引进了:
- DevWorkspace 自定义资源定义
- 定义 Devfile v2 规范中的 DevWorkspace OpenShift 对象。
- DevWorkspace 控制器
- 创建和控制运行 DevWorkspace 所需的 OpenShift 对象,如 pod、服务和持久性卷。
- DevWorkspace 自定义资源
- 在使用 DevWorkspace 操作器的集群中,可以创建 DevWorkspace 自定义资源(CR)。DevWorkspace CR 是 Devfile 的 OpenShift 表示。它在 OpenShift 集群中定义用户工作区。
其他资源
1.2.1.3. gateway 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 网关具有以下角色:
- 路由请求.它使用 Traefik。
- 使用 OpenID Connect(OIDC)验证用户。它使用 OpenShift OAuth2 代理。
- 应用基于 OpenShift Role 的访问控制(RBAC)策略来控制对任何 OpenShift Dev Spaces 资源的访问。它使用 'kube-rbac-proxy'。
OpenShift Dev Spaces 操作器将它作为 che-gateway
部署进行管理。
它控制对以下的访问:
图 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。
- 将存储库 URL 发送到 第 1.2.1.6 节 “OpenShift Dev Spaces 服务器”,并期望在用户从远程 devfile 创建工作区时返回 devfile。
- 读取描述工作区的 devfile。
- 从 第 1.2.1.8 节 “插件 registry” 收集附加元数据。
- 将信息转换为 DevWorkspace 自定义资源。
- 使用 OpenShift API 在用户项目中创建 DevWorkspace 自定义资源。
- 监视 DevWorkspace 自定义资源状态。
- 将用户重定向到正在运行的工作区 IDE。
1.2.1.5. Devfile registry 复制链接链接已复制到粘贴板!
其他资源
OpenShift Dev Spaces devfile registry 是提供 devfile 示例列表来创建随时可用的工作区列表的服务。第 1.2.1.4 节 “用户仪表板” 在 Dashboard → Create Workspace 页面中显示示例列表。每个示例都包含一个 Devfile v2。OpenShift Dev Spaces 部署在 devfile-registry
部署中启动一个 devfile registry 实例。
图 1.5. Devfile registry 与其他组件交互
1.2.1.6. OpenShift Dev Spaces 服务器 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 服务器主要功能是:
- 创建用户命名空间.
- 使用所需的 secret 和配置映射置备用户命名空间。
- 与 Git 服务供应商集成,获取和验证 devfile 和身份验证。
OpenShift Dev Spaces 服务器是提供 HTTP REST API 的 Java Web 服务,需要访问:
- 第 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 插件注册表提供了可用编辑器和编辑器扩展的列表。Devfile v2 描述了每个编辑器或扩展。
第 1.2.1.4 节 “用户仪表板” 正在读取 registry 的内容。
图 1.8. 插件 registry 与其他组件交互
1.2.2. 用户工作区 复制链接链接已复制到粘贴板!
图 1.9. 用户工作区与其他组件交互
用户工作区是在容器中运行的 Web IDE。
用户工作区是一个 Web 应用。它由容器中运行的微服务组成,可在您的浏览器中运行现代 IDE 的所有服务:
- Editor
- 语言自动完成
- 语言服务器
- 调试工具
- 插件
- 应用程序运行时
工作区是包含工作区容器和已启用插件的 OpenShift Deployment,以及相关的 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. 计算 OpenShift Dev Spaces 资源要求 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces Operator、DevWorkspace Controller 和用户工作区由一组 pod 组成。pod 在 CPU 和 RAM 限值和请求方面对资源消耗做出了贡献。了解如何计算运行 Red Hat OpenShift Dev Spaces 所需的内存和 CPU 等资源。
1.3.1. OpenShift Dev Spaces Operator 要求 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces Operator 管理在六个不同 pod 中运行的六个操作对象。下表显示每个操作对象的默认资源要求。
Pod | 容器名称 | 默认内存限值 | 默认内存请求 |
---|---|---|---|
OpenShift Dev Spaces Server | OpenShift Dev Spaces | 1 Gi | 512 MiB |
OpenShift Dev Spaces Gateway |
| 4 Gi、256Mi、512Mi | 128 Mi, 64Mi, 64Mi, 64Mi |
OpenShift Dev Spaces Dashboard |
| 256 Mi | 32 Mi |
PostgreSQL |
| 1 Gi | 512 Mi |
devfile registry |
| 256 Mi | 32 Mi |
插件 registry |
| 256 Mi | 32 Mi |
OpenShift Dev Spaces Operator 支持所有操作对象,由具有 64Mi
内存请求和 256Mi
限制的单个容器组成。当 OpenShift Dev Spaces Operator 管理数量相对较大的 OpenShift Dev Spaces 工作区时,这些默认值就足够了。对于更大的部署,请考虑增加默认值。
1.3.2. DevWorkspace Operator 要求 复制链接链接已复制到粘贴板!
DevWorkspace Operator 由 3 个 pod 组成。下表显示每个 pod 的默认资源要求。
Pod | 容器名称 | 默认内存限值 | 默认内存请求 |
---|---|---|---|
DevWorkspace Controller Manager |
| 1 Gi | 100 Mi |
DevWorkspace Operator 目录 |
| N/A | 50 Mi |
DevWorkspace Webhook 服务器 |
| 300 Mi | 20 Mi |
当 DevWorkspace Controller 管理一个相对大的 OpenShift Dev Spaces 工作区时,这些值就足够了。对于较大的部署,请考虑增加默认值。
1.3.3. 工作区要求 复制链接链接已复制到粘贴板!
本节论述了如何计算工作区所需的资源。这是工作区中每个容器所需的资源总和。
流程
-
识别 devfile 的
components
部分明确指定的工作区组件。 - 确定隐式工作区组件。
OpenShift Dev Spaces 隐式加载默认的 ia-ide ,
che-machine-exec
,che-gateway
容器。
- 计算每个组件的要求。
1.3.4. 工作区示例 复制链接链接已复制到粘贴板!
本节介绍 OpenShift Dev Spaces 工作区示例。
以下 devfile 定义 OpenShift Dev Spaces 工作区:
这个表为每个工作区组件提供内存要求:
Pod | 容器名称 | 默认内存限值 | 默认内存请求 |
---|---|---|---|
Workspace |
| 512 Mi | 64 Mi |
Workspace |
| 128 Mi | 32 Mi |
Workspace |
| 4 Gi | 64 Mi |
Workspace |
| 256 Mi | 64 Mi |
总计 | 4.9 Gi | 224 Mi |
第 2 章 安装 OpenShift 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。
注意
流程
-
将存档从 https://developers.redhat.com/products/openshift-dev-spaces/download 下载到一个目录,如
$HOME
。 -
在存档上运行
tar xvzf
,以提取/dsc
目录。 -
将提取的
/dsc/bin
子目录添加到$PATH
。
验证
运行
dsc
以查看有关的信息。dsc
$ dsc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
2.2. 使用 dsc 管理工具在 OpenShift 上安装 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
您可以在 OpenShift 上安装 OpenShift Dev Spaces。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 -
dsc
.请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
创建 OpenShift Dev Spaces 实例:
dsc server:deploy --platform openshift
$ dsc server:deploy --platform openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证 OpenShift Dev Spaces 实例状态:
dsc server:status
$ dsc server:status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导航到 OpenShift Dev Spaces 集群实例:
dsc dashboard:open
$ dsc dashboard:open
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 使用 Web 控制台在 OpenShift 上安装 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
本节论述了如何使用 OpenShift Web 控制台安装 OpenShift Dev Spaces。请考虑 第 2.2 节 “使用 dsc
管理工具在 OpenShift 上安装 OpenShift Dev Spaces” 替代。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
流程
- 安装 Red Hat OpenShift Dev Spaces Operator。请参阅使用 Web 控制台从 OperatorHub 安装。
- 从 Red Hat OpenShift Dev Spaces Operator 创建 OpenShift Dev Spaces 实例。请参阅从已安装的 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. 在 OpenShift 上的受限环境中安装 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
在受限网络中的 OpenShift 集群上,公共资源不可用。
但是,部署 OpenShift Dev Spaces 和正在运行的工作区需要以下公共资源:
- Operator 目录
- 容器镜像
- 示例项目
要使这些资源可用,您可以使用 OpenShift 集群可访问的 registry 中的副本替换它们。
先决条件
- OpenShift 集群至少有 64 GB 磁盘空间。
- OpenShift 集群已准备好在受限网络上运行,而 OpenShift control plane 可以访问公共互联网。请参阅关于断开连接的安装镜像以及 在受限网络中使用 Operator Lifecycle Manager。
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 -
registry.redhat.io
红帽生态系统目录的一个活跃的oc registry
会话。请参阅: Red Hat Container Registry 身份验证。
-
opm
.请参阅安装opm
CLI。 -
jq
.请参阅 下载jq
。 -
Podman
.请参阅安装 Podman。 -
具有对 < my_registry> registry 的管理访问权限的活跃的
skopeo
会话。请参阅为断开连接的安装 安装安装 Skopeo、授权到 registry 以及镜像镜像( mirror)镜像。 -
OpenShift Dev Spaces 版本 3.1.
请参阅 第 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 允许来自 OpenShift Dev Spaces 命名空间的传入流量到用户项目中的所有 Pod。请参阅: 第 3.7.1 节 “配置网络策略”。
其他资源
第 3 章 配置 OpenShift 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
、数据库
、仪表板
和 imagePuller
。
Red Hat OpenShift Dev Spaces Operator 会将 CheCluster
自定义资源转换为可由 OpenShift Dev Spaces 安装的每个组件使用的配置映射。
OpenShift 平台将配置应用于每个组件,并创建必要的 Pod。当 OpenShift 检测到组件配置中更改时,它会相应地重启 Pod。
例 3.1. 配置 OpenShift Dev Spaces 服务器组件的主要属性
-
在
cheServer
组件部分中应用CheCluster
自定义资源 YAML 文件。 -
Operator 生成
che
ConfigMap
。 -
OpenShift 会检测
ConfigMap
中的更改,并触发 OpenShift Dev Spaces Pod 的重启。
其他资源
3.1.1. 在安装过程中使用 dsc 配置 CheCluster 自定义资源 复制链接链接已复制到粘贴板!
要使用适当的配置部署 OpenShift Dev Spaces,请在安装 OpenShift Dev Spaces 期间编辑 CheCluster
自定义资源 YAML 文件。否则,OpenShift Dev Spaces 部署使用 Operator 的默认配置参数。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 -
dsc
.请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
创建一个
che-operator-cr-patch.yaml
YAML 文件,其中包含要配置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-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.2. 使用 CLI 配置 CheCluster 自定义资源 复制链接链接已复制到粘贴板!
要配置 OpenShift Dev Spaces 的运行实例,请编辑 CheCluster
自定义资源 YAML 文件。
先决条件
- OpenShift 上的 OpenShift Dev Spaces 实例。
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 CLI 入门。
流程
编辑集群中的 CheCluster 自定义资源:
oc edit checluster/devspaces -n openshift-devspaces
$ oc edit checluster/devspaces -n openshift-devspaces
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-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. CheCluster Custom Resource 字段参考 复制链接链接已复制到粘贴板!
本节论述了自定义 CheCluster
自定义资源的所有字段。
-
例 3.2 “最小的
CheCluster
自定义资源示例。” - 表 3.1 “开发环境配置选项。”
- 表 3.2 “OpenShift Dev Spaces 组件配置。”
- 表 3.3 “DevWorkspace operator 组件配置。”
- 表 3.4 “与 OpenShift Dev Spaces 服务器组件相关的常规配置设置。”
- 表 3.5 “与 OpenShift Dev Spaces 安装使用的 Plug-in registry 组件相关的配置设置。”
- 表 3.6 “与 OpenShift Dev Spaces 安装使用的 Devfile registry 组件相关的配置设置。”
- 表 3.7 “与 OpenShift Dev Spaces 安装所使用的数据库组件相关的配置设置。”
- 表 3.8 “与 OpenShift Dev Spaces 安装使用的 Dashboard 组件相关的配置设置。”
- 表 3.9 “Kubernetes 镜像拉取组件配置。”
- 表 3.10 “OpenShift Dev Spaces 服务器指标组件配置。”
- 表 3.11 “网络、OpenShift Dev Spaces 身份验证和 TLS 配置。”
- 表 3.12 “存储 OpenShift Dev Spaces 镜像的备用注册表配置。”
-
表 3.13 “
CheCluster
自定义资源状态
定义 OpenShift Dev Spaces 安装的观察状态”
例 3.2. 最小的 CheCluster
自定义资源示例。
属性 | 描述 |
---|---|
defaultComponents | 应用于 DevWorkspace 的默认组件。这些默认组件旨在在 Devfile(不包含任何组件)时使用。 |
defaultEditor |
使用 创建工作区的默认编辑器。它可以是插件 ID 或 URI。插件 ID 必须具有 |
defaultNamespace | 用户的默认命名空间。 |
defaultPlugins | 应用于 DevWorkspaces 的默认插件。 |
nodeSelector | 节点选择器限制可运行工作空间 pod 的节点。 |
storage | 工作区持久性存储。 |
容限(tolerations) | 运行工作区 pod 的 pod 容限。 |
trustedCerts | 可信证书设置。 |
属性 | 描述 |
---|---|
cheServer | 与 Che 服务器相关的常规配置设置。 |
dashboard | 与 Che 安装使用的仪表板相关的配置设置。 |
database | 与 Che 安装使用的数据库相关的配置设置。 |
devWorkspace | DevWorkspace Operator 配置。 |
devfileRegistry | 与 Che 安装使用的 devfile registry 相关的配置设置。 |
imagePuller | Kubernetes 镜像提取配置。 |
metrics | Che 服务器指标配置。 |
pluginRegistry | 与 Che 安装使用的插件 registry 相关的配置设置。 |
属性 | 描述 |
---|---|
部署 | 部署覆盖选项。 |
runningLimit | 每个用户运行工作区的最大数量。 |
属性 | 描述 |
---|---|
clusterRoles |
分配给 Che ServiceAccount 的 ClusterRole。默认角色为: - < |
debug | 为 Che 服务器启用 debug 模式。 |
部署 | 部署覆盖选项。 |
extraProperties |
除了已从 |
logLevel |
Che 服务器的日志级别: |
proxy | Kubernetes 集群的代理服务器设置。OpenShift 集群不需要额外的配置。通过为 OpenShift 集群指定这些设置,您可以覆盖 OpenShift 代理配置。 |
属性 | 描述 |
---|---|
部署 | 部署覆盖选项。 |
disableInternalRegistry | 禁用内部插件 registry。 |
externalPluginRegistries | 外部服务 registry。 |
属性 | 描述 |
---|---|
部署 | 部署覆盖选项。 |
disableInternalRegistry | 禁用内部 devfile registry。 |
externalDevfileRegistries | 外部 devfile registry 提供 ready-to-use devfiles 示例。 |
属性 | 描述 |
---|---|
credentialsSecretName |
包含 Che 服务器用于连接数据库的 PostgreSQL |
部署 | 部署覆盖选项。 |
externalDb |
指示 Operator 部署专用数据库。默认情况下,专用 PostgreSQL 数据库作为 Che 安装的一部分部署。当 |
postgresDb | Che 服务器用来连接到数据库的 PostgreSQL 数据库名称。 |
postgresHostName |
Che 服务器连接的 PostgreSQL 数据库主机名。仅在使用外部数据库时才覆盖这个值。请参阅 |
postgresPort |
Che 服务器连接的 PostgreSQL 数据库端口。仅在使用外部数据库时才覆盖这个值。请参阅 |
pvc | PostgreSQL 数据库的 PVC 设置。 |
属性 | 描述 |
---|---|
部署 | 部署覆盖选项。 |
headerMessage | 仪表板标题消息。 |
属性 | 描述 |
---|---|
enable |
安装和配置社区支持的 Kubernetes Image Puller Operator。当您在没有提供任何 specs 的情况下将值设为 |
spec | 在 CheCluster 中配置镜像拉取(pull)的 Kubernetes Image Puller spec。 |
属性 | 描述 |
---|---|
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-<che-namespace>.<domain>。<che-namespace> 是创建 CheCluster CRD 的命名空间。在与标签结合使用时,它会创建一个由非默认 Ingress 控制器提供的路由。对于 Kubernetes 集群,它包含全局入口域。没有默认值: 您必须指定它们。 |
hostname | 安装的 Che 服务器的公共主机名。 |
labels | 定义要为 Ingress 设置的标签(OpenShift 平台的路由)。 |
tlsSecretName |
用于设置 Ingress TLS 终止的 secret 名称。如果字段是空字符串,则使用默认集群证书。secret 必须具有 |
属性 | 描述 |
---|---|
hostname | 用于从中拉取镜像的替代容器 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 上运行,则自动为路由解析的 basedomain。 |
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>-namespace
cge1egvsb2nhba-namespace-ul1411
<userid>-aka-<username>-namespace
cgezegvsb2nhba-aka-user1-namespace-6m2w2b
3.2.2. 提前置备项目 复制链接链接已复制到粘贴板!
您可以预先置备工作区项目,而不是依赖于自动置备。为每个用户重复上述步骤。
流程
为 & lt; username> 用户创建 <project_name > 项目,并具有以下标签和注解:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用您选择的项目名称。
3.3. 配置服务器组件 复制链接链接已复制到粘贴板!
机密是存储敏感数据的 OpenShift 对象,例如:
- 用户名
- 密码
- 身份验证令牌
采用加密形式。
用户可以挂载包含敏感数据的 OpenShift Secret,或者在 OpenShift Dev Spaces 受管容器中包含配置的 ConfigMap,如下所示:
- 一个文件
- 环境变量
挂载过程使用标准的 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&
gt; 可以是:secret
或者
-
configmap
-
例 3.4. 例如:
或者
注解必须表示给定对象以文件的形式挂载。
配置注解值:
-
Che.eclipse.org/mount-as: file
- 表示对象已挂载为一个文件。 -
Che.eclipse.org/mount-path: & lt;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&
gt; 可以是:secret
或者
-
configmap
-
例 3.7. 例如:
或者
注解必须表示给定对象以环境变量的形式挂载。
配置注解值:
-
Che.eclipse.org/mount-as: env
- 表示对象作为环境变量挂载 -
Che.eclipse.org/env-name : <FOO_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. OpenShift Dev Spaces 服务器组件的高级配置选项 复制链接链接已复制到粘贴板!
以下部分论述了 OpenShift Dev Spaces 服务器组件的高级部署和配置方法。
3.3.2.1. 了解 OpenShift Dev Spaces 服务器高级配置 复制链接链接已复制到粘贴板!
以下部分介绍了用于部署的 OpenShift Dev Spaces 服务器组件高级配置方法。
高级配置需要:
-
从标准
CheCluster
自定义资源字段添加 Operator 不自动生成的环境变量。 -
从标准
CheCluster
自定义资源字段中覆盖 Operator 自动生成的属性。
customCheProperties
字段( CheCluster
自定义资源 服务器设置
的一部分)包含要应用到 OpenShift Dev Spaces 服务器组件的附加环境变量映射。
例 3.10. 覆盖工作区的默认内存限值
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。spec: components: cheServer: extraProperties: CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB: "2048"
spec: components: cheServer: extraProperties: CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB: "2048"
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.3.2.2. OpenShift Dev Spaces 服务器系统属性参考 复制链接链接已复制到粘贴板!
本文档描述了 OpenShift Dev Spaces 服务器组件的所有可能配置属性。
3.3.2.2.1. OpenShift Dev Spaces 服务器 复制链接链接已复制到粘贴板!
3.3.2.2.1.1. CHE_API 复制链接链接已复制到粘贴板!
API 服务。浏览器使用此 URL 启动到 OpenShift Dev Spaces 服务器的 REST 通信。
- 默认
-
HTTP://${CHE_HOST}:${CHE_PORT}/api
3.3.2.2.1.2. CHE_API_INTERNAL 复制链接链接已复制到粘贴板!
API 服务内部网络 URL。后端服务应该使用这个 URL 启动到 OpenShift Dev Spaces 服务器的 REST 通信
- 默认
-
NULL
3.3.2.2.1.3. CHE_WEBSOCKET_ENDPOINT 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces WebSocket 主端点。为主要 WebSocket 交互和消息传递提供基本通信端点。
- 默认
-
WS://${CHE_HOST}:${CHE_PORT}/api/websocket
3.3.2.2.1.4. CHE_WEBSOCKET_INTERNAL_ENDPOINT 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces WebSocket 主要内部端点。为主要 WebSocket 交互和消息传递提供基本通信端点。
- 默认
-
NULL
3.3.2.2.1.5. CHE_WORKSPACE_PROJECTS_STORAGE 复制链接链接已复制到粘贴板!
您的项目是从 OpenShift Dev Spaces 服务器同步到运行各个工作区的机器。这是放置项目的机器上的目录。
- 默认
-
/projects
3.3.2.2.1.6. CHE_WORKSPACE_PROJECTS_STORAGE_DEFAULT_SIZE 复制链接链接已复制到粘贴板!
当 devfile 请求项目 PVC 中的 OpenShift 类型组件创建(适用于 唯一
和每个工作区
PVC 策略时,使用)。如果 是常见的
PVC 策略,它会使用 che.infra.kubernetes.pvc.quantity
属性的值重写。)
- 默认
-
1Gi
3.3.2.2.1.7. CHE_WORKSPACE_LOGS_ROOT__DIR 复制链接链接已复制到粘贴板!
定义用于放置所有工作区日志的机器上的目录。将此值提供给计算机,例如作为环境变量。这是为了确保代理开发人员可使用此目录备份代理日志。
- 默认
-
/workspace_logs
3.3.2.2.1.8. CHE_WORKSPACE_HTTP__PROXY 复制链接链接已复制到粘贴板!
将环境变量 HTTP_PROXY 配置为容器电源工作区中的指定的值。
- 默认
- empty
3.3.2.2.1.9. CHE_WORKSPACE_HTTPS__PROXY 复制链接链接已复制到粘贴板!
将环境变量 HTTPS_PROXY 配置为容器电源工作区中的指定的值。
- 默认
- empty
3.3.2.2.1.10. CHE_WORKSPACE_NO__PROXY 复制链接链接已复制到粘贴板!
将环境变量 NO_PROXY 配置为容器电源工作区中的指定的值。
- 默认
- empty
3.3.2.2.1.11. CHE_WORKSPACE_AUTO__START 复制链接链接已复制到粘贴板!
默认情况下,当用户使用 URL 访问工作区时,工作区会自动启动(如果当前停止)。把它设置为 false
可禁用此行为。
- 默认
-
true
3.3.2.2.1.12. CHE_WORKSPACE_POOL_TYPE 复制链接链接已复制到粘贴板!
工作区线程池配置。这个池用于需要异步执行(如启动和停止)的工作区相关的操作。可能的值有 固定值
并缓存
。
- 默认
-
fixed
3.3.2.2.1.13. CHE_WORKSPACE_POOL_EXACT__SIZE 复制链接链接已复制到粘贴板!
当池类型与 固定
类型不同时,此属性将被忽略。它配置池的确切大小。设置后,将忽略 multiplier
属性。如果未设置此属性(0
、<
;0、NULL
),则池大小等于内核数。另请参阅 che.workspace.pool.cores_multiplier
。
- 默认
-
30
3.3.2.2.1.14. CHE_WORKSPACE_POOL_CORES__MULTIPLIER 复制链接链接已复制到粘贴板!
当池类型被设置为 固定
,che.workspace.pool.exact_size
时,这个属性会被忽略。设置后,池大小为 N_CORES * 倍数
。
- 默认
-
2
3.3.2.2.1.15. CHE_WORKSPACE_PROBE__POOL__SIZE 复制链接链接已复制到粘贴板!
此属性指定用于工作空间服务器存活度探测的线程数量。
- 默认
-
10
3.3.2.2.1.16. CHE_WORKSPACE_HTTP__PROXY__JAVA__OPTIONS 复制链接链接已复制到粘贴板!
工作区 JVM 的 HTTP 代理设置。
- 默认
-
NULL
3.3.2.2.1.17. CHE_WORKSPACE_JAVA__OPTIONS 复制链接链接已复制到粘贴板!
Java 命令行选项添加至在工作区中运行的 JVM 中。
- 默认
-
-XX:MaxRAM=150m-XX:MaxRAMFraction=2 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 - Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom
3.3.2.2.1.18. CHE_WORKSPACE_MAVEN__OPTIONS 复制链接链接已复制到粘贴板!
Maven 命令行选项添加至运行工作区中的 JVM 的代理。
- 默认
-
-XX:MaxRAM=150m-XX:MaxRAMFraction=2 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 - Dsun.zip.disableMemoryMapping=true -Xms20m -Djava.security.egd=file:/dev/./urandom
3.3.2.2.1.19. CHE_WORKSPACE_DEFAULT__MEMORY__LIMIT__MB 复制链接链接已复制到粘贴板!
在其环境中没有 RAM 设置的机器的 RAM 限制默认值。小于等于 0 的值被解释为禁用限制。
- 默认
-
1024
3.3.2.2.1.20. CHE_WORKSPACE_DEFAULT__MEMORY__REQUEST__MB 复制链接链接已复制到粘贴板!
对在其环境中没有显式 RAM 设置的容器的 RAM 请求。创建工作区容器时会分配这个数量。所有基础架构实施都不支持此属性。OpenShift 目前支持它。超过内存限制的内存请求会被忽略,且只使用限制大小。小于等于 0 的值被解释为禁用限制。
- 默认
-
200
3.3.2.2.1.21. CHE_WORKSPACE_DEFAULT__CPU__LIMIT__CORES 复制链接链接已复制到粘贴板!
其环境中没有 CPU 设置的每个容器的 CPU 限制。在浮点内核数(如 0.125)指定,或使用 Kubernetes 格式(整数 millicore),例如 125m
。小于等于 0 的值被解释为禁用限制。
- 默认
-
-1
3.3.2.2.1.22. CHE_WORKSPACE_DEFAULT__CPU__REQUEST__CORES 复制链接链接已复制到粘贴板!
对环境中没有 CPU 设置的每个容器的 CPU 请求。超过 CPU 限制的 CPU 请求会被忽略,且只使用限制号。小于等于 0 的值被解释为禁用限制。
- 默认
-
-1
每个 sidecar 的 RAM 限制在 OpenShift Dev Spaces 插件配置中没有 RAM 设置。小于等于 0 的值被解释为禁用限制。
- 默认
-
128
对于 OpenShift Dev Spaces 插件配置中没有 RAM 设置的每个 sidecar 的 RAM 请求。
- 默认
-
64
每个在 OpenShift Dev Spaces 插件配置中没有 CPU 设置的 sidecar 的 CPU 限制默认值。在浮点内核数(如 0.125)指定,或使用 Kubernetes 格式(整数 millicore),例如 125m
。小于等于 0 的值被解释为禁用限制。
- 默认
-
-1
每个 sidecar 的 CPU 请求默认值,在 OpenShift Dev Spaces 插件配置中没有 CPU 设置。在浮点内核数(如 0.125)指定,或使用 Kubernetes 格式(整数 millicore),例如 125m
。
- 默认
-
-1
3.3.2.2.1.27. CHE_WORKSPACE_SIDECAR_IMAGE__PULL__POLICY 复制链接链接已复制到粘贴板!
为 sidecar 定义 image-pulling 策略。可能的值有: Always
,Never
,IfNotPresent
。对于任何其他值,Always
被假定为带有 :latest
标签的镜像,或为所有其他情况使用 IfNotPresent
。
- 默认
-
Always
非活动工作区的期间会暂停作业执行。
- 默认
-
60
活动表清理的期间。如果发生某些不可预见的错误,活动表中可以包含无效或过时的数据,因为服务器在一段时间里出现故障。默认为每小时运行清理作业。
- 默认
-
3600
服务器启动后的延迟了启动第一个活动清理作业。
- 默认
-
60
在第一个工作区空闲性检查作业启动前延迟,以避免在 OpenShift Dev Spaces 服务器没有接近不活跃超时时进行大量暂停。
- 默认
-
180
延迟临时工作区第一次执行的时间清理任务。
- 默认
-
5
在一次执行终止和下一次临时工作区清理作业开始之间延迟时间
- 默认
-
180
将后续成功 ping 到服务器后,它会被视为可用。OpenShift Dev Spaces Operator:所有服务器的属性很常见,如工作区代理、终端和 exec。
- 默认
-
1
间隔(以毫秒为单位)到工作空间服务器之间的连续 ping 间隔。
- 默认
-
3000
3.3.2.2.1.36. CHE_WORKSPACE_SERVER_LIVENESS__PROBES 复制链接链接已复制到粘贴板!
需要存活度探测的服务器名称列表
- 默认
-
wsagent/http,exec-agent/http,terminal,theia,jupyter,dirigible,cloud-shell,intellij
在调试工作空间启动时,限制从单个容器收集的日志大小。默认的 10MB=10485760
- 默认
-
10485760
3.3.2.2.1.38. CHE_WORKSPACE_STOP_ROLE_ENABLED 复制链接链接已复制到粘贴板!
如果为 true,如果启用了 OpenShift OAuth,则会将带有 edit 特权的 'stop-workspace' 角色授予 'che' ServiceAccount。在启用 OpenShift OAuth 时,工作区闲置主要需要此配置。
- 默认
-
true
3.3.2.2.1.39. CHE_DEVWORKSPACES_ENABLED 复制链接链接已复制到粘贴板!
指定 OpenShift Dev Spaces 是否启用了 DevWorkspaces 部署。如果 OpenShift Dev Spaces Operator 还安装了 DevWorkspace 的支持,则 OpenShift Dev Spaces Operator 会设置此属性。此属性用于向 OpenShift Dev Spaces 仪表板公告此事实。手动更改此属性值并不有意义。
- 默认
-
false
3.3.2.2.2. 身份验证参数 复制链接链接已复制到粘贴板!
3.3.2.2.2.1. CHE_AUTH_USER__SELF__CREATION 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 具有一个身份实施,因此它不会更改用户体验。如果为 true,在 API 一级启用用户创建
- 默认
-
false
3.3.2.2.2.2. CHE_AUTH_ACCESS__DENIED__ERROR__PAGE 复制链接链接已复制到粘贴板!
身份验证错误页面地址
- 默认
-
/error-oauth
3.3.2.2.2.3. CHE_AUTH_RESERVED__USER__NAMES 复制链接链接已复制到粘贴板!
保留的用户名
- 默认
- empty
3.3.2.2.2.4. CHE_OAUTH2_GITHUB_CLIENTID__FILEPATH 复制链接链接已复制到粘贴板!
配置 GitHub OAuth2 客户端。用于获取个人访问令牌。包含 GitHub 客户端 ID 的 文件的位置。
- 默认
-
NULL
3.3.2.2.2.5. CHE_OAUTH2_GITHUB_CLIENTSECRET__FILEPATH 复制链接链接已复制到粘贴板!
包含 GitHub 客户端 secret 文件的位置。
- 默认
-
NULL
3.3.2.2.2.6. CHE_OAUTH_GITHUB_AUTHURI 复制链接链接已复制到粘贴板!
GitHub OAuth 授权 URI.
- 默认
-
https://github.com/login/oauth/authorize
3.3.2.2.2.7. CHE_OAUTH_GITHUB_TOKENURI 复制链接链接已复制到粘贴板!
GitHub OAuth 令牌 URI.
- 默认
-
https://github.com/login/oauth/access_token
3.3.2.2.2.8. CHE_OAUTH_GITHUB_REDIRECTURIS 复制链接链接已复制到粘贴板!
GitHub OAuth 重定向 URI.使用逗号分隔多个值,例如: URI、URI、URI
- 默认
-
http://localhost:${CHE_PORT}/api/oauth/callback
3.3.2.2.2.9. CHE_OAUTH_OPENSHIFT_CLIENTID 复制链接链接已复制到粘贴板!
配置 OpenShift OAuth 客户端。用于获取 OpenShift OAuth 令牌。OpenShift OAuth 客户端 ID。
- 默认
-
NULL
3.3.2.2.2.10. CHE_OAUTH_OPENSHIFT_CLIENTSECRET 复制链接链接已复制到粘贴板!
配置 OpenShift OAuth 客户端。用于获取 OpenShift OAuth 令牌。OpenShift OAuth 客户端 ID。OpenShift OAuth 客户端机密。
- 默认
-
NULL
3.3.2.2.2.11. CHE_OAUTH_OPENSHIFT_OAUTH__ENDPOINT 复制链接链接已复制到粘贴板!
配置 OpenShift OAuth 客户端.用于获取 OpenShift OAuth 令牌。OpenShift OAuth 客户端 ID。OpenShift OAuth 客户端机密。OpenShift OAuth 端点.
- 默认
-
NULL
3.3.2.2.2.12. CHE_OAUTH_OPENSHIFT_VERIFY__TOKEN__URL 复制链接链接已复制到粘贴板!
配置OpenShiftOAuth 客户端.用于获取 OpenShift OAuth 令牌。OpenShift OAuth 客户端 ID。OpenShift OAuth 客户端机密。OpenShift OAuth 端点.OpenShift OAuth 验证令牌 URL。
- 默认
-
NULL
3.3.2.2.2.13. CHE_OAUTH1_BITBUCKET_CONSUMERKEYPATH 复制链接链接已复制到粘贴板!
配置 Bitbucket 服务器 OAuth1 客户端。用于获取个人访问令牌。使用 Bitbucket 服务器应用程序消费者密钥的文件位置(与用户名相同)。
- 默认
-
NULL
3.3.2.2.2.14. CHE_OAUTH1_BITBUCKET_PRIVATEKEYPATH 复制链接链接已复制到粘贴板!
配置 Bitbucket 服务器 OAuth1 客户端。用于获取个人访问令牌。使用 Bitbucket 服务器应用程序消费者密钥的文件位置(与用户名相同)。使用 Bitbucket 服务器应用程序私钥的文件位置
- 默认
-
NULL
3.3.2.2.2.15. CHE_OAUTH1_BITBUCKET_ENDPOINT 复制链接链接已复制到粘贴板!
ConfigurationofBitbucket 服务器 OAuth1 客户端.用于获取个人访问令牌。使用 Bitbucket 服务器应用程序消费者密钥的文件位置(与用户名相同)。使用 Bitbucket 服务器应用程序私钥 Bitbucket 服务器 URL 的文件的位置。要正确处理,同一 URL 必须是 che.integration.bitbucket.server_endpoints
的一部分。
- 默认
-
NULL
3.3.2.2.3. 内部 复制链接链接已复制到粘贴板!
3.3.2.2.3.1. SCHEDULE_CORE__POOL__SIZE 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 扩展可以根据需要调度执行。这将配置分配给按周期性计划启动的扩展的线程池大小。
- 默认
-
10
3.3.2.2.3.2. DB_SCHEMA_FLYWAY_BASELINE_ENABLED 复制链接链接已复制到粘贴板!
如果为 true,则 DB 初始化和迁移配置会忽略由 baseline.version 配置的脚本。
- 默认
-
true
3.3.2.2.3.3. DB_SCHEMA_FLYWAY_BASELINE_VERSION 复制链接链接已复制到粘贴板!
带有此版本的脚本将被忽略。请注意,其版本等于基准版本的脚本也会被忽略。
- 默认
-
5.0.0.8.1
3.3.2.2.3.4. DB_SCHEMA_FLYWAY_SCRIPTS_PREFIX 复制链接链接已复制到粘贴板!
迁移脚本的前缀。
- 默认
- empty
3.3.2.2.3.5. DB_SCHEMA_FLYWAY_SCRIPTS_SUFFIX 复制链接链接已复制到粘贴板!
迁移脚本的后缀。
- 默认
-
.sql
3.3.2.2.3.6. DB_SCHEMA_FLYWAY_SCRIPTS_VERSION__SEPARATOR 复制链接链接已复制到粘贴板!
脚本名称其他部分的版本分隔符。
- 默认
-
__
3.3.2.2.3.7. DB_SCHEMA_FLYWAY_SCRIPTS_LOCATIONS 复制链接链接已复制到粘贴板!
搜索迁移脚本的位置。
- 默认
-
classpath:che-schema
3.3.2.2.4. Kubernetes Infra 参数 复制链接链接已复制到粘贴板!
3.3.2.2.4.1. CHE_INFRA_KUBERNETES_MASTER__URL 复制链接链接已复制到粘贴板!
配置 Infra 将使用的 Kubernetes 客户端 master URL。
- 默认
- empty
3.3.2.2.4.2. CHE_INFRA_KUBERNETES_TRUST__CERTS 复制链接链接已复制到粘贴板!
将 Kubernetes 客户端配置为使用可信证书的布尔值。
- 默认
-
false
3.3.2.2.4.3. CHE_INFRA_KUBERNETES_CLUSTER__DOMAIN 复制链接链接已复制到粘贴板!
Kubernetes 集群域。如果没有设置,svc 名称将不包含有关集群域的信息。
- 默认
-
NULL
3.3.2.2.4.4. CHE_INFRA_KUBERNETES_SERVER__STRATEGY 复制链接链接已复制到粘贴板!
定义向 Kubernetes infra 中向全局公开服务器的方式。OpenShift Dev Spaces 中实施的策略列表: default-host
、多主机
、单一主机
。
- 默认
-
multi-host
定义在单主机模式中公开工作区插件和编辑器的方式。支持的暴露 :
使用 Kubernetes 入口公开服务器。仅在 Kubernetes 上工作。网关
:使用 reverse-proxy 网关公开服务器。
- 默认
-
原生
定义如何在单主机服务器策略中公开 devfile 端点作为最终用户的应用程序。它们可以遵循单一主机策略,并在子路径上公开,或者可以在子域上公开。多主机
:在子域上公开 单主机
: 在子路径上公开
- 默认
-
multi-host
定义将设置为 ConfigMap 配置单主机网关的标签。
- 默认
-
app=che,component=che-gateway-config
3.3.2.2.4.8. CHE_INFRA_KUBERNETES_INGRESS_DOMAIN 复制链接链接已复制到粘贴板!
在本例中为 che.infra.kubernetes.server_strategy
为 multi-host
时,在工作区中为服务器生成域
- 默认
- empty
指明 OpenShift Dev Spaces 服务器是否允许 OpenShift Dev Spaces 服务器为用户工作区创建项目,还是由集群管理员手动创建。OpenShift infra 也使用此属性。
- 默认
-
true
3.3.2.2.4.10. CHE_INFRA_KUBERNETES_NAMESPACE_DEFAULT 复制链接链接已复制到粘贴板!
定义在用户未覆盖时创建用户工作区的 Kubernetes 默认命名空间。可以使用 < username> 和 <
; userid>
占位符(例如: che-workspace-<username>
)。在这种情况下,会为每个用户创建新命名空间。由 OpenShift infra 以及指定项目使用。< ;username>
; 或 <userid
> 占位符是必需的。
- 默认
-
<username>-che
3.3.2.2.4.11. CHE_INFRA_KUBERNETES_NAMESPACE_LABEL 复制链接链接已复制到粘贴板!
定义 che-server 是否应该尝试标记工作空间命名空间。注意:强烈建议保留此属性的值设为 true。如果为 false,则新的工作区命名空间不会自动标记,因此 OpenShift Dev Spaces 运算符无法识别,使 DevWorkspace 的功能无法正常工作。如果为 false,则需要管理员使用 che.infra.kubernetes.namespace.labels 中指定的标签手动标记命名空间。如果要自己管理命名空间,请确定遵循 https://www.eclipse.org/che/docs/stable/administration-guide/provisioning-namespaces-in-advance/。命名空间中存在的任何额外标签都会保留,不会影响功能。另请注意,管理员可以自由地预先创建命名空间,即使此属性为 true,也手动标记命名空间。如果命名空间已符合标签要求,则不会执行对命名空间的更新。
- 默认
-
true
3.3.2.2.4.12. CHE_INFRA_KUBERNETES_NAMESPACE_ANNOTATE 复制链接链接已复制到粘贴板!
定义 che-server 是否应该尝试注解工作区命名空间。
- 默认
-
true
3.3.2.2.4.13. CHE_INFRA_KUBERNETES_NAMESPACE_LABELS 复制链接链接已复制到粘贴板!
要查找用于 OpenShift Dev Spaces Workspaces 的项目的标签列表。它们用于: - 查找与 che.infra.kubernetes.namespace.annotations
结合使用的用户准备项目。- 主动标记带有任何工作区的项目。注意:强烈建议不要更改此属性的值,因为 OpenShift Dev Spaces 运算符在协调 DevWorkspaces 时依赖于这些标签及其精确的值。如果更改了此配置,则 OpenShift Dev Spaces 操作器不会自动识别命名空间,除非使用默认标签和值进行手动标记。命名空间中的附加标签不会影响功能。
- 默认
-
app.kubernetes.io/part-of=che.eclipse.org,app.kubernetes.io/component=workspaces-namespace
3.3.2.2.4.14. CHE_INFRA_KUBERNETES_NAMESPACE_ANNOTATIONS 复制链接链接已复制到粘贴板!
若要查找项目为 OpenShift Dev Spaces 用户工作区准备的注解列表。只有与 che.infra.kubernetes.namespace.namespace.labels 匹配的项目才会与这些注解匹配。与
和 che.infra.kubernetes.namespace.labels
che.infra.kubernetes.namespace.annotations
匹配的项目将优先用于用户工作区。可以使用 < username>
; 占位符将项目指定为 concrete 用户。它们用于: - 查找与 che.infra.kubernetes.namespace.labels
结合的用户准备项目 - 主动为项目附带任何工作区。
- 默认
-
che.eclipse.org/username=<username>
定义应绑定到所有工作区 Pod 的 Kubernetes 服务帐户名称。Kubernetes 基础架构不会创建服务帐户的 OpenShift Dev Spaces Operator,应存在它。OpenShift 基础架构将检查项目是否有预定义(如果 che.infra.openshift.project
尚未为空):- 如果预定义,则服务帐户必须存在 - 如果它是 'NULL' 或空字符串,则基础架构将根据工作区创建新的 OpenShift 项目,并使用所需的角色准备工作区服务帐户
- 默认
-
NULL
指定可选、用于 workspace 服务帐户的额外集群角色。集群角色名称必须已存在 OpenShift Dev Spaces Operator,并且 OpenShift Dev Spaces 服务帐户需要能够创建 Role Binding,以将这些集群角色与工作区服务帐户关联。名称用逗号分开。此属性弃用 che.infra.kubernetes.cluster_role_name
。
- 默认
-
NULL
3.3.2.2.4.17. CHE_INFRA_KUBERNETES_USER__CLUSTER__ROLES 复制链接链接已复制到粘贴板!
要分配给其命名空间中的用户的集群角色
- 默认
-
NULL
定义限制 Kubernetes 工作空间开始时间的等待时间。
- 默认
-
8
定义 Kubernetes Ingress 就绪的时间(分钟)的超时时间(以分钟为单位)
- 默认
-
5
如果工作区启动了一个不可恢复的事件,则立即停止工作区,而不等待超时。此 SHOULD 中没有包括 mere "Failed" 原因,因为可能会捕获无法恢复的事件。失败的容器启动由 OpenShift Dev Spaces 服务器明确处理。
- 默认
-
FailedMount,FailedScheduling,MountVolume.SetUpfailed,Failed to pull image,FailedCreate,ReplicaSetCreateError
3.3.2.2.4.21. CHE_INFRA_KUBERNETES_PVC_ENABLED 复制链接链接已复制到粘贴板!
定义 OpenShift Dev Spaces 工作区需要使用持久性卷声明,例如:备份项目、日志或禁用它。
- 默认
-
true
3.3.2.2.4.22. CHE_INFRA_KUBERNETES_PVC_STRATEGY 复制链接链接已复制到粘贴板!
定义在为工作区选择 PVC 时使用的策略。支持的策略: 常见
: 同一项目中的所有工作区都会重复使用相同的 PVC。PVC 名称可使用 che.infra.kubernetes.pvc.name
进行配置。使用现有的 PVC,或者如果不存在,则会创建一个新 PVC。唯一
:将使用每个工作区的卷的 9 月 PVC。PVC 名称被评估为 '{che.infra.kubernetes.pvc.name} + '-' + {generated_8_chars}'
。使用现有的 PVC,或者如果不存在,则会创建一个新 PVC。对于每个 工作区
,将使用每个工作区的 9 月 PVC。PVC 名称被评估为 '{che.infra.kubernetes.pvc.name} + '-' + {WORKSPACE_ID}'
。使用现有的 PVC;如果不存在,就会创建一个新 PVC。
- 默认
-
common
定义是否在启动工作区前为通用策略创建工作区的 子路径
目录。在一些 OpenShift 版本中作为工作区子路径卷挂载创建为 root 权限,因此不能被以用户运行的工作区修改(代表在 OpenShift Dev Spaces 中将一个错误导入项目导入到工作区)。的默认值为 true
,但如果 OpenShift 的版本以用户权限创建子目录,则应当设为 false
。请参阅 volumeMount 中的 subPath,对于非 root 用户 #41638,只有在 使用通用
PVC 策略时,此属性才会生效的 OpenShift Dev Spaces Operator。
- 默认
-
true
3.3.2.2.4.24. CHE_INFRA_KUBERNETES_PVC_NAME 复制链接链接已复制到粘贴板!
定义 OpenShift Dev Spaces 工作区的 PVC 名称设置。每个 PVC 策略都不同,提供这个值。请参阅 che.infra.kubernetes.pvc.strategy
属性的文档
- 默认
-
claim-che-workspace
为工作区定义持久性卷声明的存储类。空字符串表示"使用默认"。
- 默认
- empty
3.3.2.2.4.26. CHE_INFRA_KUBERNETES_PVC_QUANTITY 复制链接链接已复制到粘贴板!
定义 OpenShift Dev Spaces 工作区的持久性卷声明的大小。请参阅: 了解持久性存储
- 默认
-
10Gi
3.3.2.2.4.27. CHE_INFRA_KUBERNETES_PVC_JOBS_IMAGE 复制链接链接已复制到粘贴板!
在 OpenShift 上执行持久性卷声明维护作业时启动的 Pod
- 默认
-
registry.access.redhat.com/ubi8-minimal:8.3-230
用于 OpenShift 集群中维护作业的容器的镜像拉取策略
- 默认
-
IfNotPresent
3.3.2.2.4.29. CHE_INFRA_KUBERNETES_PVC_JOBS_MEMORYLIMIT 复制链接链接已复制到粘贴板!
为持久性卷声明维护作业定义 Pod 内存限值
- 默认
-
250Mi
3.3.2.2.4.30. CHE_INFRA_KUBERNETES_PVC_ACCESS__MODE 复制链接链接已复制到粘贴板!
定义持久性卷声明访问模式。用于常见 PVC 策略更改的 OpenShift Dev Spaces Operator 会影响同时运行工作区的数量。如果运行 OpenShift Dev Spaces 的 OpenShift 实例使用带有 RWX 访问模式的持久性卷,则只由 OpenShift Dev Spaces 限制配置(RAM、CPU 等)绑定。请参阅: 了解持久性存储
- 默认
-
ReadWriteOnce
3.3.2.2.4.31. CHE_INFRA_KUBERNETES_PVC_WAIT__BOUND 复制链接链接已复制到粘贴板!
定义 OpenShift Dev Spaces 服务器是否应该等待工作区持久性卷声明在创建后被绑定。默认值为 true
。参数供所有持久性卷声明策略使用。当 volumeBindingMode
配置为 WaitForFirstConsumer
时,它应该设置为 false
,否则工作区在等待 PVC 的阶段将挂起。
- 默认
-
true
定义用于公开服务器的 ingress 的注解。值取决于入口控制器的类型。OpenShift 基础架构会忽略此属性,因为它使用 Routes 而不是 Ingresses。对于单一主机部署策略的 OpenShift Dev Spaces Operator 正常工作,必须使用控制器支持 URL 重新编写 URL(因此该 URL 可以指向不同的服务器,而服务器不需要支持更改应用程序 root)。che.infra.kubernetes.ingress.path.rewrite_transform
属性定义应如何转换 ingress 的路径来支持 URL 重新编写,并且此属性定义了在 ingress 本身上指示所选入口控制器实际执行的注解集,从而有可能在转换路径上构建转换(如果由所选入口控制器的要求)。例如,推荐使用 Nginx ingress controller 0.22.0 及更新的版本: {"Ingress.kubernetes.io/rewrite-target": "/$1","ingress.kubernetes.io/ssl-redirect": "false",\ "ingress.kubernetes.io/proxy-connect-timeout": "3600","ingress.kubernetes.io/proxy-read-timeout": "3600", "nginx.org/websocket-services ":"<service-name>"}
和 che.infra.kubernetes.ingress.path.rewrite_transform
"应设置为 "%s(.*)
"。对于早于 0.22.0 的 nginx ingress 控制器,rewrite-target 应该设置为 merely /
,路径应设置为 %s
(请参阅 che.infra.kubernetes.ingress.path.rewrite_transform
属性)。如需了解入口控制器如何使用入口路径中的正则表达式的说明,以及如何实现 URL 重新编写,请参阅 Nginx ingress 控制器文档。
- 默认
-
NULL
定义如何声明应公开服务器的入站路径的方法。%s
代表服务器的基本公共 URL,可保证以正斜杠结尾。此属性必须为 String.format()
方法的有效输入,并且仅包含对 %s
的具体参考。请参阅 che.infra.kubernetes.ingress.annotations_json
属性的描述,以查看在指定入口注解和路径时这两个属性间如何。如果没有定义,此属性默认为 %s
(不带引号),这意味着路径不会以任何与入口控制器一起使用的方法转换。
- 默认
-
NULL
3.3.2.2.4.34. CHE_INFRA_KUBERNETES_INGRESS_LABELS 复制链接链接已复制到粘贴板!
要添加到 OpenShift Dev Spaces 服务器创建的每个 Ingress 的额外标签,以便明确识别。
- 默认
-
NULL
定义由 Kubernetes Infra 创建的 Pod 的安全上下文,OpenShift infra 会忽略它
- 默认
-
NULL
定义由 Kubernetes Infra 创建的 Pod 的安全上下文。特殊的补充组,适用于 Pod 中的所有容器。OpenShift infra 会忽略它。
- 默认
-
NULL
定义将由 OpenShift 基础架构创建的 Pod 宽限期。默认值: 0
。它允许快速停止 Pod,并显著减少停止工作区所需的时间。如果 OpenShift Dev Spaces Operator 已在 OpenShift 配方中明确设置了 terminationGracePeriodSeconds
,则它不会被覆盖。
- 默认
-
0
3.3.2.2.4.38. CHE_INFRA_KUBERNETES_TLS__ENABLED 复制链接链接已复制到粘贴板!
创建启用了传输层安全(TLS)的 Ingresses。在 OpenShift 基础架构中,路由将启用 TLS。
- 默认
-
false
3.3.2.2.4.39. CHE_INFRA_KUBERNETES_TLS__SECRET 复制链接链接已复制到粘贴板!
创建使用 TLS 的工作空间入口时使用的 secret 名称。OpenShift 基础架构会忽略此属性。
- 默认
- empty
3.3.2.2.4.40. CHE_INFRA_KUBERNETES_TLS__KEY 复制链接链接已复制到粘贴板!
用于工作区入口的 TLS Secret 的数据。
应使用 Base64 算法进行编码。OpenShift 基础架构会忽略这些属性。
证书和密钥
- 默认
-
NULL
3.3.2.2.4.41. CHE_INFRA_KUBERNETES_TLS__CERT 复制链接链接已复制到粘贴板!
应该用于工作区 Ingress 的 TLS Secret 的证书数据。证书应该采用 Base64 算法进行编码。OpenShift 基础架构会忽略此属性。
- 默认
-
NULL
定义将执行运行时一致性检查的期间。如果运行时状态不一致,则会自动停止运行时。值必须大于 0 或 -1
,其中 -1
表示根本不执行检查。默认情况下禁用它,因为当 OpenShift Dev Spaces 服务器没有用户调用操作时,OpenShift Dev Spaces Server 无法与 Kubernetes API 交互。它适用于以下配置: - OpenShift Dev Spaces 服务器所在的同一命名空间中创建工作区对象; - cluster-admin
服务帐户令牌被挂载到 OpenShift Dev Spaces Server Pod 中。它不适用于以下配置: - OpenShift Dev Spaces Server 使用来自 OAuth 供应商的令牌与 Kubernetes API 通信。
- 默认
-
-1
OpenShift Dev Spaces 服务器命名空间中的 ConfigMap 名称,带有额外的 CA TLS 证书,以传播到所有用户的工作区。如果在 OpenShift 4 基础架构上设置属性,并且 che.infra.openshift.trusted_ca.dest_configmap_labels
包含 config.openshift.io/inject-trusted-cabundle=true
标签,则集群 CA 捆绑包将会被推广。
- 默认
-
NULL
带有额外 CA TLS 证书的工作区命名空间中的 ConfigMap 名称。包含 che.infra.kubernetes.trusted_ca.src_configmap
的副本,但在工作区命名空间中。此 ConfigMap 的内容挂载到所有工作区容器中,包括插件代理。不要更改 ConfigMap 名称,除非与已存在的 ConfigMap 冲突。OpenShift Dev Spaces Operator 可以调整生成的 ConfigMap 名称最终使其在项目中是唯一的。原始名称将存储在 che.original_name
标签中。
- 默认
-
ca-certs
配置应挂载 CA 捆绑包的工作区容器的路径。由 che.infra.kubernetes.trusted_ca.dest_configmap
指定的 ConfigMap 内容已被挂载。
- 默认
-
/public-certs
要添加到用户工作区中的 CA 证书 ConfigMap 中的以逗号分隔的标签列表。请参阅 che.infra.kubernetes.trusted_ca.dest_configmap
属性。
- 默认
- empty
3.3.2.2.5. OpenShift Infra 参数 复制链接链接已复制到粘贴板!
要添加到用户工作区中的 CA 证书 ConfigMap 中的以逗号分隔的标签列表。请参阅 che.infra.kubernetes.trusted_ca.dest_configmap
属性。此默认值用于在 OpenShift 4 中自动进行集群 CA 捆绑包注入。
- 默认
-
config.openshift.io/inject-trusted-cabundle=true
3.3.2.2.5.2. CHE_INFRA_OPENSHIFT_ROUTE_LABELS 复制链接链接已复制到粘贴板!
要添加到 OpenShift Dev Spaces 服务器创建的每个路由中的其他标签,以便明确识别。
- 默认
-
NULL
应该用作工作空间路由的后缀的主机名。例如: 使用 domain_suffix= <devspaces-_<openshift_deployment_name>__._<domain_name>__>
;,路由类似于: routed3qrtk. <devspaces-_<openshift_deployment_name>_._<domain_name>_>
。它必须是有效的 DNS 名称。
- 默认
-
NULL
如果 OpenShift OAuth 已启用,请使用 OpenShift Dev Spaces 服务器的服务帐户初始化 OpenShift 项目。
- 默认
-
true
3.3.2.2.6. 实验性属性 复制链接链接已复制到粘贴板!
3.3.2.2.6.1. CHE_WORKSPACE_PLUGIN__BROKER_METADATA_IMAGE 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 插件代理应用程序的 Docker 镜像,用于解析工作区工具配置并将插件依赖项复制到工作区。OpenShift Dev Spaces Operator 默认覆盖这些镜像。如果使用 Operator 安装 OpenShift Dev Spaces,则更改此处的镜像不会生效。
- 默认
-
quay.io/eclipse/che-plugin-metadata-broker:v3.4.0
OpenShift Dev Spaces 插件工件代理的 Docker 镜像。此代理作为 init 容器在工作区 Pod 上运行。其作业是在插件标识符列表中(registry 中的插件引用或插件 meta.yaml 的链接),并确保正确的 .vsix 和 .toia 扩展下载到 /plugins 目录中,用于工作区请求的每个插件。
- 默认
-
quay.io/eclipse/che-plugin-artifacts-broker:v3.4.0
在将插件置备为工作区时,配置插件代理的默认行为。如果设置为 true,则插件代理会在可能时尝试合并插件:它们在同一个 sidecar 镜像中运行,且没有冲突的设置。这个值是在 devfile 没有指定 mergePlugins
属性时使用的默认设置。
- 默认
-
false
3.3.2.2.6.4. CHE_WORKSPACE_PLUGIN__BROKER_PULL__POLICY 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 插件代理应用程序的 Docker 镜像,用于解析工作区工具配置并将插件依赖项复制到工作区
- 默认
-
Always
定义在分钟内限制等待插件代理的 max 周期的超时。
- 默认
-
3
3.3.2.2.6.6. CHE_WORKSPACE_PLUGIN__REGISTRY__URL 复制链接链接已复制到粘贴板!
工作区插件 registry 端点。应该是有效的 HTTP URL。示例: http://che-plugin-registry-eclipse-che.192.168.65.2.nip.io 在 OpenShift Dev Spaces 插件 registry 中不需要值 'NULL'
- 默认
-
https://che-plugin-registry.prod-preview.openshift.io/v3
工作区插件 registry 内部端点。应该是有效的 HTTP URL。示例: http://devfile-registry.che.svc.cluster.local:8080 在 OpenShift Dev Spaces 插件 registry 中不需要值 'NULL'
- 默认
-
NULL
3.3.2.2.6.8. CHE_WORKSPACE_DEVFILE__REGISTRY__URL 复制链接链接已复制到粘贴板!
Devfile Registry 端点。应该是有效的 HTTP URL。示例: http://che-devfile-registry-eclipse-che.192.168.65.2.nip.io 在 OpenShift Dev Spaces 插件 registry 中不需要值 'NULL'
- 默认
-
https://che-devfile-registry.prod-preview.openshift.io/
Devfile Registry "internal" 端点。应该是有效的 HTTP URL。示例: http://plugin-registry.che.svc.cluster.local:8080 在 OpenShift Dev Spaces 插件 registry 中不需要值 'NULL'
- 默认
-
NULL
3.3.2.2.6.10. CHE_WORKSPACE_STORAGE_AVAILABLE__TYPES 复制链接链接已复制到粘贴板!
定义客户端在工作区创建或更新期间向用户提供存储类型的可用值的配置属性。available 值: - persistent
: persistent Storage is slow I/O but persistent. - ephemeral
: Ephemeral Storage 可以更快地 I/O,但存储可能有限,不是永久性的。-sync : Experimental 功能:同步存储是临时和持久性存储的组合。允许加快 I/O 并保留您的更改,在启动工作区时停止和恢复。仅在: -
che.infra.kubernetes.pvc.strategy='common'
- che.limits.user.workspaces.run.count=1
- che.infra.kubernetes.namespace.default
包含 < username>
中的 <username>。
- 默认
-
persistent,ephemeral,async
3.3.2.2.6.11. CHE_WORKSPACE_STORAGE_PREFERRED__TYPE 复制链接链接已复制到粘贴板!
该配置属性为客户端在工作区创建或更新期间向用户提供存储类型定义默认值。async
值是一个实验性功能,不推荐作为默认类型。
- 默认
-
persistent
3.3.2.2.6.12. CHE_SERVER_SECURE__EXPOSER 复制链接链接已复制到粘贴板!
配置通过身份验证保护服务器的安全方式。合适的值: - 默认
:jwtproxy
以 pass-through 模式配置。服务器应验证请求自身。- jwtproxy
:jwtproxy
将对请求进行身份验证。服务器将仅收到经过身份验证的用户。
- 默认
-
jwtproxy
Jwtproxy
issuer 字符串、令牌生命周期和可选 auth 页面路径将未签名请求路由到。
- 默认
-
wsmaster
JWTProxy 签发者令牌生命周期.
- 默认
-
8800h
可选的身份验证页面路径,用于将未签名请求路由到。
- 默认
-
/_app/loader.html
3.3.2.2.6.16. CHE_SERVER_SECURE__EXPOSER_JWTPROXY_IMAGE 复制链接链接已复制到粘贴板!
JWTProxy 镜像。
- 默认
-
quay.io/eclipse/che-jwtproxy:0.10.0
JWTProxy 内存请求。
- 默认
-
15mb
JWTProxy 内存限值。
- 默认
-
128mb
JWTProxy CPU 请求.
- 默认
-
0.03
JWTProxy CPU 限制。
- 默认
-
0.5
3.3.2.2.7. 配置主 WebSocket 端点 复制链接链接已复制到粘贴板!
3.3.2.2.7.1. CHE_CORE_JSONRPC_PROCESSOR__MAX__POOL__SIZE 复制链接链接已复制到粘贴板!
如果池大小超过消息执行将被拒绝,则 JSON RPC 处理池的最大大小
- 默认
-
50
初始 JSON 处理池。用于处理主 JSON RPC 消息的最小线程数量。
- 默认
-
5
3.3.2.2.7.3. CHE_CORE_JSONRPC_PROCESSOR__QUEUE__CAPACITY 复制链接链接已复制到粘贴板!
用于处理 JSON RPC 消息的队列配置。
- 默认
-
100000
3.3.2.2.7.4. CHE_METRICS_PORT 复制链接链接已复制到粘贴板!
使用 Prometheus 指标公开的 HTTP 服务器端点。
- 默认
-
8087
3.3.2.2.8. CORS 设置 复制链接链接已复制到粘贴板!
3.3.2.2.8.1. CHE_CORS_ALLOWED__ORIGINS 复制链接链接已复制到粘贴板!
指明允许哪些请求来源。WS Master 上的 CORS 过滤器默认为关闭。使用环境变量 "CHE_CORS_ENABLED=true" 将其打开。
- 默认
-
*
3.3.2.2.8.2. CHE_CORS_ALLOW__CREDENTIALS 复制链接链接已复制到粘贴板!
指明它是否允许使用凭证处理请求(在 cookie 中,标头,TLS 客户端证书)。
- 默认
-
false
3.3.2.2.9. factory 默认值 复制链接链接已复制到粘贴板!
3.3.2.2.9.1. CHE_FACTORY_DEFAULT__PLUGINS 复制链接链接已复制到粘贴板!
从远程 Git 存储库创建的编辑器和插件必须用逗号分开,例如: plugin FooPublisher/pluginBarisher/pluginBarisher/pluginBarisher/pluginBarisher/pluginBarisher/pluginBarisher/pluginBarisher/pluginBarName/pluginBarVersion
- 默认
-
redhat/vscode-commons/latest
3.3.2.2.9.2. CHE_FACTORY_DEFAULT__DEVFILE__FILENAMES 复制链接链接已复制到粘贴板!
Devfile 文件名,用于查找基于库的工厂(如 GitHub)。工厂将尝试按照属性中枚举的顺序查找这些文件。
- 默认
-
devfile.yaml,.devfile.yaml
3.3.2.2.10. devfile 默认值 复制链接链接已复制到粘贴板!
3.3.2.2.10.1. CHE_FACTORY_DEFAULT__EDITOR 复制链接链接已复制到粘贴板!
将用于从远程 Git 存储库创建的、不包含任何特定于 OpenShift Dev Spaces 的工作区描述符的编辑器。
- 默认
-
eclipse/che-theia/latest
从 SCM 存储库获取文件的 URL 文件大小限制。
- 默认
-
102400
程序库中可能存在的额外文件来补充 devfile v2,并应该作为到 SCM 解析器服务的链接来检索这些文件。
- 默认
-
.che/che-editor.yaml,.che/che-theia-plugins.yaml,.vscode/extensions.json
3.3.2.2.10.4. CHE_WORKSPACE_DEVFILE_DEFAULT__EDITOR 复制链接链接已复制到粘贴板!
默认编辑器如果没有指定 Editor Format 是 editorPublisher/editorName/editorVersion
值,则应该被置备为 Devfile。值的 NULL
或 没有表示不应置备默认编辑器。
- 默认
-
eclipse/che-theia/latest
应该为默认编辑器置备的默认插件。此列表中未明确提到的所有插件都将置备,但只有使用默认编辑器或用户定义的编辑器与默认编辑器相同(即使是不同的版本)。格式是用逗号分开的 pluginPublisher/pluginName/pluginVersion
值和 URL。例如: eclipse/che-theia-exec-plugin/0.0.1,eclipse/che-ia-terminal-plugin/0.0.1,https://cdn.pluginregistry.com/vi-mode/meta.yaml
如果插件是一个 URL,则插件的 meta.yaml
从该 URL 检索。
- 默认
-
NULL
3.3.2.2.10.6. CHE_WORKSPACE_PROVISION_SECRET_LABELS 复制链接链接已复制到粘贴板!
定义用于从用户命名空间中选择 secret 的标签列表,该列表将作为文件或环境变量挂载到工作区容器中。只有与 ALL given 标签匹配的 secret 才会被选择。
- 默认
-
app.kubernetes.io/part-of=che.eclipse.org,app.kubernetes.io/component=workspace-secret
3.3.2.2.10.7. CHE_WORKSPACE_DEVFILE_ASYNC_STORAGE_PLUGIN 复制链接链接已复制到粘贴板!
在工作区配置中会启用插件并受环境支持的异步存储功能
- 默认
-
eclipse/che-async-pv-plugin/latest
3.3.2.2.10.8. CHE_INFRA_KUBERNETES_ASYNC_STORAGE_IMAGE 复制链接链接已复制到粘贴板!
OpenShift Dev Spaces 异步存储的 Docker 镜像
- 默认
-
quay.io/eclipse/che-workspace-data-sync-storage:0.0.1
3.3.2.2.10.9. CHE_WORKSPACE_POD_NODE__SELECTOR 复制链接链接已复制到粘贴板!
(可选)为工作区 Pod 配置节点选择器。格式是用逗号分开的 key=value 对,例如: disktype=ssd,cpu=xlarge,foo=bar
- 默认
-
NULL
3.3.2.2.10.10. CHE_WORKSPACE_POD_TOLERATIONS__JSON 复制链接链接已复制到粘贴板!
(可选)为工作空间 Pod 配置容限。格式是代表污点容限的 JSON Array 的字符串,或 NULL
来禁用它。数组中包含的对象必须遵循 容限 v1 核心规格。示例: [{"effect":"NoExecute","key":"aNodeTaint","operator":"Equal","value":"aValue"}]
- 默认
-
NULL
停止最后一次使用的工作区后,同步存储 Pod 关闭的超时。小于等于 0 的值被解释为禁用关闭功能。
- 默认
-
120
定义同步存储 Pod 停止功能的时间(默认为 30 分钟)
- 默认
-
30
用于工厂集成的 Bitbucket 端点。如果没有预期集成,使用以逗号分隔的 Bitbucket 服务器 URL 列表或 NULL。
- 默认
-
NULL
3.3.2.2.10.14. CHE_INTEGRATION_GITLAB_SERVER__ENDPOINTS 复制链接链接已复制到粘贴板!
用于工厂集成的 GitLab 端点。如果不需要集成,则 GitLab 服务器 URL 的逗号分隔列表或 NULL。
- 默认
-
NULL
3.3.2.2.10.15. CHE_INTEGRATION_GITLAB_OAUTH__ENDPOINT 复制链接链接已复制到粘贴板!
带有配置的 OAuth 2 集成的 GitLab 服务器地址
- 默认
-
NULL
3.3.2.2.10.16. CHE_OAUTH2_GITLAB_CLIENTID__FILEPATH 复制链接链接已复制到粘贴板!
配置 GitLab OAuth2 客户端。用于获取个人访问令牌。包含 GitLab 客户端 ID 的文件的位置。
- 默认
-
NULL
3.3.2.2.10.17. CHE_OAUTH2_GITLAB_CLIENTSECRET__FILEPATH 复制链接链接已复制到粘贴板!
包含 GitLab 客户端 secret 的文件位置。
- 默认
-
NULL#
3.3.2.2.11. Che 系统 复制链接链接已复制到粘贴板!
3.3.2.2.11.1. CHE_SYSTEM_SUPER__PRIVILEGED__MODE 复制链接链接已复制到粘贴板!
系统超级用户模式.授予 manageSystem 权限为 getByKey、getByNameSpace、stopWorkspaces 和 getResourcesInformation 的权限。默认情况下,不授予管理员,这些权限允许管理员对任何工作区以及命名自身获得这些工作区的可见性。
- 默认
-
false
3.3.2.2.11.2. CHE_SYSTEM_ADMIN__NAME 复制链接链接已复制到粘贴板!
为 che.admin.name
用户授予系统权限。如果用户已存在,则在组件启动时将发生在组件启动时,如果用户在第一次登录时,就会在数据库中出现。
- 默认
-
admin
3.3.2.2.12. 工作区限制 复制链接链接已复制到粘贴板!
3.3.2.2.12.1. CHE_LIMITS_WORKSPACE_ENV_RAM 复制链接链接已复制到粘贴板!
工作区是在开发时供用户使用的基本运行时。您可以设置参数来限制工作区的创建方式以及所消耗的资源。用户可以在创建新的工作区时分配给工作区的最大 RAM 量。将 RAM 滑块调整为此最大值。
- 默认
-
16gb
3.3.2.2.12.2. CHE_LIMITS_WORKSPACE_IDLE_TIMEOUT 复制链接链接已复制到粘贴板!
当系统暂停工作空间时,用户闲置了工作区(毫秒)的时间长度,然后停止它。Idleness 是用户未与工作区交互的时间长度,这意味着其中一个代理没有收到交互。使浏览器窗口打开闲置状态。
- 默认
-
1800000
3.3.2.2.12.3. CHE_LIMITS_WORKSPACE_RUN_TIMEOUT 复制链接链接已复制到粘贴板!
在系统暂停之前,工作区将运行的时间长度(不论活动是什么)。如果要在一段时间后自动停止工作区,请设置此属性。默认为零,表示没有运行超时。
- 默认
-
0
3.3.2.2.13. 用户工作区限制 复制链接链接已复制到粘贴板!
3.3.2.2.13.1. CHE_LIMITS_USER_WORKSPACES_RAM 复制链接链接已复制到粘贴板!
单个用户可以分配来运行工作区的 RAM 总量。用户可以将此 RAM 分配到一个工作区,或将其分散到多个工作区中。
- 默认
-
-1
3.3.2.2.13.2. CHE_LIMITS_USER_WORKSPACES_COUNT 复制链接链接已复制到粘贴板!
用户可以创建的最大工作区数。如果用户尝试创建额外的工作区,则用户会看到一条错误消息。这适用于正在运行的和已停止工作区的总数。
- 默认
-
-1
3.3.2.2.13.3. CHE_LIMITS_USER_WORKSPACES_RUN_COUNT 复制链接链接已复制到粘贴板!
单个用户可以拥有的运行工作区的最大数量。如果用户达到这个阈值,并且它们尝试启动额外的工作区,它们将出现错误消息。用户将需要停止正在运行的工作区才能激活另一个工作区。
- 默认
-
1
3.3.2.2.14. 机构工作区限制 复制链接链接已复制到粘贴板!
3.3.2.2.14.1. CHE_LIMITS_ORGANIZATION_WORKSPACES_RAM 复制链接链接已复制到粘贴板!
单个机构(team)允许分配运行工作区的 RAM 总量。机构所有者可以分配此 RAM,但它们可在团队的工作区中容纳。
- 默认
-
-1
3.3.2.2.14.2. CHE_LIMITS_ORGANIZATION_WORKSPACES_COUNT 复制链接链接已复制到粘贴板!
组织允许拥有的最大工作区数。如果组织试图创建额外的工作区,则会显示错误消息。这适用于正在运行的和已停止工作区的总数。
- 默认
-
-1
单个机构允许运行工作区的最大数量。如果组织达到这个阈值,并且它们尝试启动额外的工作区,则会提示它们并显示错误消息。组织将需要停止正在运行的工作区才能激活另一个工作区。
- 默认
-
-1
3.3.2.2.15. 特定于多用户的 OpenShift 基础架构配置 复制链接链接已复制到粘贴板!
OpenShift 身份提供程序在 Keycloak 中注册的别名,用于在当前 OpenShift Dev Spaces 用户拥有的 OpenShift 命名空间中创建工作区 OpenShift 资源。如果 che.infra.openshift.project
设为非空值,则应设置为 NULL。请参阅: OpenShift 身份提供程序
- 默认
-
NULL
3.3.2.2.16. OIDC 配置 复制链接链接已复制到粘贴板!
3.3.2.2.16.1. CHE_OIDC_AUTH__SERVER__URL 复制链接链接已复制到粘贴板!
只有在使用 che.oidc.oidcProvider
时,才可将 OIDC 身份提供程序服务器的 URL 设置为 NULL
- 默认
-
HTTP://${CHE_HOST}:5050/auth
3.3.2.2.16.2. CHE_OIDC_AUTH__INTERNAL__SERVER__URL 复制链接链接已复制到粘贴板!
用于 OIDC 身份提供程序服务器的内部网络服务 Url
- 默认
-
NULL
3.3.2.2.16.3. CHE_OIDC_ALLOWED__CLOCK__SKEW__SEC 复制链接链接已复制到粘贴板!
在验证 exp
或 nbf
声明时容许时钟偏移的秒数。
- 默认
-
3
3.3.2.2.16.4. CHE_OIDC_USERNAME__CLAIM 复制链接链接已复制到粘贴板!
如果没有定义回退值,在 Keycloak 安装和 Dex 安装中的名称中是 "preferred_username" 时用作用户显示名称的用户名。
- 默认
-
NULL
3.3.2.2.16.5. CHE_OIDC_OIDC__PROVIDER 复制链接链接已复制到粘贴板!
备用 OIDC 供应商的基本 URL 包括:以下规格 Obtaining OpenID Provider Configuration Information Deprecated, use che.oidc.auth_server_url
和 che.oidc.auth_internal_server_url
。
- 默认
-
NULL
3.3.2.2.17. Keycloak 配置 复制链接链接已复制到粘贴板!
3.3.2.2.17.1. CHE_KEYCLOAK_REALM 复制链接链接已复制到粘贴板!
当 che.keycloak.oidcProvider 使用 che.keycloak.oidcProvider
时,Keyclocloak.oidcProvider 才可以验证用户是否可以被设置为 NULL
- 默认
-
Che
3.3.2.2.17.2. CHE_KEYCLOAK_CLIENT__ID 复制链接链接已复制到粘贴板!
che.keycloak.realm
中的 Keycloak 客户端标识符,用于在仪表板、IDE 和 CLI 中验证用户。
- 默认
-
che-public
3.3.2.2.17.3. CHE_KEYCLOAK_OSO_ENDPOINT 复制链接链接已复制到粘贴板!
访问 OSO OAuth 令牌的 URL
- 默认
-
NULL
3.3.2.2.17.4. CHE_KEYCLOAK_GITHUB_ENDPOINT 复制链接链接已复制到粘贴板!
访问 Github OAuth 令牌的 URL
- 默认
-
NULL
3.3.2.2.17.5. CHE_KEYCLOAK_USE__NONCE 复制链接链接已复制到粘贴板!
使用 OIDC 可选 非ce
功能来提高安全性。
- 默认
-
true
3.3.2.2.17.6. CHE_KEYCLOAK_JS__ADAPTER__URL 复制链接链接已复制到粘贴板!
要使用的 Keycloak Javascript 适配器的 URL。如果设置为 NULL,则使用默认值是 ${che.keycloak.auth_server_url}/js/keycloak.js
或 & lt;che-server>/api/keycloak/OIDCKeycloak.js。
- 默认
-
NULL
3.3.2.2.17.7. CHE_KEYCLOAK_USE__FIXED__REDIRECT__URLS 复制链接链接已复制到粘贴板!
当使用替代 OIDC 供应商时,仅在 che.keycloak.oidcloak.oidc_provider
是 NULL 时,仅在支持固定重定向 Urls 此属性时忽略这个属性,则设置为 true
- 默认
-
false
3.3.2.2.17.8. CHE_OAUTH_SERVICE__MODE 复制链接链接已复制到粘贴板!
配置可在"嵌入"或"委派"模式下使用的 OAuth 身份验证服务。如果设置为"嵌入",则服务充当 OpenShift Dev Spaces 的 OAuthAuthenticator(如单用户模式中所示)。如果设置为 "delegated",则该服务将使用 Keycloak IdentityProvider 机制。如果没有正确设置此属性,则会出现运行时例外 wii
。
- 默认
-
委托
配置,用于在从 OpenShift Dev Spaces 数据库中删除用户时从 Keycloak 服务器中删除用户。默认情况下,它被禁用。在一些特殊情况下,在 OpenShift Dev Spaces 数据库中删除用户时应该执行从 Keycloak 中删除 related-user。若要使工作正确,需要设置管理员用户名 ${che.keycloak.admin_username} 和密码 ${che.keycloak.admin_password}。
- 默认
-
false
3.3.2.2.17.10. CHE_KEYCLOAK_ADMIN__USERNAME 复制链接链接已复制到粘贴板!
Keycloak 管理员用户名。将用于从 OpenShift Dev Spaces 数据库中删除来自 Keycloak 的用户。仅在 ${che.keycloak.cascade_user_removal_enabled} 设置为 'true' 时有意义。
- 默认
-
NULL
3.3.2.2.17.11. CHE_KEYCLOAK_ADMIN__PASSWORD 复制链接链接已复制到粘贴板!
Keycloak 管理员密码。将用于从 OpenShift Dev Spaces 数据库中删除来自 Keycloak 的用户。仅在 ${che.keycloak.cascade_user_removal_enabled} 设置为 'true' 时有意义。
- 默认
-
NULL
用户名调整配置.OpenShift Dev Spaces 需要使用用户名作为 Kubernetes 对象名称和标签的一部分,因此其格式与身份提供程序通常允许的更严格要求(需要它们符合 DNS)。调整大小以逗号分开的键值对表示。它们按顺序用作 String.replaceAll 函数在原始用户名上的参数。键是正则表达式,值是替换字符串,用于替换与正则表达式匹配的用户名中的字符。修改的用户名将只存储在 OpenShift Dev Spaces 数据库中,不会公告回身份提供程序。建议您使用与 DNS 兼容的字符作为替换字符串(键值对中的值)。示例: \\=-,@=-at-
changes \
to -
和 @
to -at-
,因此用户名 org\user@com
变为 org-user-at-com。
- 默认
-
NULL
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 命名空间的名称:
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 默认为
openshift-operators
。配置
CHE_LIMITS_USER_WORKSPACES_COUNT
:oc patch checluster/devspaces -n openshift-operators \ --type='merge' -p \ '{"spec":{"components":{"cheServer":{"extraProperties":{"CHE_LIMITS_USER_WORKSPACES_COUNT": "<kept_workspaces_limit>"}}}}}'
$ oc patch checluster/devspaces -n openshift-operators \
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 命名空间的名称:
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 默认为
openshift-operators
。配置
runningLimit
:oc patch checluster/devspaces -n openshift-operators \ --type='merge' -p \ '{"spec":{"components":{"devWorkspace":{"runningLimit": "<running_workspaces_limit>"}}}}'
$ oc patch checluster/devspaces -n openshift-operators \
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 复制链接链接已复制到粘贴板!
您可以配置 OpenShift Dev Spaces,以支持使用自签名证书的 Git 提供程序中的操作。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 - Git 版本 2 或更高版本
流程
创建一个新 ConfigMap,其中包含 Git 服务器的详情:
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-devspaces
2 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-devspaces
Copy 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-cert
spec: devEnvironments: trustedCerts: gitTrustedCertsConfigMapName: che-git-self-signed-cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
创建并启动新工作区。工作区使用的每一容器都挂载一个特殊的卷,其中包含带有自签名证书的文件。存储库的
.git/config
文件包含关于http
部分中的 Git 服务器主机(its URL)和证书的路径的信息(请参阅 git-config的 Git 文档)。例 3.11.
.git/config
文件示例[http "https://10.33.177.118:3000"] sslCAInfo = /etc/che/git/cert/ca.crt
[http "https://10.33.177.118:3000"] sslCAInfo = /etc/che/git/cert/ca.crt
Copy 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
对象(请注意 允许的Topologies
字段),它协调 PVC 创建过程。
通过 CHE_INFRA_KUBERNETES_PVC_STORAGE_CLASS__NAME
环境变量将新创建的 StorageClass
的名称传递给 OpenShift Dev Spaces。此变量的默认空值指示 OpenShift Dev Spaces 使用集群的默认 StorageClass
。
3.5. 缓存镜像,以便加快工作区启动 复制链接链接已复制到粘贴板!
要提高 OpenShift Dev Spaces 工作区的开始时间性能,请使用 Image Puller(image Puller)(一个 OpenShift Dev Spaces-agnostic 组件),可用于预拉取(pull)镜像(pull)镜像。Image Puller 是一个额外的 OpenShift 部署,它会创建一个 DaemonSet,它可以在每个节点上预拉取相关的 OpenShift Dev Spaces 工作区镜像。当 OpenShift Dev Spaces 工作区启动时,这些镜像将已存在,因此改进了工作空间开始时间。
Image Puller 为配置提供了以下参数。
参数 | 使用方法 | 默认 |
---|---|---|
| DaemonSets 健康检查间隔(以小时为单位) |
|
| 在拉取器运行时,每个缓存的镜像的内存请求。请参阅 第 3.5.2 节 “为 Image Puller 定义内存参数”。 |
|
| 在拉取器运行时,每个缓存的镜像的内存限值。请参阅 第 3.5.2 节 “为 Image Puller 定义内存参数”。 |
|
| 在拉取器运行时,每个缓存的镜像的处理器请求 |
|
| 在拉取器运行时,每个缓存的镜像的处理器限制 |
|
| 要创建的 DaemonSet 的名称 |
|
| 要创建的 Deployment 的名称 |
|
| 包含要创建的 DaemonSet 的 OpenShift 项目 |
|
|
要拉取的镜像的分号分隔列表,格式为 < | |
| 节点选择器应用到 DaemonSet 创建的 pod |
|
| 关联性应用到 DaemonSet 创建的 pod |
|
|
镜像 pull secret 列表,格式为 |
|
其他资源
3.5.1. 定义要拉取的镜像列表 复制链接链接已复制到粘贴板!
Image Puller 可以预先拉取大多数镜像,包括全新镜像,如 che-machine-exec
。但是,在 Dockerfile 中挂载卷的镜像(如 efik
)不支持在 OpenShift 3.11 上预拉取。
流程
-
通过导航到
https://devspaces- <openshift_deployment_name> . <domain_name> /plugin-registry/v3/external_ images.txt
URL 来收集用于预拉取的相关容器镜像列表。 -
从列表中确定预拉取的镜像。为加快工作区启动时间,请考虑预先拉取工作区相关镜像,如
che-theia
、che-machine-exec
、che-theia-endpoint-runtime-binary
,以及插件 sidecar 镜像。
其他资源
3.5.2. 为 Image Puller 定义内存参数 复制链接链接已复制到粘贴板!
定义内存请求和限值参数,以确保拉取容器,平台可以运行足够的内存。
流程
-
要定义
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 上安装镜像拉取(puller) 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台在 OpenShift 上安装支持的社区支持的 Kubernetes Image Puller Operator。
先决条件
- 第 3.5.1 节 “定义要拉取的镜像列表”
- 第 3.5.2 节 “为 Image Puller 定义内存参数”.
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
流程
- 安装支持社区支持的 Kubernetes Image Puller Operator。请参阅使用 Web 控制台从 OperatorHub 安装。
-
从由社区支持的
Kubernetes Image Puller
Operator 创建 kubernetes-image-puller KubernetesImagePuller 操作对象。请参阅从已安装的 Operator 创建应用程序。
3.5.4. 使用 CLI 在 OpenShift 上安装镜像拉取(puller) 复制链接链接已复制到粘贴板!
您可以使用 OpenShift oc
管理工具在 OpenShift 上安装 Kubernetes Image Puller。
先决条件
- 第 3.5.1 节 “定义要拉取的镜像列表”.
- 第 3.5.2 节 “为 Image Puller 定义内存参数”。
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 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/openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下参数配置
app.yaml
、configmap.yaml
和serviceaccount.yaml
OpenShift 模板:Expand 表 3.15. app.yaml中的 image Puller OpenShift 模板参数 值 使用方法 默认 DEPLOYMENT_NAME
ConfigMap 中的
DEPLOYMENT_NAME
的值kubernetes-image-puller
IMAGE
用于
kubernetes-image-puller
部署的镜像registry.redhat.io/devspaces/imagepuller-rhel8:3.1
IMAGE_TAG
要拉取的镜像标签
latest
SERVICEACCOUNT_NAME
由部署创建并使用的 ServiceAccount 的名称
kubernetes-image-puller
Expand 表 3.16. configmap.yaml中的 image Puller OpenShift 模板参数 值 使用方法 默认 CACHING_CPU_LIMIT
ConfigMap 中的
CACHING_CPU_LIMIT
的值.2
CACHING_CPU_REQUEST
ConfigMap 中的
CACHING_CPU_REQUEST
的值.05
CACHING_INTERVAL_HOURS
ConfigMap 中的
CACHING_INTERVAL_HOURS
的值"1"
CACHING_MEMORY_LIMIT
ConfigMap 中的
CACHING_MEMORY_LIMIT
的值"20Mi"
CACHING_MEMORY_REQUEST
ConfigMap 中的
CACHING_MEMORY_REQUEST
的值"10Mi"
DAEMONSET_NAME
ConfigMap 中的
DAEMONSET_NAME
的值kubernetes-image-puller
DEPLOYMENT_NAME
ConfigMap 中的
DEPLOYMENT_NAME
的值kubernetes-image-puller
IMAGES
ConfigMap 中的
IMAGES
值"没有定义"
NAMESPACE
ConfigMap 中的
NAMESPACE
值k8s-image-puller
NODE_SELECTOR
ConfigMap 中的
NODE_SELECTOR
的值"{}"
Expand 表 3.17. serviceaccount.yaml中的 image 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 yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 配置可观察性 复制链接链接已复制到粘贴板!
要配置 OpenShift Dev Spaces observability 功能,请参阅:
3.6.1. Che-Theia 工作区 复制链接链接已复制到粘贴板!
3.6.1.1. Telemetry 概述 复制链接链接已复制到粘贴板!
Telemetry 是操作数据的显式和 ethical 集合。默认情况下,Red Hat OpenShift Dev Spaces 中没有 telemetry,但在 Che-ia 编辑器中,可以使用插件机制启用遥测功能,并使用网段收集 chectl
命令行工具使用数据。这种方法用于由红帽"由红帽"托管的 Eclipse Che服务,用于为每个 Che-Theia 工作区启用了 telemetry。
本文档包含指南描述了如何为 Red Hat OpenShift Dev Spaces 创建自己的遥测客户端,后接 Red Hat OpenShift Dev Spaces Woopra Telemetry 插件 的概述。
3.6.1.2. 使用案例 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces 遥测 API 允许跟踪:
- 工作区使用率的持续时间
- 用户驱动的操作,如文件编辑、提交和推送到远程存储库。
- 工作区中使用的编程语言和 devfile。
3.6.1.3. 如何使用 复制链接链接已复制到粘贴板!
当 DevWorkspace 启动时,che-theia
容器将启动遥测插件,该插件负责将遥测事件发送到后端。如果在 DevWorkspace Pod 中设置 $DEVWORKSPACE_TEMETRY_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 插件是一个插件,用于将遥测从 Red Hat OpenShift Dev Spaces 安装发送到 Segment 和 Woopra。此插件 由红帽托管的 Eclipse Che 使用,但任何 Red Hat OpenShift Dev Spaces 部署都可以使用此插件。一个有效的 Woopra 域和 Segment Write 键外没有依赖项。插件 plugin.yaml 的 devfile v2 具有可传递给插件的四个环境变量:
-
WOOPRA_DOMAIN
-要将事件发送到的 Woopra 域。 -
SEGMENT_WRITE_KEY
- 将事件发送到 Segment 和 Woopra 的写入键。 -
WOOPRA_ENDPOINT
- 如果您更喜欢直接传递 Woopra 域,该插件会从返回 Woopra 域提供的 HTTP 端点中获取。 -
SEGMENT_WRITE_KEY_ENDPOINT
- 如果您不想直接传递 Segment write 键,则插件会从提供的 HTTP 端点中获取返回 Segment write 键的 HTTP 端点。
在 Red Hat OpenShift Dev Spaces 安装中启用 Woopra 插件:
流程
使用正确设置的环境变量,将
plugin.yaml
devfile v2 文件部署到 HTTP 服务器中。配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6. 创建遥测插件 复制链接链接已复制到粘贴板!
本节演示了如何创建 AnalyticsManager
类来扩展 Abstract AnalyticsManager
并实现以下任一方法:
-
isEnabled()
- 决定遥测后端是否正常工作。这意味着始终返回true
或具有更复杂的检查,例如缺少连接属性时返回错误。 -
destroy()
- 清理方法,然后再关闭遥测后端。这个方法发送WORKSPACE_STOPPED
事件。 -
onActivity()
- 表示给定用户仍然会发生某些活动。这主要用于发送WORKSPACE_INACTIVE
事件。 -
onEvent()
- 将遥测事件提交到遥测服务器,如WORKSPACE_USED
或WORKSPACE_STARTED
。 -
increaseDuration()
- 增加当前事件的持续时间,而不是在少量时间内发送多个事件。
以下部分涵盖以下内容:
- 创建遥测服务器以将事件回显到标准输出。
- 扩展 OpenShift Dev Spaces 遥测客户端并实施用户的自定义后端。
-
为自定义后端创建一个
plugin.yaml
文件,它代表 DevWorkspace 插件。 -
通过设置
CheCluster
自定义资源的workspacesDefaultPlugins
属性来指定自定义插件到 OpenShift Dev Spaces 的位置。
3.6.1.6.1. 开始使用 复制链接链接已复制到粘贴板!
本文档描述了扩展 OpenShift Dev Spaces 遥测系统以与自定义后端通信所需的步骤:
- 创建接收事件的服务器进程
- 扩展 OpenShift Dev Spaces 库以创建将事件发送到服务器的后端
- 在容器中打包遥测后端并将其部署到镜像 registry
- 为您的后端添加一个插件,并指示 OpenShift Dev Spaces 在您的 DevWorkspace 中加载插件
遥测后端的完整示例位于 https://github.com/che-incubator/devworkspace-telemetry-example-plugin。
创建接收事件的服务器
出于演示目的,本例演示了如何创建服务器,从遥测插件接收事件并将其写入标准输出。
对于生产环境,请考虑与第三方遥测系统(例如,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 入口,而后者则定义了 OpenShift 路由。
在 清单文件中,替换 image
和 host
字段,以匹配您推送的镜像和 OpenShift 集群的公共主机名。然后运行:
kubectl apply -f manifest_with_[ingress|route].yaml -n {prod-namespace}
$ kubectl apply -f manifest_with_[ingress|route].yaml -n {prod-namespace}
3.6.1.6.2. 创建后端项目 复制链接链接已复制到粘贴板!
为了在开发 时快速反馈意见,建议在 DevWorkspace 中进行开发。这样,您可以在集群中运行应用程序,并从前端遥测插件接收事件。
Maven Quarkus 项目构建:
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOT
mvn io.quarkus:quarkus-maven-plugin:2.7.1.Final:create \ -DprojectGroupId=mygroup -DprojectArtifactId=devworkspace-telemetry-example-plugin \ -DprojectVersion=1.0.0-SNAPSHOT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
删除
src/main/java/mygroup
下的文件,以及src/test/java/mygroup
。 -
如需最新版本的 GitHub 软件包,请参阅
后端基础
的 Maven 协调。 在您的
pom.xml
中添加以下依赖项:例 3.13.
pom.xml
Copy 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.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1.6.3. 创建 AnalyticsManager 的 concrete 实现并添加专用逻辑 复制链接链接已复制到粘贴板!
在 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
是 alternatives 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. 在 DevWorkspace 中运行应用程序 复制链接链接已复制到粘贴板!
在 DevWorkspace 中设置
DEVWORKSPACE_TELEMETRY_BACKEND_PORT
环境变量。在这里,该值设置为4167
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 Red Hat OpenShift Dev Spaces 仪表板中重启 DevWorkspace。
在 DevWorkspace 的终端窗口中运行以下命令,以启动应用程序。使用
--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 Che
Copy 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. 在 Event()上实现 复制链接链接已复制到粘贴板!
onEvent()
将后端接收的事件发送到遥测系统。对于示例应用,它会将 HTTP POST 有效负载发送到来自遥测服务器的 /event
端点。
3.6.1.6.6.1. 将 POST 请求发送到示例遥测服务器 复制链接链接已复制到粘贴板!
在以下示例中,遥测服务器应用通过以下 URL 部署到 OpenShift: http://little-telemetry-server-che.apps-crc.testing
,其中 apps-crc.testing
是 OpenShift 集群的入口域名。
通过创建
TelemetryService.java
来设置 RESTEasy REST 客户端例 3.19.
TelemetryService.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 向其发出
POST
请求的端点。
在
src/main/resources/application.properties
文件中指定TelemetryService
的基本 URL:例 3.20.
application.properties
org.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.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
TelemetryService
注入AnalyticsManager
,并在onEvent()
中发送POST
请求例 3.21.
AnalyticsManager.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将 HTTP 请求发送到遥测服务器,并在短时间内自动延迟相同的事件。默认持续时间为 1500 毫秒。
3.6.1.6.7. 实施 increaseDuration() 复制链接链接已复制到粘贴板!
许多遥测系统都识别事件持续时间。AbstractAnalyticsManager
将类似事件的事件合并到一个事件中。这个 increaseDuration()
的实现是 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. 实施 On Activity() 复制链接链接已复制到粘贴板!
设置一个不活跃的超时限制,并使用 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 节 “在 DevWorkspace 中运行应用程序” 所述,使用 Ctrl+C 终止应用程序会将 WORKSPACE_STOPPED
事件发送到服务器。
3.6.1.6.10. 打包 Quarkus 应用程序 复制链接链接已复制到粘贴板!
有关在容器中打包应用程序的最佳说明,请参阅 Quarkus 文档。构建容器并将其推送到您选择的容器 registry。
3.6.1.6.10.1. 构建使用 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 .
3.6.1.6.10.2. 用于构建 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 文件,该文件代表在 DevWorkspace Pod 中运行您的自定义后端的 DevWorkspace 插件。有关 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.yaml
3.6.1.6.12. 在 DevWorkspace 中指定遥测插件 复制链接链接已复制到粘贴板!
在现有 DevWorkspace
的组件
字段中添加以下内容:components: ... - name: telemetry-plug-in plugin: uri: http://apache-che.apps-crc.testing/plugin.yaml
components: ... - name: telemetry-plug-in plugin: uri: http://apache-che.apps-crc.testing/plugin.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 从 OpenShift Dev Spaces 仪表板启动 DevWorkspace。
验证步骤
验证
telemetry-plug-in
容器是否在 DevWorkspace pod 中运行。在这里,可通过在编辑器中检查 Workspace 视图来验证这一点。- 在编辑器中编辑文件,并在示例遥测服务器日志中观察其事件。
3.6.1.6.13. 为所有 DevWorkspace 应用遥测插件 复制链接链接已复制到粘贴板!
将遥测插件设置为默认插件。默认插件在 DevWorkspace 启动中适用于新的和现有的 DevWorkspace。
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
- 从 Red Hat OpenShift Dev Spaces 仪表板启动新的或现有的 DevWorkspace。
- 通过对 第 3.6.1.6.12 节 “在 DevWorkspace 中指定遥测插件” 的验证步骤验证遥测插件是否正常工作。
3.6.2. 配置服务器日志记录 复制链接链接已复制到粘贴板!
可以微调 OpenShift Dev Spaces 服务器中的独立日志记录器的日志级别。
整个 OpenShift Dev Spaces 服务器的日志级别使用 Operator 的 cheLogLevel
配置属性全局配置。请参阅 第 3.1.3 节 “CheCluster
Custom Resource 字段参考”。要在不是由 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
配置 debug 模式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
参数来覆盖它。例如,要将 Che 日志下载到/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&
gt; 是安装 Red Hat OpenShift Dev Spaces 的 OpenShift 项目。例如,若要从my-namespace
项目中的 OpenShift Dev Spaces 中获取日志,请使用 命令dsc server:logs -n my-namespace
dsc server:logs -n my-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DSC server:deploy
-
使用
dsc
安装时,会在 OpenShift Dev Spaces 安装过程中自动收集日志。与dsc server:logs
一样,可以使用-d
参数指定目录日志。
其他资源
3.6.4. 使用 Prometheus 和 Grafana 监控 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
您可以使用在集群中运行 Prometheus 和 Grafana 实例来收集和查看 OpenShift Dev Spaces 指标。
3.6.4.1. 安装 Prometheus 和 Grafana 复制链接链接已复制到粘贴板!
您可以通过应用 template.yaml
来安装 Prometheus 和 Grafana。本例中的 template.yaml
文件提供了一个基本配置、Deployment 和 Services 的监控堆栈。
另外,您可以使用 Prometheus Operator 和 Grafana Operator。
先决条件
- oc
流程
使用 template.yaml
安装 Prometheus 和 Grafana:
为 Prometheus 和 Grafana 创建一个新项目,
监控
:oc new-project monitoring
$ oc new-project monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
monitoring
项目中应用template.yaml
:oc apply -f template.yaml -n monitoring
$ oc apply -f template.yaml -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
例 3.30. template.yaml
3.6.4.2. 监控 DevWorkspace Operator 复制链接链接已复制到粘贴板!
您可以配置示例监控堆栈来处理 DevWorkspace Operator 公开的指标。
3.6.4.2.1. 使用 Prometheus 收集 DevWorkspace Operator 指标 复制链接链接已复制到粘贴板!
要使用 Prometheus 来收集、存储和查询 DevWorkspace Operator 的指标:
先决条件
-
devworkspace-controller-metrics
服务在端口8443
中公开指标。这会默认预先配置。 -
devworkspace-webhookserver
服务在端口9443
上公开指标。这会默认预先配置。 -
Prometheus 2.26.0 或更高版本正在运行。Prometheus 控制台在端口
9090
上运行,带有对应的服务。参阅 Prometheus 的第一个步骤。
流程
创建一个 ClusterRoleBinding,将 Prometheus 关联的 ServiceAccount 绑定到 devworkspace-controller-metrics-reader ClusterRole。对于 示例监控堆栈,要使用的 ServiceAccount 的名称是
prometheus
。注意如果没有 ClusterRoleBinding,您无法访问 DevWorkspace 指标,因为访问受基于角色的访问控制(RBAC)保护。
例 3.31. ClusterRoleBinding
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Prometheus 配置为从
devworkspace-controller-metrics
Service 公开的端口8443
提取指标,并从devworkspace-webhookserver
服务公开的端口9443
中提取指标。注意示例监控堆栈 已经使用空配置创建
prometheus-config
ConfigMap。要提供 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-metrics
Service
所在的项目。 - 5
- 指标的修整目标(来自端口
9443
)。将<DWO_project
> 替换为devworkspace-webhookserver
Service
所在的项目。
缩减
Prometheus
Deployment,并最多从上一步中读取更新的 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 monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
Prometheus
服务:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过查看
localhost:9090/targets
上的目标端点,验证所有目标是否已启动。 使用 Prometheus 控制台查看和查询指标:
-
查看
localhost:9090/metrics
中的指标。 从
localhost:9090/graph
查询指标。如需更多信息,请参阅 使用表达式浏览器。
-
查看
3.6.4.2.2. DevWorkspace 特定指标 复制链接链接已复制到粘贴板!
下表描述了 devworkspace-controller-metrics
服务公开的 DevWorkspace 特定指标。
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
| 计数 | DevWorkspace 启动事件的数量。 |
|
| 计数 |
DevWorkspace 的数量成功进入 |
|
| 计数 | 失败的 DevWorkspace 数。 |
|
| Histogram | 启动 DevWorkspace 的总时间(以秒为单位)。 |
|
名称 | 描述 | 值 |
---|---|---|
|
DevWorkspace 的 |
|
|
DevWorkspace 的 |
|
| 工作区启动失败原因。 |
|
名称 | 描述 |
---|---|
| 由于用于创建 DevWorkspace 的无效 devfile 导致启动失败。 |
|
由于以下错误,启动失败: |
| 未知的故障原因。 |
3.6.4.2.3. 在 Grafana 仪表板上查看 DevWorkspace Operator 指标 复制链接链接已复制到粘贴板!
使用示例仪表板查看 Grafana 上的 DevWorkspace Operator 指标:
先决条件
- Prometheus 正在收集指标。请参阅 第 3.6.4.2.1 节 “使用 Prometheus 收集 DevWorkspace Operator 指标”。
- Grafana 版本 7.5.3 或更高版本。
-
Grafana 在带有对应服务的端口
3000
上运行。请参阅安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
-
导入 示例
grafana-dashboard.json
仪表板。
验证步骤
- 使用 Grafana 控制台查看 DevWorkspace Operator 指标仪表板。请参阅 第 3.6.4.2.4 节 “DevWorkspace Operator 的 Grafana 仪表板”。
其他资源
3.6.4.2.4. DevWorkspace Operator 的 Grafana 仪表板 复制链接链接已复制到粘贴板!
基于 grafana-dashboard.json
的 Grafana 仪表板示例显示了 DevWorkspace Operator 的以下指标。
3.6.4.2.4.1. DevWorkspace 相关指标 面板 复制链接链接已复制到粘贴板!
图 3.1. DevWorkspace 相关指标 面板
- 平均工作区开始时间
- 平均工作空间启动持续时间。
- 工作区启动
- 成功和失败的工作空间启动数量。
- 工作区启动持续时间
- 显示工作区启动持续时间的 heatmap。
- DevWorkspace 成功/失败
- 成功和失败的 DevWorkspace 启动之间的比较。
- DevWorkspace 失败率
- 故障工作区启动次数和工作空间启动总数之间的比率。
- DevWorkspace 启动失败原因
显示工作区启动失败分布的 pie chart:
-
BadRequest
-
InfrastructureFailure
-
Unknown
-
3.6.4.2.4.2. Operator 指标 面板(第 1 部分) 复制链接链接已复制到粘贴板!
图 3.2. Operator 指标 面板(第 1 部分)
- flight 中的 Webhook
- 不同 Webhook 请求数量之间的比较。
- 工作队列持续时间
- 显示协调请求在处理工作队列中的 heatmap。
- Webhook 延迟(/mutate)
-
显示
/mutate
Webhook 延迟的 heatmap。 - 协调时间
- 显示协调持续时间的 heatmap。
3.6.4.2.4.3. Operator 指标 面板(第 2 部分) 复制链接链接已复制到粘贴板!
图 3.3. Operator 指标 面板(第 2 部分)
- Webhook 延迟(/convert)
-
显示
/convert
Webhook 延迟的 heatmap。 - 工作队列深度
- 在工作队列中的协调请求数量。
- 内存
- DevWorkspace 控制器和 DevWorkspace webhook 服务器的内存用量。
- 协调计数(DWO)
- DevWorkspace 控制器的每秒协调计数的平均数量。
3.6.4.3. 监控 OpenShift Dev Spaces 服务器 复制链接链接已复制到粘贴板!
您可以配置 OpenShift Dev Spaces,以公开 OpenShift Dev Spaces 服务器的 JVM 内存和类加载等 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-config
ConfigMap。要提供 Prometheus 配置详情,请编辑 ConfigMap 的data
字段。例 3.33. Prometheus 配置
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 缩减
Prometheus
Deployment,并最多从上一步中读取更新的 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 monitoring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用端口转发在本地访问
Prometheus
服务:oc port-forward svc/prometheus 9090:9090 -n monitoring
$ oc port-forward svc/prometheus 9090:9090 -n monitoring
Copy 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 监控 OpenShift Dev Spaces”。
-
Grafana 6.0 或更高版本在带有对应服务的端口
3000
上运行。请参阅安装 Grafana。
流程
- 为 Prometheus 实例添加数据源。请参阅创建 Prometheus 数据源。
- 导入示例 仪表板。请参阅 导入仪表板。
在 Grafana 控制台中查看 OpenShift Dev Spaces JVM 指标:
图 3.4. OpenShift Dev Spaces 服务器 JVM 仪表板
图 3.5. 快速事实
图 3.6. JVM 内存
图 3.7. JVM Misc
图 3.8. JVM 内存池(堆)
图 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-devspaces
NetworkPolicy 应用到每个用户项目。allow-from-openshift-devspaces
NetworkPolicy 允许 OpenShift Dev Spaces 命名空间中的传入流量到用户项目中的所有 Pod。例 3.34.
allow-from-openshift-devspaces.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.2. 配置 Red Hat OpenShift Dev Spaces 服务器主机名 复制链接链接已复制到粘贴板!
此流程描述了如何配置 OpenShift Dev Spaces 以使用自定义主机名。
先决条件
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 CLI 入门。 - 生成证书和私钥文件。
要生成私钥和证书的对,必须将相同的证书颁发机构(CA)用于其他 OpenShift Dev Spaces 主机。
询问 DNS 供应商将自定义主机名指向集群入口。
流程
为 OpenShift Dev Spaces 预先创建项目:
oc create project openshift-devspaces
$ oc create project openshift-devspaces
Copy 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-devspaces
Copy 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-devspaces
Copy 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 证书导入到 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
默认情况下,OpenShift Dev Spaces 组件之间的外部通信通过 TLS 加密。OpenShift Dev Spaces 组件与代理、源代码存储库和身份提供程序等外部服务的通信可能还需要 TLS。所有使用 TLS 加密的通信都需要使用由可信证书颁发机构(CA)签名的 TLS 证书。
当 OpenShift Dev Spaces 组件或外部服务使用的证书由不信任的 CA 签名时,您必须将 CA 证书导入到 OpenShift Dev Spaces 实例,以便每个 OpenShift Dev Spaces 组件将证书视为可信 CA 签名。您必须在以下情况下完成此操作:
- 底层 OpenShift 集群使用由不受信任的 CA 签名的 TLS 证书。OpenShift Dev Spaces 服务器或工作空间组件连接到外部 OIDC 供应商或使用由不受信任的 CA 签名的 TLS 证书的 Git 服务器。
OpenShift Dev Spaces 在项目中使用标记的 ConfigMap 作为 TLS 证书的来源。ConfigMap 可以为每个证书随机有一个任意键数。
当 OpenShift 集群包含通过集群范围的代理配置 添加 的集群范围内 的可信 CA 证书时,OpenShift Dev Spaces Operator 会检测到它们并将其自动注入到 ConfigMap 中。OpenShift Dev Spaces 会自动使用 config.openshift.io/inject-trusted-cabundle="true"
标签标记 ConfigMap。根据此注解,OpenShift 会在 ConfigMap 的 ca-bundle.crt
键中自动注入集群范围的可信 CA 证书。
一些 OpenShift Dev Spaces 组件需要一个完整的证书链来信任端点。如果使用中间证书配置集群,请将整个链(包括自签名 root)添加到 OpenShift Dev Spaces。
3.7.3.1. 在 OpenShift Dev Spaces 中添加新 CA 证书 复制链接链接已复制到粘贴板!
以下流程适用于已安装和运行的实例,以及要安装的实例。
先决条件
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 CLI 入门。 - 存在 OpenShift Dev Spaces 的命名空间。
流程
保存导入本地文件系统所需的证书。
Important具有简介短语
BEGIN TRUSTED CERTIFICATE
CERTIFICATE 的证书可能包括在 PEMTRUSTED CERTIFICATE
格式,它不会被 Java 不支持。使用以下命令将其转换为支持的CERTIFICATE
格式:-
openssl x509 -in cert.pem -out cert.cer
-
使用所需的 TLS 证书创建新 ConfigMap:
oc create configmap custom-certs --from-file=<bundle-file-path> -n=openshift-devspaces
$ oc create configmap custom-certs --from-file=<bundle-file-path> -n=openshift-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要应用多个捆绑包,请添加另一个
-from-file= <bundle-file-path>
。另外,还可创建另一个 ConfigMap。使用
app.kubernetes.io/part-of=che.eclipse.org
和app.kubernetes.io/component=ca-bundle
标签创建的 ConfigMap 标签:oc label configmap custom-certs app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle -n <devspaces-namespace-name>
$ oc label configmap custom-certs app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle -n <devspaces-namespace-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果 OpenShift Dev Spaces 之前没有部署,则部署 OpenShift Dev Spaces。否则等待 OpenShift Dev Spaces 推出完成。
- 重启正在运行的工作区以使更改生效。
3.7.3.2. 导入的证书问题的故障排除 复制链接链接已复制到粘贴板!
如果在添加证书后出现问题,请验证 OpenShift Dev Spaces 实例级别和工作空间级别上的指定的值。
在 OpenShift Dev Spaces 实例级别验证导入的证书
如果 OpenShift Dev Spaces Operator 部署,
CheCluster
所在的命名空间包含带有正确内容标记的 ConfigMap:oc get cm --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
$ oc get cm --selector=app.kubernetes.io/component=ca-bundle,app.kubernetes.io/part-of=che.eclipse.org -n openshift-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下内容来检查 ConfigMap 的内容:
oc get cm <name> -n openshift-devspaces -o yaml
$ oc get cm <name> -n openshift-devspaces -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Dev Spaces Pod Volumes 列表中包含一个使用
ca-certs-merged
ConfigMap 作为 data-source 的卷。要获取 OpenShift Dev Spaces Pod 的 Volumes 列表,请运行:oc get pod -o json <devspaces-pod-name> -n openshift-devspaces | jq .spec.volumes
$ oc get pod -o json <devspaces-pod-name> -n openshift-devspaces | jq .spec.volumes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Dev Spaces 在 OpenShift Dev Spaces 服务器的
/public-certs/
文件夹中挂载证书。要查看此文件夹中的文件列表,请输入:oc exec -t <devspaces-pod-name> -n openshift-devspaces -- ls /public-certs/
$ oc exec -t <devspaces-pod-name> -n openshift-devspaces -- ls /public-certs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 OpenShift Dev Spaces 服务器日志中,每个证书都添加到 Java 信任存储中,包括配置的 OpenShift Dev Spaces 证书。查看它们:
oc logs <devspaces-pod-name> -n openshift-devspaces
$ oc logs <devspaces-pod-name> -n openshift-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Dev Spaces 服务器 Java 信任存储包含证书。证书 SHA1 指纹位于信任存储中包含的证书的 SHA1 列表中。查看列表:
oc exec -t <devspaces-pod-name> -n openshift-devspaces -- keytool -list -keystore /home/user/cacerts
$ oc exec -t <devspaces-pod-name> -n openshift-devspaces -- keytool -list -keystore /home/user/cacerts Your keystore contains 141 entries: + (...)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在本地文件系统中获取证书的 SHA1 哈希,请运行:
openssl x509 -in <certificate-file-path> -fingerprint -noout
$ openssl x509 -in <certificate-file-path> -fingerprint -noout SHA1 Fingerprint=3F:DA:BF:E7:A7:A7:90:62:CA:CF:C7:55:0E:1D:7D:05:16:7D:45:60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在工作区级别上验证导入的证书
- 启动工作区,获取创建它的项目名称并等待工作区启动。
获取工作区 Pod 的名称:
oc get pods -o=jsonpath='{.items[0].metadata.name}' -n <workspace namespace> | grep '^workspace.*'
$ oc get pods -o=jsonpath='{.items[0].metadata.name}' -n <workspace namespace> | grep '^workspace.*'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作区 Pod 中获取 Che-Theia IDE 容器的名称:
oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq -r '.spec.containers[] | select(.name | startswith("theia-ide")).name'
$ oc get -o json pod <workspace pod name> -n <workspace namespace> | \ jq -r '.spec.containers[] | select(.name | startswith("theia-ide")).name'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作区命名空间内查找
ca-certs
ConfigMap:oc get cm ca-certs <workspace namespace>
$ oc get cm ca-certs <workspace namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
ca-certs
ConfigMap 中的条目是否包含您之前添加的所有附加条目。另外,它可以包含ca-bundle.crt
reserved 条目。查看条目:oc get cm ca-certs -n <workspace namespace> -o json | jq -r '.data | keys[]'
$ oc get cm ca-certs -n <workspace namespace> -o json | jq -r '.data | keys[]' ca-bundle.crt source-config-map-name.data-key.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认
ca-certs
ConfigMap 已添加为工作区 Pod 中的卷:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确认卷已挂载到容器中,特别是 Che-Theia IDE 容器中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 Che-Theia IDE 容器中的
/public-certs
文件夹,并检查其内容是否与ca-certs
ConfigMap 中的条目列表匹配:oc exec <workspace pod name> -c <theia ide container name> -n <workspace namespace> -- ls /public-certs
$ oc exec <workspace pod name> -c <theia ide container name> -n <workspace namespace> -- ls /public-certs ca-bundle.crt source-config-map-name.data-key.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.4. 为 OpenShift 路由添加标签和注解 复制链接链接已复制到粘贴板!
如果您的组织需要,您可以配置 OpenShift Route 标签和注解。
先决条件
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 CLI 入门。 - 在 OpenShift 中运行的 OpenShift Dev Spaces 实例。
流程
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.5. 配置 OpenShift 路由以使用路由器分片 复制链接链接已复制到粘贴板!
您可以为 OpenShift Route 配置标签、注解和域,以用于 路由器分片。
先决条件
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。 -
dsc
.请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
配置
CheCluster
自定义资源。请参阅 第 3.1.2 节 “使用 CLI 配置 CheCluster 自定义资源”。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.8. 配置存储 复制链接链接已复制到粘贴板!
3.8.1. 配置存储类 复制链接链接已复制到粘贴板!
要将 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 Custom Resource 定义来定义存储类:
定义存储类名称:配置
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.yaml
fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
che-postgres-pv.yaml
文件中为 OpenShift Dev Spaces 工作区定义持久卷:Che-workspace-pv.yaml
文件Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您必须为卷提供有效的文件权限。您可以使用存储类配置或手动完成此操作。要手动定义权限,请定义 storageClass#mountOptions
uid
和 gid
。PostgreSQL 卷需要 uid=26
和 gid=26
。
3.9. 品牌 复制链接链接已复制到粘贴板!
3.9.1. branding Che-Theia 复制链接链接已复制到粘贴板!
本章论述了如何自定义 Che-Theia 接口和品牌。可以对以下元素进行自定义:
欢迎页面 和 关于 对话框:
- 产品名称
- 产品徽标
- 描述
- 有用资源列表( Welcome 页的Help 部分)
要使用自定义的 Che-Theia 启动:
- 使用自定义 Che-Theia 构建容器镜像。
-
定义使用自定义镜像的编辑器
meta.yaml
。 - 使用自定义编辑器从 devfile 创建工作区。
3.9.1.1. 为 Che-Theia 定义定制品牌值 复制链接链接已复制到粘贴板!
本节论述了如何自定义 Che-Theia 的基本品牌元素的定义。
流程
在 Welcome 页面( product.json
示例)上创建一个包含产品、徽标、描述和超链接列表的 product.json
文件:
对于 dark 和 light themes 只使用一个徽标镜像:
{ ... "logo": "product-logo.png" ... }
{
...
"logo": "product-logo.png"
...
}
3.9.1.2. 构建具有自定义品牌的 Che-Theia 容器镜像 复制链接链接已复制到粘贴板!
本节论述了如何构建具有应用自定义品牌的 Che-Theia 容器镜像。
先决条件
-
带有自定义品牌定义的
product.json
文件。
流程
-
下载
Dockerfile
示例。 -
在
Dockerfile
目录中,创建一个品牌/
子目录。将自定义product.json
文件和徽标镜像放在品牌/
目录中。 使用 Che-Theia 构建容器镜像,并将镜像推送到容器 registry:
podman build -t username/che-theia-devspaces:next . podman push username/che-theia-devspaces:next
$ podman build -t username/che-theia-devspaces:next . $ podman push username/che-theia-devspaces:next
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.9.1.3. 测试 Che-Theia with custom branding 复制链接链接已复制到粘贴板!
本节论述了如何通过打开带有自定义品牌的新工作区来测试自定义的 Che-Theia。
先决条件
- Che-Theia 容器镜像,使用自定义品牌定义构建。
流程
要测试自定义 Che-Theia 镜像,请创建一个描述自定义 cheEditor
的新 meta.yaml
文件,并在 devfile 中将它用于测试工作区。
克隆
che-plugin-registry
存储库,并检查要部署的版本。请参见:administration-guide:examples/snip_devspaces-clone-the-plug-in-registry-repository.adoc
-
打开
che-editors.yaml
文件。 -
编辑
id
等于eclipse/che-theia/next
条目,并替换containers
部分中的image
值以指向自定义 Che-Theia 容器镜像。 构建 registry:
administration-guide:examples/snip_devspaces-build-a-custom-plug-in-registry.adoc
-
进入
./dependencies/che-plugin-registry/v3/plugins/eclipse/che-theia/next
目录。 -
将这个目录中的
meta.yaml
文件发布到一个公开访问的位置,该位置可作为 HTTP 资源使用。 使用 che-theia-branding-example devfile 示例创建一个工作区来应用更改。
验证
reference
字段是否指向您公布的meta.yaml
文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行工作区以查看更改:
Che-Theia 的主题:
Che-Theia 的正常主题:
3.10. 管理身份和授权 复制链接链接已复制到粘贴板!
本节描述了管理 Red Hat OpenShift Dev Spaces 的身份和授权的不同方面。
3.10.1. OAuth 用于 GitHub、GitLab 或 Bitbucket 复制链接链接已复制到粘贴板!
允许用户使用远程 Git 存储库:
3.10.1.1. 为 GitHub 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用托管在 GitHub 上的远程 Git 存储库:
- 设置 GitHub OAuth 应用程序(OAuth 2.0)。
- 应用 GitHub OAuth 应用 Secret。
3.10.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>' | base64
Copy 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>' | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.1.1.2. 应用 GitHub OAuth 应用程序 Secret 复制链接链接已复制到粘贴板!
准备并应用 GitHub OAuth 应用 Secret。
先决条件
- 设置 GitHub OAuth 应用程序已完成。
设置 GitHub OAuth App 时生成的 Base64 编码值已准备好:
- GitHub OAuth 客户端 ID
- GitHub OAuth 客户端机密
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 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> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在输出中验证 Secret 是否已创建。
3.10.1.2. 为 GitLab 配置 OAuth 2.0 复制链接链接已复制到粘贴板!
允许用户使用使用 GitLab 实例托管的远程 Git 存储库:
- 设置 GitLab 授权应用程序(OAuth 2.0)。
- 应用 GitLab 授权应用程序 Secret。
3.10.1.2.1. 设置 GitLab 授权应用程序 复制链接链接已复制到粘贴板!
使用 OAuth 2.0 设置 GitLab 授权应用程序。
先决条件
- 已登陆到 GitLab。
-
base64
安装在您正在使用的操作系统中。
流程
- 点击您的 avatar 并前往 → 。
- 输入 OpenShift Dev Spaces 作为名称。
-
输入
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>' | base64
Copy 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>' | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
3.10.1.2.2. 应用 GitLab-authorized 应用程序 Secret 复制链接链接已复制到粘贴板!
准备并应用 GitLab-authorized 应用 Secret。
先决条件
- 设置 GitLab 授权应用程序已完成。
设置 GitLab 授权应用程序时生成的 Base64 编码值已准备好:
- GitLab 应用程序 ID
- GitLab 客户端机密
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 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> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在输出中验证 Secret 是否已创建。
3.10.1.3. 为 Bitbucket 配置 OAuth 1.0 复制链接链接已复制到粘贴板!
允许用户处理托管在 Bitbucket 服务器上的远程 Git 存储库:
- 设置 Bitbucket 应用程序链接(OAuth 1.0)。
- 应用 Bitbucket 应用链接 Secret。
3.10.1.3.1. 设置 Bitbucket 应用程序链接 复制链接链接已复制到粘贴板!
使用 OAuth 1.0 设置 Bitbucket 应用程序链接。
流程
在命令行中运行命令,为后续步骤创建必要的文件,并在应用 Bitbucket 应用程序链接 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。
- 选择 通用应用程序 作为 应用程序类型。
- 输入 OpenShift Dev Spaces 作为 Service Provider Name。
-
将
bitbucket-consumer-key
文件的内容粘贴为 Consumer 键。 -
将
bitbucket-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。 - 选中 Create incoming 链接 复选框,再单击 Continue。
-
将
bitbucket_consumer_key
文件的内容粘贴为 Consumer Key。 - 输入 OpenShift Dev Spaces 作为 Consumer 名称。
-
将
public-stripped.pub
文件的内容粘贴为 公钥,然后单击 Continue。
3.10.1.3.2. 应用 Bitbucket 应用程序链接 Secret 复制链接链接已复制到粘贴板!
准备并应用 Bitbucket 应用链接 Secret。
先决条件
- 设置 Bitbucket 应用链接已完成。
准备好设置 Bitbucket 应用程序链接时创建的以下 Base64 编码文件:
-
privatepkcs8-stripped.pem
-
bitbucket_consumer_key
-
bitbucket-shared-secret
-
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 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> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在输出中验证 Secret 是否已创建。
3.10.2. 配置管理用户 复制链接链接已复制到粘贴板!
要执行 OpenShift Dev Spaces 服务器上需要管理特权的操作,如删除用户数据,激活具有管理特权的用户。无论 OpenShift 中是否存在,默认安装为 admin
用户启用管理权限。
流程
配置
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.10.3. 删除用户数据 复制链接链接已复制到粘贴板!
3.10.3.1. 根据 GDPR 删除用户数据 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Dev Spaces API 删除 OpenShift Dev Spaces 用户数据。通过这个过程,服务符合欧盟的常规数据保护条例(GDPR),这些保护人员会强制个人清除个人数据。
先决条件
- 具有 OpenShift Dev Spaces 的管理权限的活跃会话。请参阅 第 3.10.2 节 “配置管理用户”。
-
具有 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 OpenShift CLI 入门。
流程
-
获取 < ;username> 用户 <
id
> id : 进入 https://<devspaces-<openshift_deployment_ name > . <domain_name> > /swagger/#/user/find_1,点 、设置 :<username > 并点 。向下滚动 Response 正文,以查找id
值。 -
删除 OpenShift Dev Spaces 服务器 管理的 <id > 用户数据,如用户首选项:导航到 https:// <devspaces-<openshift_deployment_name> . <domain_name> > /swagger/#/user/remove,点 , set id: <id>,然后点 。预期有
204
响应代码: 删除用户项目,以删除绑定到用户的所有 OpenShift 资源,如工作区、secret 和 configmaps。
oc delete namespace <username>-devspaces
$ oc delete namespace <username>-devspaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
若要管理 OpenShift Dev Spaces 服务器工作负载,可使用 Swagger Web 用户界面浏览 OpenShift Dev Spaces 服务器 API。
流程
-
进入 Swagger API web 用户界面
:https://devspaces- <openshift_deployment_name> . <domain_name>/swagger
.
其他资源
第 5 章 升级 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
本章论述了如何从 CodeReady Workspaces 2.15 升级到 OpenShift Dev Spaces 3.1。
5.1. 升级 dsc 管理工具 复制链接链接已复制到粘贴板!
这部分论述了如何升级 dsc
管理工具。
5.2. 为 Red Hat OpenShift Dev Spaces Operator 指定更新批准策略 复制链接链接已复制到粘贴板!
Red Hat OpenShift Dev Spaces Operator 支持两种升级策略:
自动
- Operator 可用时会安装新的更新。
Manual(手动)
- 安装开始前需要手动批准新的更新。
您可以使用 OpenShift Web 控制台为 Red Hat OpenShift Dev Spaces Operator 指定更新批准策略。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
- 使用红帽生态系统目录安装的 OpenShift Dev Spaces 实例。
流程
- 在 OpenShift Web 控制台中,导航到 → 。
- 点安装的 Operator 列表中的 Red Hat OpenShift Dev Spaces。
- 导航到 Subscription 选项卡。
-
将 Update approval 策略配置为
Automatic
或Manual
。
其他资源
5.3. 使用 OpenShift Web 控制台升级 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Web 控制台中的 Red Hat OpenShift Dev Spaces Operator 从以前的次版本手动批准升级。
先决条件
- 集群管理员的 OpenShift Web 控制台会话。请参阅 访问 Web 控制台。
- 使用红帽生态系统目录安装的 OpenShift Dev Spaces 实例。
-
订阅中的批准策略是
Manual
。请参阅 第 5.2 节 “为 Red Hat OpenShift Dev Spaces Operator 指定更新批准策略”。
流程
- 手动批准待处理的 Red Hat OpenShift Dev Spaces Operator 升级。请参阅 手动批准待处理的 Operator 升级。
验证步骤
- 导航到 OpenShift Dev Spaces 实例。
- 3.1 版本号在页面底部可见。
其他资源
5.4. 在 OpenShift 中修复 DevWorkspace Operator 复制链接链接已复制到粘贴板!
在某些情况下,如 OLM 重启或集群升级,OpenShift Dev Spaces 的 Dev Spaces Operator 可能会自动安装 DevWorkspace Operator,即使集群中已存在它也是如此。在这种情况下,您可以在 OpenShift 中修复 DevWorkspace Operator,如下所示:
先决条件
-
一个活跃的
oc
session,作为集群管理员到目标 OpenShift 集群。请参阅 CLI 入门。 - 在 OpenShift web 控制台的 Installed Operators 页面中,您会看到 DevWorkspace Operator 的多个条目,或处于 Replacing 和 Pending 的条目。
流程
-
删除包含故障 pod 的
devworkspace-controller
命名空间。 通过将转换策略设置为
None
并删除整个webhook
部分,更新DevWorkspace
和DevWorkspaceTemplate
自定义资源定义(CRD):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您可以通过在
→ 中搜索DevWorkspace
,在 OpenShift web 控制台的 Administrator 视角中查找并编辑DevWorkspace
和DevWorkspaceTemplate
CRD。注意DevWorkspaceOperatorConfig
和DevWorkspaceRouting
CRD 默认将转换策略设置为None
。删除 DevWorkspace Operator 订阅:
oc delete sub devworkspace-operator \ -n openshift-operators
$ oc delete sub devworkspace-operator \ -n openshift-operators
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 安装 DevWorkspace Operator 的
openshift-operators
或 OpenShift 项目。
以 < devworkspace-operator.vX.Y.Z > 格式获取 DevWorkspace Operator CSV:
oc get csv | grep devworkspace
$ oc get csv | grep devworkspace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除每个 DevWorkspace Operator CSV:
oc delete csv <devworkspace-operator.vX.Y.Z> \ -n openshift-operators
$ oc delete csv <devworkspace-operator.vX.Y.Z> \ -n openshift-operators
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 安装 DevWorkspace Operator 的
openshift-operators
或 OpenShift 项目。
重新创建 DevWorkspace Operator 订阅:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
自动或手动
重要对于
installPlanApproval: Manual
,在 OpenShift Web 控制台的 Administrator 视角中,进入 → ,再为 DevWorkspace Operator 选择以下内容: → → 。- 在 OpenShift Web 控制台的 Administrator 视角中,进入 → ,再验证 DevWorkspace Operator 的 Succeeded 状态。
第 6 章 卸载 OpenShift Dev Spaces 复制链接链接已复制到粘贴板!
卸载 OpenShift Dev Spaces 删除所有 OpenShift Dev Spaces 相关用户数据!
卸载 Red Hat OpenShift Dev Spaces 3.1 实例:
先决条件
-
具有目标 OpenShift 集群的管理权限的活跃
oc
会话。请参阅 CLI 入门。 -
dsc
.请参阅: 第 2.1 节 “安装 dsc 管理工具”。
流程
获取 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 从 < openshift-devspaces& gt; 项目中删除 OpenShift Dev Spaces 实例:
dsc server:delete -n <openshift-devspaces>
$ dsc server:delete -n <openshift-devspaces>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果 OpenShift Web 控制台安装了 OpenShift Dev Spaces,dsc
就不会卸载 DevWorkspace 操作器。要卸载 DevWorkspace Operator,请参阅 删除 DevWorkspace Operator 依赖项。