2017-05-29 29 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找到它? –