Helm-从0手动创建charts

这篇具有很好参考价值的文章主要介绍了Helm-从0手动创建charts。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Helm-从0手动创建charts

创建 chart 目录结构:

mkdir my-nginx
cd my-nginx

创建 Chart.yaml :

cat > Chart.yaml << EOF
apiVersion: v2
appVersion: v1.0
description: A Helm chart for Kubernetes
name: nginx-app
version: 0.1.0
EOF

创建 templates 目录:

[root@master my-nginx]# mkdir templates

创建 deployment.yaml:

[root@master my-nginx]# kubectl create deploy my-nginx --image nginx --dry-run=client -o yaml > templates/deployment.yaml
[root@master my-nginx]# cat templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: my-nginx
  name: my-nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: my-nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}
[root@master my-nginx]# tree ~/my-nginx/
/root/my-nginx/
├── Chart.yaml
└── templates
    └── deployment.yaml

以上完成后就可以使用 helm 部署,部署名为 my-nginx 的应用:

[root@master my-nginx]# helm install my-nginx .
NAME: my-nginx
LAST DEPLOYED: Tue Dec  6 17:03:59 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

查看创建的应用:

[root@master my-nginx]# helm ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART               APP VERSION
my-nginx        default         1               2022-12-06 17:03:59.142846484 +0800 CST deployed        nginx-app-0.1.0     v1.0

查看创建的实际资源:

[root@master my-nginx]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-6b74b79f57-lccqb   1/1     Running   0          78s

继续创建 service.yaml:

[root@master01 my-nginx]# kubectl expose deploy my-nginx --port 80 --dry-run=client -o yaml > templates/service.yaml
[root@master my-nginx]# cat templates/service.yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: my-nginx
    app.kubernetes.io/managed-by: Helm
  name: my-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: my-nginx
status:
  loadBalancer: {}

创建 values.yaml:

cat > values.yaml << EOF
replicaCount: 2
service:
  type: NodePort
  nodePort: 30080
EOF

修改 deployment.yaml,注入变量,改为模板形式:

[root@master my-nginx]# cat templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: my-nginx
  name: my-nginx
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: my-nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: my-nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

修改 service.yaml,注入变量,改为模板形式:

[root@master my-nginx]# cat templates/service.yaml 
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: my-nginx
  name: my-nginx
spec:
  type: {{ .Values.service.type }}
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
    nodePort: {{ .Values.service.nodePort }}
  selector:
    app: my-nginx
status:
  loadBalancer: {}

此时的目录结构:

[root@master my-nginx]# tree
.
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

修改后可升级 helm 版本,也可以删除原 helm 重新部署:

[root@master my-nginx]# helm upgrade my-nginx .
Release "my-nginx" has been upgraded. Happy Helming!
NAME: my-nginx
LAST DEPLOYED: Tue Dec  6 17:12:34 2022
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

查看升级后的信息,REVISION 版本变为 2。

[root@master my-nginx]# helm ls
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART               APP VERSION
my-nginx        default         2               2022-12-06 17:12:34.223199278 +0800 CST deployed        nginx-app-0.1.0     v1.0

查看创建的资源,副本扩容为 2,新创建了 NodePort 类型的 service:

[root@master my-nginx]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-6b74b79f57-h7gtb   1/1     Running   0          18s
my-nginx-6b74b79f57-lccqb   1/1     Running   0          26m

[root@master my-nginx]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        134m
my-nginx     NodePort    10.102.132.43   <none>        80:30080/TCP   17m

访问应用:文章来源地址https://www.toymoban.com/news/detail-566085.html

# curl http://ip:nodeport
[root@master my-nginx]# curl http://192.168.226.201:30080
[root@master my-nginx]# curl http://192.168.226.202:30080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
# 卸载
[root@master ~]# helm uninstall my-nginx
release "my-nginx" uninstalled
# 当您编辑chart时,可以通过运行helm lint来验证它的格式是否正确
[root@master my-nginx]# helm lint
==> Linting .
[INFO] Chart.yaml: icon is recommended

1 chart(s) linted, 0 chart(s) failed
# 当需要打包chart以进行分发时,可以运行helm package命令
[root@master ~]# helm package my-nginx
Successfully packaged chart and saved it to: /root/nginx-app-0.1.0.tgz
# 现在可以通过helm install命令轻松安装该chart
[root@master ~]# helm install my-nginx ./nginx-app-0.1.0.tgz
NAME: my-nginx
LAST DEPLOYED: Wed Dec  7 13:29:05 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

到了这里,关于Helm-从0手动创建charts的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Devops系列二(使用helm chart,将java应用发布部署至k8s的示例)

    docker镜像已经有了,本文我们将接着演示如何使用helm部署应用到k8s。 分为两大部分: 制作helm chart,推送到私有仓库nexus helm拉取chart,部署到k8s 要求你先安装helm,随便一台linux机器即可,不要求你要有k8s或者docker环境。 这里,我删除了没用到的一些文件,最后保留的见下:

    2024年02月12日
    浏览(36)
  • Helm Dashboard — Kubernetes 中管理 Helm 版本的 GUI

    Helm Dashboard 通过提供图形用户界面,使在 Kubernetes 中管理 Helm 版本变得更加容易,这是许多开发人员所期望的。它可用于在 Kubernetes 中创建、部署和更新应用程序的版本,并跟踪其状态。 本文将探讨 Helm Dashboard 提供的特性和优势,并解释如何使用它来促进 Kubernetes 应用程序

    2024年01月20日
    浏览(40)
  • Kubernetes 之 Helm

    什么是 Helm 每个成功的软件平台都有一个优秀的打包系统,比如Debian、Ubuntu 的 apt,RedHat、CentOS 的 yum。Helm 则是 Kubernetes上 的包管理器,方便我们更好的管理应用。 在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐。 况且随着很多项目

    2024年02月16日
    浏览(32)
  • Kubernetes管理工具Helm

    Helm 是一个用于管理 Kubernetes 应用程序的工具,它提供了一种简化和自动化部署的方式。在本文中,我将总结一下我使用 Helm 的经验和教训。 首先,我要说的是 Helm 的安装非常简单。你只需要下载并安装 Helm 的二进制文件,然后运行几个命令即可完成安装。而且,Helm 还提供

    2024年02月12日
    浏览(42)
  • kubernetes基于helm部署gitlab

    这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab。 先决条件 已运行的 Kubernetes 集群 负载均衡器,为ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb 默认存储类,为gitlab pods提供持久化存储,本示例使用nfs-csi 项目地址:https://gitlab.com/gitlab-org/charts/gitlab/-/tree/master/charts/gi

    2024年02月14日
    浏览(32)
  • 【云原生】Kubernetes应用包管理器Helm

    目录 一、Helm概述 1.1 为什么需要Helm? 1.2 Helm 介绍 1.3 Helm v3 变化 1.4 Helm客户端 1.4.1、部署Helm客户端 1.4.2、Helm常用命令 1.4.3、配置国内Chart仓库 二、Helm基本使用 2.1 Helm基本使用 2.1.1、使用chart部署一个应用 2.1.2、安装前自定义chart配置选项 2.1.3、构建一个Helm Chart 2.1.4、升级、

    2024年02月08日
    浏览(34)
  • Kubernetes 使用 helm 部署 NFS Provisioner

    NFS subdir external provisioner 使用现有且已配置的NFS 服务器来支持通过持久卷声明动态配置 Kubernetes 持久卷。持久卷配置为 ${namespace}-${pvcName}-${pvName} . 变量配置: Variable Value nfs_provisioner_namespace nfsstorage nfs_provisioner_role nfs-provisioner-runner nfs_provisioner_serviceaccount nfs-provisioner nfs_prov

    2024年02月16日
    浏览(31)
  • Kubernetes中使用Helm2的安全风险

    参考 http://rui0.cn/archives/1573 英文文章  https://blog.ropnop.com/attacking-default-installs-of-helm-on-kubernetes/ 集群后渗透测试资源 https://blog.carnal0wnage.com/2019/01/kubernetes-master-post.html 简述攻击过程: 使用Helm2会创建一个集群管理员权限的Tiller账号,基于这个Helm2在集群中创建的资源Pod中,默

    2023年04月21日
    浏览(26)
  • kubernetes基于helm部署gitlab-operator

    这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-operator。 先决条件 已运行的 Kubernetes 集群 负载均衡器,为ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb 默认存储类,为gitlab pods提供持久化存储,本示例使用openebs cert-manager,为gitlab提供自签名证书 项目地址:https://gitl

    2024年02月14日
    浏览(25)
  • Kubernetes技术--k8s核心技术Helm

    1.引入 我们先回顾一下之前部署 一个应用 的过程,如部署nginx,实现效果如下所示: -1.编写deployment的yaml文件,然后运行。 -2.使用service中的NodePort对外暴漏端口 -3.为了弥补Nodeport的缺陷,使用ingress实现转发        这样一个应用就部署完了,这一种情况相对于如果你需要部署

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包