了解Helm 3的5个关键新特性是不可避免的

步骤一:安装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`命名空间中创建相关的资源对象。

Related Posts

  • 使用git difftool进行差异比较,以避免推送无关内容
  • 提示工程请求GPT返回Json格式的数据
  • 小程序数据导出文档
  • 源码提供打车系统、网约车系统、APP、公众号、H5小程序版本的开发支持
  • 如何在SpringBoot中使用MQTT来订阅和发布消息
  • 使用 Deepin 图形界面部署单节点 Hadoop 集群
  • 技巧性能优化在即时通讯开发中的应用
  • 建立hadoop1.2.1的伪分布式环境
  • Linux进程的信号处理
  • 解析SMB协议:SMB/CIFS/SMB2/NFS/Samba/Netbios/NTLM/Kerberos之间的联系和差异
  • 实验目的是通过静态路由配置,建立多个路由器的网络拓扑,实现不同业务网段之间的互通
  • 使用LabVIEW实现16APSK和32APSK调制解调的USRP教程
  • 详细解析git文件夹中的内容
  • 搭建你自己的仪表盘-dashy
  • 视频介绍了如何使用 Prometheus 和 Grafana 监控用户应用的自定义观测指标在 OpenShift 4 上
  • 基础电子知识部分适用于初级电工