2017-05-29 50 views
0

我在我的Kubernetes集群中运行grafana作为pod。一旦Grafana被初始化,它会在本地主机上创建一个数据库并保存所有数据。这意味着无论何时一个吊舱被销毁并重新创建,整个数据库都将重新初始化,并且我失去了以前的所有数据。在部署/创建pod之前编辑配置文件里面的图像

荚内的grafana配置为DB是::

#################################### Database #################################### 
[database] 
# Either "mysql", "postgres" or "sqlite3", it's your choice 
;type = sqlite3 
;host = 127.0.0.1:3306 
;name = grafana 
;user = root 
;password = 

中序摆脱这个问题,我要创建一个外部数据库,并指出我的Grafana使用该数据库实例每次我创建格拉法纳豆荚。我现在的默认实现创建Grafana荚::

apiVersion: v1 
kind: Service 
metadata: 
    name: lb-grafana-service 
spec: 
    ports: 
    - port: 4545 
     targetPort: 4545 
     protocol: TCP 
    clusterIP: 10.100.10.100 
---- 
apiVersion: v1 
kind: Service 
metadata: 
    annotations: 
    prometheus.io/scrape: 'true' 
    labels: 
    app: grafana 
    name: grafana 
    name: grafana 
spec: 
    ports: 
    - name: scrape 
    port: 4545 
    nodePort: 30999 
    protocol: TCP 
    type: NodePort 
    selector: 
    app: grafana 
---- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: grafana 
spec: 
    replicas: 1 
    selector: 
    matchLabels: 
     app: grafana 
    template: 
    metadata: 
     name: grafana 
     labels: 
     app: grafana 
    spec: 
     containers: 
     - name: grafana 
     image: grafana/grafana:develop 
     env: 
      - name: Prometheus_SERVICE_URL 
      value: http://172.29.219.105:30901 
      - name: GF_SECURITY_ADMIN_PASSWORD 
      value: "grafana" 
      - name: GF_SERVER_HTTP_PORT 
      value: "4545" 
     ports: 
      - containerPort: 9101 
     volumeMounts: 
     - mountPath: /var 
      name: grafana-storage 
     volumes: 
     - name: grafana-storage 
     emptyDir: {} 

所以我想要做的是覆盖/etc/grafana/grafana.ini文件之前Grafana荚联机或只是改写为新值当前文件。我不知道我现在该怎么做。一些指导将非常感谢。

+1

你可以使用[配置图](https://kubernetes.io/docs/tasks/configure-pod-container/configmap /) 为了那个原因。将整个'grafana.ini'上传到配置映射中,并将其安装到grafana荚中。 – fishi

+0

谢谢。看起来这会为我做这项工作。 –

回答

1

一般而言,您可以使用ConfigMaps,如评论所述。

Grafana图像本身提供了通过环境变量提供所有配置参数的能力。这只在GitHub readme中提到。

这样你可以设置与Kubernetes的环境变量,如:

spec: 
    template: 
     spec: 
     containers: 
     - name: grafana 
      image: grafana/grafana:4.1.1 
      env: 
      - name: "GF_SERVER_ROOT_URL" 
      value: "http://grafana.{{.clusterDomain}}" 
      - name: "GF_DATABASE_TYPE" 
      value: "{{.gfDatabaseType}}" 
      - name: "GF_DATABASE_HOST" 
      value: "{{.gfDatabaseHost}}" 
      - name: "GF_DATABASE_NAME" 
      value: "{{.gfDatabaseName}}" 
      - name: "GF_DATABASE_USER" 
      value: "{{.gfDatabaseUser}}" 
      - name: "GF_DATABASE_PASSWORD" 
      value: "{{.gfDatabasePassword}}" 
      - name: "GF_DATABASE_SSL_MODE" 
      value: "disable" 
      - name: "GF_AUTH_ANONYMOUS_ENABLED" 
      value: "true" 
+1

使用环境变量在Grafana文档中:http://docs.grafana.org/installation/configuration/#using-environment-variables我有点好奇你为什么找不到它。在文档网站上搜索没有返回结果,或者您没有通过Google找到它? –