使用Helm3可以轻松在Kubernetes上部署Grafana,就像种番茄一样简单

Helm从2升级到3,Tiller先生被解雇了。
我认为Helm难以上手的原因在很大程度上是因为Tiller先生,所以这次升级非常好,不是吗?再见,Tiller先生,你是个好家伙!愿你安息!

因此,我在Helm 3中尝试部署了一个在Kubernetes环境中非常受欢迎的监控工具Grafana,发现它如此简单易用,让我感到非常震撼,所以我想写下来分享一下。

前提条件

    • kubernetesのクラスタが構築されていること

 

    helm3がインストールされていること

建立

# repoにstableを追加
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com/
# 確認
$ helm repo ls
NAME        URL                                              
stable      https://kubernetes-charts.storage.googleapis.com/

# いちおupdateしておく
$ helm repo update

# change directoryしとく
$ cd <grafanaをfetchするディレクトリ>
# ローカルにfetchする
$ helm fetch stable/grafana

把下载的.tar文件解压缩,然后会出现一个名为values.yaml的文件,为了保险起见,我们将默认值复制并保留下来。

$ cp values.yaml values_default.yaml

values.yaml文件的配置

因为在values.yaml文件中写有各种配置值,所以可以使用VSCode等编辑器进行修改。

以下是主要的变更(仅举一个例子)

服务

service:
  type: NodePort
  selector:
    app: grafana
  port: 80
  targetPort: 3000
    # targetPort: 4181 To be used with a proxy extraContainer
  annotations: {}
  labels:
    app: grafana
  portName: grafana-port

为了通过子目录访问,将ClusterIP更改为NodePort。
如果想要通过独立的URL进行访问,请指定LoadBalancer。
我还添加了选择器、标签和端口名称的设置。

进入

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/whitelist-source-range:  "xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx"

  labels: {}
  path: /
  hosts:
    - tomatotomatotomato.com
  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
  extraPaths: 
    - path: /grafana
      backend:
        serviceName: grafana
        servicePort: grafana-port
  tls:
    - secretName: tomato-ns/tomato-cert 
      hosts:
        - tomatotomatotomato.com

首先,默认情况下是false,所以将其设置为true。
可以通过nginx.ingress.kubernetes.io/whitelist-source-range来创建IP限制的白名单。
同时设置子目录/grafana,并完成主机的SSL证书设置和其他相关配置即可。

坚持不懈

persistence:
  type: pvc
  enabled: true
  storageClassName: default
  accessModes:
    - ReadWriteOnce
  size: 100Gi
  # annotations: {}
  finalizers:
    - kubernetes.io/pvc-protection
  # subPath: ""
  # existingClaim:

这是设置永久化Volume的选项。
没有这个选项的话,当Pod重新启动时,Grafana的设置将会全部丢失。哈哈
换句话说,这是必需的。(默认情况下是false的…)

可以使用storageClassName来作为重点,这个在不同的云平台上是不同的。
可以使用以下命令确认可用的storageClassName。
也可以自己创建定义。

$ kubectl get storageclasses
NAME                PROVISIONER                AGE
default (default)   kubernetes.io/azure-disk   34h
managed-premium     kubernetes.io/azure-disk   34h

密码

adminUser: admin
adminPassword: *****

这是管理员的默认密码。
默认情况下,它是一个叫做strongpassword的密码,不知道是强密码还是弱密码。
虽然这样也行,但是如果不知道写在这里的内容,我觉得永远无法登录,所以我还是写下来了。

Grafana配置文件

grafana.ini
~
  auth.basic:
    enabled: true
  auth.anonymous:
    enabled: false
  auth.saml:
    enabled: true
  smtp:
    enabled: true
    host: "smtp.gmail.com:587"
    user: "alert@tomato.com"
    password: "Gmailの16桁のアプリケーションパスワード"
    from_address: "alert@tomato.com"
    from_name: "Grafana"
    skip_verify: false

保留默认设置,并添加上述内容。
这是在Gmail上的设置示例。在Gmail的情况下,需要一个名为应用程序密码的东西,但我认为你只需要在Google上搜索一下,就会有很多出来,所以这里省略了。

数据源

datasources: 
  datasources.yaml:
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      url: http://pg-prometheus:9090
      access: proxy
      isDefault: true

如果您使用Prometheus等,您可以在这里配置数据源。
但是,由于只能通过helm进行更新,所以建议您稍后通过UI进行配置。

冲啊啊啊墙!! a a a !!)

材料准备齐全了,现在可以开始安装了。可以自由选择所需的命名空间!

$ helm install -name grafana --namespace monitoring -f values.yaml stable/grafana

如果想要更改values.yaml并进行更新,请参考以下步骤。

helm upgrade -name grafana --namespace monitoring -f values.yaml  stable/grafana

⎈幸福的帆船航行!⎈

由于这次设置在子目录中,所以可以通过以下URL轻松访问:
例:https://tomatotomatotomato.com/grafana

有了 Tiller 先生過世的消息,我感到一下子輕鬆了許多。Helm3 真是太棒了!比切蕃茄還簡單!

再见?‍♂️

最后

在ZEROBILLBANK,我们正在招募一起工作的伙伴。
工作内容是使用JavaScript、区块链、Kubernetes等创建各种API。
目前我们有大约5名工程师。虽然是初创公司,但工作环境非常好,易于相处。

零元银行日本有限公司

广告
将在 10 秒后关闭
bannerAds