7.3. 配置自定义 Helm Chart 仓库
您可以使用以下方法在 OpenShift Container Platform 集群上安装 Helm chart:
- CLI。
- Web 控制台的 Developer 视角。
在 web 控制台的 Developer 视角中, Developer Catalog 显示集群中可用的 Helm chart。默认情况下,它会从 Red Hat OpenShift Helm Chart 仓库中列出 Helm chart。如需 chart 列表,请参阅 Red Hat Helm index
文件。
作为集群管理员,您可以添加多个集群范围的 Helm Chart 仓库,与默认的集群范围 Helm 仓库分开,并在 Developer Catalog 中显示这些仓库中的 Helm chart。
作为具有适当基于角色的访问控制(RBAC)权限的普通用户或项目成员,您可以添加多个命名空间范围的 Helm Chart 仓库,除了默认的集群范围的 Helm 仓库,并在 Developer Catalog 中显示这些仓库中的 Helm chart。
7.3.1. 在 OpenShift Container Platform 集群中安装 Helm chart
先决条件
- 您有一个正在运行的 OpenShift Container Platform 集群,并已登录该集群。
- 您已安装 Helm。
流程
创建一个新项目:
$ oc new-project vault
将一个 Helm chart 存储库添加到本地 Helm 客户端:
$ helm repo add openshift-helm-charts https://charts.openshift.io/
输出示例
"openshift-helm-charts" has been added to your repositories
更新存储库:
$ helm repo update
安装 HashiCorp Vault 示例:
$ helm install example-vault openshift-helm-charts/hashicorp-vault
输出示例
NAME: example-vault LAST DEPLOYED: Fri Mar 11 12:02:12 2022 NAMESPACE: vault STATUS: deployed REVISION: 1 NOTES: Thank you for installing HashiCorp Vault!
验证 chart 是否已成功安装:
$ helm list
输出示例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION example-vault vault 1 2022-03-11 12:02:12.296226673 +0530 IST deployed vault-0.19.0 1.9.2
7.3.2. 使用 Developer 视角安装 Helm chart
您可以使用 web 控制台中的 Developer 视角或 CLI 从 Developer Catalog 中列出的 Helm chart 中选择并安装 chart。您可以通过安装 Helm chart 来创建 Helm 发行版本,并在 web 控制台的 Developer 视角中查看它们。
先决条件
- 已登陆到 web 控制台并切换到 Developer 视角。
流程
通过 Developer Catalog 提供的 Helm chart 来创建 Helm 发行版本:
- 在 Developer 视角中,进入 +Add 视图并选择一个项目。然后点击 Helm Chart 选项来查看 Developer Catalog 中的所有 Helm Chart。
- 选择一个 chart,查看它的描述信息、README 和其他与之相关的信息。
点 Install Helm Chart。
图 7.1. Developer Catalog 中的 Helm chart
在 Install Helm Chart 页面中:
- 在 Release Name 项中输入 release 的唯一名称。
- 从 Chart Version 下拉列表中选择所需的 chart 版本。
使用 Form View 或 YAML View 配置 Helm Chart。
注意在可用情况下,您可以在 YAML View 和 Form View 间切换。在不同视图间切换时数据会被保留。
- 点击 Install 创建 Helm release。Topology 视图将会显示,其中包括了发行版本。如果 Helm chart 带有发行注记,则 chart 会被预先选择,右侧面板会显示该发行版本的发行注记。
您可以使用侧面面板上的 Actions 按钮或右键点击 Helm 发行版本来升级、回滚或卸载 Helm 发行版本。
7.3.3. 在 web 终端中使用 Helm
您可以通过在 web 控制台的 Developer 视角中访问 web 终端 来使用 Helm。
7.3.4. 在 OpenShift Container Platform 上创建自定义 Helm chart
流程
创建一个新项目:
$ oc new-project nodejs-ex-k
下载包含 OpenShift Container Platform 对象的示例 Node.js chart:
$ git clone https://github.com/redhat-developer/redhat-helm-charts
进入包含 chart 示例的目录:
$ cd redhat-helm-charts/alpha/nodejs-ex-k/
编辑
Chart.yaml
文件并添加 chart 描述:apiVersion: v2 1 name: nodejs-ex-k 2 description: A Helm chart for OpenShift 3 icon: https://static.redhat.com/libs/redhat/brand-assets/latest/corp/logo.svg 4 version: 0.2.1 5
验证 chart 格式是否正确:
$ helm lint
输出示例
[INFO] Chart.yaml: icon is recommended 1 chart(s) linted, 0 chart(s) failed
前往上一个目录级别:
$ cd ..
安装 chart:
$ helm install nodejs-chart nodejs-ex-k
验证 chart 是否已成功安装:
$ helm list
输出示例
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION nodejs-chart nodejs-ex-k 1 2019-12-05 15:06:51.379134163 -0500 EST deployed nodejs-0.1.0 1.16.0
7.3.5. 添加自定义 Helm Chart 仓库
作为集群管理员,您可以将自定义 Helm Chart 存储库添加到集群中,并在 Developer Catalog 中启用从这些仓库中获得 Helm chart 的访问权限。
流程
要添加新的 Helm Chart 仓库,您必须将 Helm Chart 仓库自定义资源(CR)添加到集群中。
Helm Chart 仓库 CR 示例
apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <name> spec: # optional name that might be used by console # name: <chart-display-name> connectionConfig: url: <helm-chart-repository-url>
例如,要添加 Azure 示例 chart 存储库,请运行:
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
导航到 web 控制台中的 Developer Catalog,以验证是否已显示 Helm chart 存储库中的 Helm chart。
例如,使用 Chart 仓库 过滤器从仓库搜索 Helm chart。
图 7.2. Chart 软件仓库过滤器
注意如果集群管理员删除了所有 chart 仓库,则无法在 +Add 视图、Developer Catalog 和左面的导航面板中查看 Helm 选项。
7.3.6. 添加命名空间范围的自定义 Helm Chart 仓库
Helm 仓库的集群范围的 HelmChartRepository
自定义资源定义(CRD)可帮助管理员将 Helm 仓库添加为自定义资源。命名空间范围的 ProjectHelmChartRepository
CRD 允许具有适当基于角色的访问控制(RBAC)权限的项目成员创建其所选 Helm 仓库资源,但仅限于其命名空间。此项目成员可从集群范围和命名空间范围 Helm 仓库资源中看到 chart。
- 管理员可以限制用户创建命名空间范围的 Helm 仓库资源。通过限制用户,管理员具有通过命名空间角色而不是集群角色来控制 RBAC 的灵活性。这可避免用户不必要的权限,并防止访问未经授权的服务或应用程序。
- 添加命名空间范围的 Helm 仓库不会影响现有集群范围的 Helm 仓库的行为。
作为具有适当 RBAC 权限的普通用户或项目成员,您可以在集群中添加自定义命名空间范围的 Helm Chart 仓库,并在 Developer Catalog 中启用这些仓库中的 Helm chart 访问 Helm chart。
流程
要添加新的命名空间范围的 Helm Chart 仓库,您必须将 Helm Chart 仓库自定义资源(CR)添加到命名空间中。
命名空间范围的 Helm Chart 仓库 CR 示例
apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: <name> spec: url: https://my.chart-repo.org/stable # optional name that might be used by console name: <chart-repo-display-name> # optional and only needed for UI purposes description: <My private chart repo> # required: chart repository URL connectionConfig: url: <helm-chart-repository-url>
例如,要将 Azure 示例 chart 存储库添加到
my-namespace
命名空间,请运行:$ cat <<EOF | oc apply --namespace my-namespace -f - apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
检查输出来验证是否创建了命名空间范围的 Helm Chart Repository CR:
输出示例
projecthelmchartrepository.helm.openshift.io/azure-sample-repo created
导航到 web 控制台中的 Developer Catalog,以验证
my-namespace
命名空间中是否显示了来自 Chart 仓库的 Helm chart。例如,使用 Chart 仓库 过滤器从仓库搜索 Helm chart。
图 7.3. 命名空间中的 Chart 软件仓库过滤器
或者,运行:
$ oc get projecthelmchartrepositories --namespace my-namespace
输出示例
NAME AGE azure-sample-repo 1m
注意如果集群管理员或具有适当 RBAC 权限的常规用户删除特定命名空间中的所有 chart 存储库,那么您无法查看 +Add 视图、Developer Catalog 以及用于该特定命名空间的左侧导航面板中的 Helm 选项。
7.3.7. 创建凭证和 CA 证书以添加 Helm Chart 仓库
有些 Helm Chart 仓库需要凭证和自定义证书颁发机构(CA)证书才能与其连接。您可以使用 Web 控制台和 CLI 添加凭证和证书。
流程
配置凭证和证书,然后使用 CLI 添加 Helm Chart 仓库:
在
openshift-config
命名空间中,使用 PEM 编码格式的自定义 CA 证书创建一个configmap
,并将它存储在配置映射中的ca-bundle.crt
键下:$ oc create configmap helm-ca-cert \ --from-file=ca-bundle.crt=/path/to/certs/ca.crt \ -n openshift-config
在
openshift-config
命名空间中,创建一个Secret
对象来添加客户端 TLS 配置:$ oc create secret tls helm-tls-configs \ --cert=/path/to/certs/client.crt \ --key=/path/to/certs/client.key \ -n openshift-config
请注意:客户端证书和密钥必须采用 PEM 编码格式,并分别保存在
tls.crt
和tls.key
密钥中。按如下所示添加 Helm 仓库:
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <helm-repository> spec: name: <helm-repository> connectionConfig: url: <URL for the Helm repository> tlsConfig: name: helm-tls-configs ca: name: helm-ca-cert EOF
ConfigMap
和Secret
使用tlsConfig
和ca
字段在 HelmChartRepository CR 中消耗。这些证书用于连接 Helm 仓库 URL。默认情况下,所有经过身份验证的用户都可以访问所有配置的 chart。但是,对于需要证书的 Chart 仓库,您必须为用户提供对
openshift-config
命名空间中helm-ca-cert
配置映射和helm-tls-configs
secret 的读取访问权限,如下所示:$ cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["helm-ca-cert"] verbs: ["get"] - apiGroups: [""] resources: ["secrets"] resourceNames: ["helm-tls-configs"] verbs: ["get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: 'system:authenticated' roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: helm-chartrepos-tls-conf-viewer EOF
7.3.8. 根据它们的认证级别过滤 Helm Chart
您可以在 Developer Catalog 中根据它们的认证级别过滤 Helm chart。
流程
- 在 Developer 视角中,进入 +Add 视图并选择一个项目。
- 在 Developer Catalog 标题中,选择 Helm Chart 选项来查看 Developer Catalog 中的所有 Helm chart。
使用 Helm chart 列表左侧的过滤器过滤所需的 chart:
- 使用 Chart Repositories 过滤器过滤由 Red Hat Certification Charts 或 OpenShift Helm Charts 提供的 chart。
- 使用 Source 过滤器过滤来自 合作伙伴、 社区 或 红帽 的 chart。认证图表显示为( )图标。
如果只有一个供应商类型,则 Source 过滤器不可见。
现在,您可以选择所需的 chart 并安装它。
7.3.9. 禁用 Helm Chart 仓库
您可以通过将 HelmChartRepository
自定义资源中的 disabled
属性设置为 true
,从目录中的特定 Helm Chart 仓库禁用 Helm Charts。
流程
要通过 CLI 禁用 Helm Chart 仓库,将
disabled: true
标志添加到自定义资源中。例如,要删除 Azure 示例 chart 存储库,请运行:$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: connectionConfig: url:https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs disabled: true EOF
使用 Web 控制台禁用最近添加的 Helm Chart 仓库:
-
进入 自定义资源定义 并搜索
HelmChartRepository
自定义资源。 - 进入 实例,找到您要禁用的存储库,并点击其名称。
进入 YAML 选项卡,在
spec
部分添加disabled: true
标志,点Save
。示例
spec: connectionConfig: url: <url-of-the-repositoru-to-be-disabled> disabled: true
现在,这个仓库已被禁用,并不会出现在目录中。
-
进入 自定义资源定义 并搜索