使用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名工程师。虽然是初创公司,但工作环境非常好,易于相处。
零元银行日本有限公司