步骤一:安装Helm 3
首先,为了能够使用Helm 3的5个关键新特性,我们需要先安装Helm 3。具体安装步骤可以参考官方文档 https://v3.helm.sh/docs/intro/install/ ,这里不再赘述。安装完成后,可以使用命令`helm version`来查看Helm的版本信息,确保安装成功。
步骤二:使用CRDs来管理Kubernetes资源
Helm 3的一个重要的新特性是支持使用CRDs(Custom Resource Definitions 自定义资源定义)来管理Kubernetes资源。这意味着Helm 3不仅可以管理标准资源对象,还可以管理自定义的资源对象。具体操作方法如下:
1. 创建一个CRD的定义文件(例如`my-resource-crd.yaml`),内容类似于下面这样:
“`
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: myresources.example.com
spec:
group: example.com
versions:
– name: v1
served: true
storage: true
scope: Namespaced
names:
plural: myresources
singular: myresource
kind: MyResource
shortNames:
– mr
“`
2. 将该CRD资源对象(`my-resource-crd.yaml`)添加到Kubernetes集群中:
“`
kubectl apply -f my-resource-crd.yaml
“`
3. 现在,可以使用Helm 3来部署和管理自定义的资源类型。例如,我们可以使用自定义资源类型`MyResource`创建一个名为`my-resource`的资源对象:
“`
helm install my-resource mychart –set myresource.enable=true
“`
其中,`mychart`是我们自己编写的Helm Chart,里面包含了`MyResource`资源的定义和管理逻辑。
步骤三:禁止Tiller
Helm 3删除了Tiller(之前版本中用于管理部署的服务端组件),这个改变使得更加安全。现在,Helm 3中的所有部署操作都是在客户端完成的,没有服务端组件的存在,使得攻击者很难利用漏洞进行攻击。为了禁止Tiller,在配置文件`.helm/helm.yaml`中,我们可以添加以下内容:
“`
install:
disableHooks: true
“`
此外,在环境变量中设置以下参数也可以达到同样的目的:
“`
export HELM_DRIVER = "secret"
“`
步骤四:使用库/子图表管理
另一个有用的新特性是可以使用Helm 3的库/子图表管理功能来重用模板和图表代码。这可以使Helm Chart开发更加高效和灵活,减少代码重复和维护工作量。具体操作方法如下:
1. 创建一个新的库/子图表(例如`mylib`):
“`
helm create mylib
“`
2. 现在,我们可以重用`mylib`中的内容,例如:
“`
# 可以在Helm Chart中引用mylib
dependencies:
– name: mylib
version: "1.0.0"
repository: "file://../mylib"
“`
步骤五:使用Helm 3的命名空间隔离特性
Helm 3还提供了隔离命名空间的功能,可以让你在不同的Kubernetes命名空间下使用不同的Helm Chart。具体操作方法如下:
1. 创建一个或多个命名空间(例如`prod`和`test`):
“`
kubectl create ns prod
kubectl create ns test
“`
2. 在配置文件`.helm/helm.yaml`中指定使用哪个命名空间:
“`
env:
– name: HELM_NAMESPACE
value: "prod" # 或者 "test"
“`
现在,当我们使用Helm来部署应用程序时,就会在指定的命名空间中创建和管理所有相关的Kubernetes资源。例如:
“`
helm install myapp mychart
“`
这个命令将会在`prod`或`test`命名空间中创建相关的资源对象。