$ oc new-project vault
您可以使用以下方法在OpenShift Container Platform集群上创建Helm发行版
命令行界面。
Web控制台的**开发者**视角。
Web控制台**开发者**视角中的**开发者目录**显示集群中可用的Helm图表。默认情况下,它列出了来自Red Hat OpenShift Helm图表存储库的Helm图表。有关图表的列表,请参阅Red Hat Helm index
文件。
作为集群管理员,您可以添加多个集群范围和命名空间范围的Helm图表存储库(与默认的集群范围Helm存储库分开),并在**开发者目录**中显示这些存储库中的Helm图表。
作为具有相应基于角色的访问控制(RBAC)权限的普通用户或项目成员,您可以添加多个命名空间范围的Helm图表存储库(与默认的集群范围Helm存储库分开),并在**开发者目录**中显示这些存储库中的Helm图表。
在Web控制台的**开发者**视角中,您可以使用**Helm**页面来
使用**创建**按钮创建Helm发行版和存储库。
创建、更新或删除集群范围或命名空间范围的Helm图表存储库。
查看“存储库”选项卡中现有Helm图表存储库的列表,这些存储库也可以轻松区分是集群范围还是命名空间范围。
您有一个正在运行的OpenShift Container Platform集群,并且您已登录到该集群。
您已安装Helm。
创建一个新项目
$ oc new-project vault
将Helm图表的存储库添加到您的本地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!
验证图表是否已成功安装
$ 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
您可以使用Web控制台中的**开发者**视角或命令行界面从**开发者目录**中列出的Helm图表中选择并创建一个发行版。您可以通过安装Helm图表来创建Helm发行版,并在Web控制台的**开发者**视角中查看它们。
您已登录到Web控制台,并已切换到**开发者**视角。
要从**开发者目录**中提供的Helm图表创建Helm发行版
在**开发者**视角中,导航到**+添加**视图并选择一个项目。然后点击**Helm图表**选项以查看**开发者目录**中的所有Helm图表。
选择一个图表并阅读该图表的描述、自述文件和其他详细信息。
点击**创建**。
在**创建Helm发行版**页面中
在**发行版名称**字段中输入发行版的唯一名称。
从**图表版本**下拉列表中选择所需的图表版本。
使用**表单视图**或**YAML视图**配置您的 Helm chart。
在可用情况下,您可以在**YAML视图**和**表单视图**之间切换。在视图之间切换时,数据会持久保存。 |
单击**创建**以创建 Helm 版本。Web 控制台会在**拓扑**视图中显示新版本。
如果 Helm chart 包含发行说明,Web 控制台将显示它们。
如果 Helm chart 创建工作负载,Web 控制台会在**拓扑**或**Helm 版本详细信息**页面上显示它们。工作负载包括DaemonSet
、CronJob
、Pod
、Deployment
和DeploymentConfig
。
在**Helm 版本**页面查看新创建的 Helm 版本。
您可以使用侧面板上的**操作**按钮或右键单击 Helm 版本来升级、回滚或删除 Helm 版本。
您可以在 Web 控制台的**开发者**视角中访问 Web 终端来使用 Helm。
创建一个新项目
$ 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)
1 | chart 的 API 版本。对于至少需要 Helm 3 的 Helm chart,它应该是v2 。 |
2 | 您的 chart 的名称。 |
3 | 您的 chart 的描述。 |
4 | 用作图标的图像的 URL。 |
5 | 根据语义版本控制 (SemVer) 2.0.0 规范的 chart 版本。 |
验证 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
验证图表是否已成功安装
$ 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
作为集群管理员,您可以向集群添加自定义 Helm chart 仓库,并在**开发者目录**中启用对这些仓库中 Helm chart 的访问。
要添加新的 Helm Chart 仓库,您必须将 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 控制台中的**开发者目录**,以验证是否显示了来自 chart 仓库的 Helm chart。
例如,使用**Chart 仓库**过滤器搜索来自仓库的 Helm chart。
如果集群管理员删除所有 chart 仓库,则您将无法在**+添加**视图、**开发者目录**和左侧导航面板中查看 Helm 选项。 |
用于 Helm 仓库的集群范围HelmChartRepository
自定义资源定义 (CRD) 使管理员能够将 Helm 仓库添加为自定义资源。命名空间范围的ProjectHelmChartRepository
CRD 允许具有相应基于角色的访问控制 (RBAC) 权限的项目成员创建他们选择的 Helm 仓库资源,但范围限于其命名空间。此类项目成员可以查看来自集群范围和命名空间范围 Helm 仓库资源的 chart。
|
作为具有相应 RBAC 权限的普通用户或项目成员,您可以向集群添加自定义命名空间范围的 Helm chart 仓库,并在**开发者目录**中启用对这些仓库中 Helm chart 的访问。
要添加新的命名空间范围 Helm Chart 仓库,您必须将 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 仓库 CR
projecthelmchartrepository.helm.openshift.io/azure-sample-repo created
导航到 Web 控制台中的**开发者目录**,以验证是否在您的my-namespace
命名空间中显示了来自 chart 仓库的 Helm chart。
例如,使用**Chart 仓库**过滤器搜索来自仓库的 Helm chart。
或者,运行
$ oc get projecthelmchartrepositories --namespace my-namespace
NAME AGE azure-sample-repo 1m
如果集群管理员或具有相应 RBAC 权限的普通用户删除特定命名空间中的所有 chart 仓库,则您将无法在该特定命名空间的**+添加**视图、**开发者目录**和左侧导航面板中查看 Helm 选项。 |
某些 Helm chart 仓库需要凭据和自定义证书颁发机构 (CA) 证书才能连接到它。您可以使用 Web 控制台以及 CLI 来添加凭据和证书。
要配置凭据和证书,然后使用 CLI 添加 Helm chart 仓库
在openshift-config
命名空间中,创建一个包含 PEM 编码格式自定义 CA 证书的ConfigMap
对象,并将其存储在 config map 中的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
config map 和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
您可以在**开发者目录**中根据其认证级别过滤 Helm chart。
在开发者视角中,导航到+添加视图并选择一个项目。
在开发者目录磁贴中,选择Helm Chart选项以查看开发者目录中的所有Helm图表。
使用Helm图表列表左侧的过滤器来筛选所需的图表。
使用图表仓库过滤器来筛选由Red Hat认证图表或OpenShift Helm图表提供的图表。
使用来源过滤器来筛选来自合作伙伴、社区或Red Hat的图表。经过认证的图表用以下图标表示:()。
当只有一个提供程序类型时,来源过滤器将不可见。 |
您现在可以选择所需的图表并安装它。
您可以通过将HelmChartRepository
自定义资源中的disabled
属性设置为true
来禁用目录中特定Helm图表仓库中的Helm图表。
要使用CLI禁用Helm图表仓库,请将disabled: true
标志添加到自定义资源。例如,要删除Azure示例图表仓库,请运行
$ 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图表仓库
转到自定义资源定义并搜索HelmChartRepository
自定义资源。
转到实例,找到要禁用的仓库,然后单击其名称。
转到YAML选项卡,在spec
部分添加disabled: true
标志,然后单击保存
。
spec: connectionConfig: url: <url-of-the-repositoru-to-be-disabled> disabled: true
该仓库现在已禁用,并且不会出现在目录中。