diff --git a/build/common.sh b/build/common.sh index e2b1dc511bc..07f06325033 100644 --- a/build/common.sh +++ b/build/common.sh @@ -651,11 +651,11 @@ function kube::release::package_salt_tarball() { cp -R "${KUBE_ROOT}/cluster/saltbase" "${release_stage}/" # TODO(#3579): This is a temporary hack. It gathers up the yaml, - # yaml.in files in cluster/addons (minus any demos) and overlays + # yaml.in, json files in cluster/addons (minus any demos) and overlays # them into kube-addons, where we expect them. (This pipeline is a # fancy copy, stripping anything but the files we don't want.) local objects - objects=$(cd "${KUBE_ROOT}/cluster/addons" && find . -name \*.yaml -or -name \*.yaml.in | grep -v demo) + objects=$(cd "${KUBE_ROOT}/cluster/addons" && find . \( -name \*.yaml -or -name \*.yaml.in -or -name \*.json \) | grep -v demo) tar c -C "${KUBE_ROOT}/cluster/addons" ${objects} | tar x -C "${release_stage}/saltbase/salt/kube-addons" kube::release::clean_cruft diff --git a/cluster/addons/cluster-monitoring/v1beta3/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml similarity index 69% rename from cluster/addons/cluster-monitoring/v1beta3/heapster-controller.yaml rename to cluster/addons/cluster-monitoring/google/heapster-controller.yaml index e9190d54c3c..158c354a55c 100644 --- a/cluster/addons/cluster-monitoring/v1beta3/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -19,17 +19,14 @@ spec: - image: gcr.io/google_containers/heapster:v0.11.0 name: heapster env: - - name: "INFLUXDB_HOST" - value: "http://monitoring-influxdb" - - name: "SINK" - value: "influxdb" - volumeMounts: + - name: FLAGS + value: "--poll_duration=2m --stats_resolution=1m --sink=gcm --sink=gcl" + volumeMounts: - name: ssl-certs mountPath: /etc/ssl/certs readOnly: true - volumes: + volumes: - name: ssl-certs - source: - hostDir: - path: /etc/ssl/certs + hostPath: + path: /etc/ssl/certs diff --git a/cluster/addons/cluster-monitoring/grafana-service.yaml b/cluster/addons/cluster-monitoring/grafana-service.yaml deleted file mode 100644 index 1a2e22fd9cc..00000000000 --- a/cluster/addons/cluster-monitoring/grafana-service.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1beta1 -kind: Service -id: monitoring-grafana -port: 80 -containerPort: 8080 -labels: - name: grafana - kubernetes.io/cluster-service: "true" -selector: - name: influxGrafana diff --git a/cluster/addons/cluster-monitoring/heapster-controller.yaml b/cluster/addons/cluster-monitoring/heapster-controller.yaml deleted file mode 100644 index f8207bcbf6e..00000000000 --- a/cluster/addons/cluster-monitoring/heapster-controller.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: v1beta1 -id: monitoring-heapster-controller -kind: ReplicationController -desiredState: - replicas: 1 - replicaSelector: - name: heapster - podTemplate: - desiredState: - manifest: - version: v1beta1 - id: monitoring-heapster - containers: - - name: heapster - image: gcr.io/google_containers/heapster:v0.11.0 - env: - - name: "INFLUXDB_HOST" - value: "monitoring-influxdb" - - name: "SINK" - value: "influxdb" - volumeMounts: - - name: ssl-certs - mountPath: /etc/ssl/certs - readOnly: true - volumes: - - name: ssl-certs - source: - hostDir: - path: /etc/ssl/certs - labels: - name: heapster - uses: monitoring-influxdb - kubernetes.io/cluster-service: "true" -labels: - name: heapster - kubernetes.io/cluster-service: "true" diff --git a/cluster/addons/cluster-monitoring/heapster-service.yaml b/cluster/addons/cluster-monitoring/heapster-service.yaml deleted file mode 100644 index 4601e8e7186..00000000000 --- a/cluster/addons/cluster-monitoring/heapster-service.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1beta1 -kind: Service -id: monitoring-heapster -port: 80 -containerPort: 8082 -labels: - name: heapster - kubernetes.io/cluster-service: "true" -selector: - name: heapster diff --git a/cluster/addons/cluster-monitoring/influxdb-grafana-controller.yaml b/cluster/addons/cluster-monitoring/influxdb-grafana-controller.yaml deleted file mode 100644 index 9373b9e7c63..00000000000 --- a/cluster/addons/cluster-monitoring/influxdb-grafana-controller.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1beta1 -kind: ReplicationController -id: monitoring-influx-grafana-controller -desiredState: - replicas: 1 - replicaSelector: - name: influxGrafana - podTemplate: - labels: - name: influxGrafana - kubernetes.io/cluster-service: "true" - desiredState: - manifest: - version: v1beta1 - id: monitoring-influx-grafana - containers: - - name: influxdb - image: gcr.io/google_containers/heapster_influxdb:v0.3 - ports: - - containerPort: 8083 - hostPort: 8083 - - containerPort: 8086 - hostPort: 8086 - - name: grafana - image: gcr.io/google_containers/heapster_grafana:v0.7 - env: - - name: "INFLUXDB_EXTERNAL_URL" - value: '/api/v1beta1/proxy/services/monitoring-grafana/db/' - - name: "INFLUXDB_HOST" - value: 'monitoring-influxdb' - - name: "INFLUXDB_PORT" - value: '80' -labels: - name: influxGrafana - kubernetes.io/cluster-service: "true" diff --git a/cluster/addons/cluster-monitoring/influxdb-service.yaml b/cluster/addons/cluster-monitoring/influxdb-service.yaml deleted file mode 100644 index cc62a91d3ee..00000000000 --- a/cluster/addons/cluster-monitoring/influxdb-service.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1beta1 -kind: Service -id: monitoring-influxdb -port: 80 -containerPort: 8086 -labels: - name: influxdb -selector: - name: influxGrafana diff --git a/cluster/addons/cluster-monitoring/v1beta3/grafana-service.yaml b/cluster/addons/cluster-monitoring/influxdb/grafana-service.yaml similarity index 81% rename from cluster/addons/cluster-monitoring/v1beta3/grafana-service.yaml rename to cluster/addons/cluster-monitoring/influxdb/grafana-service.yaml index e5c707ceba5..8756b3f834e 100644 --- a/cluster/addons/cluster-monitoring/v1beta3/grafana-service.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/grafana-service.yaml @@ -6,11 +6,9 @@ metadata: kubernetes.io/cluster-service: "true" name: monitoring-grafana spec: - ports: + ports: - port: 80 targetPort: 8080 selector: name: influxGrafana - kubernetes.io/cluster-service: "true" - diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml new file mode 100644 index 00000000000..e4793a7d91c --- /dev/null +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -0,0 +1,32 @@ +apiVersion: v1beta3 +kind: ReplicationController +metadata: + labels: + name: heapster + kubernetes.io/cluster-service: "true" + name: monitoring-heapster-controller +spec: + replicas: 1 + selector: + name: heapster + template: + metadata: + labels: + name: heapster + kubernetes.io/cluster-service: "true" + spec: + containers: + - image: gcr.io/google_containers/heapster:v0.11.0 + name: heapster + env: + - name: FLAGS + value: "--poll_duration=2m --stats_resolution=1m --sink influxdb:http://monitoring-influxdb.default.kubernetes.local:8086" + volumeMounts: + - name: ssl-certs + mountPath: /etc/ssl/certs + readOnly: true + volumes: + - name: ssl-certs + hostPath: + path: "/etc/ssl/certs" + diff --git a/cluster/addons/cluster-monitoring/v1beta3/influxdb-grafana-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml similarity index 62% rename from cluster/addons/cluster-monitoring/v1beta3/influxdb-grafana-controller.yaml rename to cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml index 7fde9e8fb03..646cb19e8c1 100644 --- a/cluster/addons/cluster-monitoring/v1beta3/influxdb-grafana-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-grafana-controller.yaml @@ -18,17 +18,18 @@ spec: containers: - image: gcr.io/google_containers/heapster_influxdb:v0.3 name: influxdb - ports: + ports: - containerPort: 8083 hostPort: 8083 - containerPort: 8086 hostPort: 8086 - - name: grafana - image: gcr.io/google_containers/heapster_grafana:v0.7 + - image: gcr.io/google_containers/heapster_grafana:v0.7 + name: grafana env: - - name: "INFLUXDB_EXTERNAL_URL" - value: '/api/v1beta1/proxy/services/monitoring-grafana/db/' - - name: "INFLUXDB_HOST" - value: 'monitoring-influxdb' - - name: "INFLUXDB_PORT" - value: '80' + - name: INFLUXDB_EXTERNAL_URL + value: /api/v1beta1/proxy/services/monitoring-grafana/db/ + - name: INFLUXDB_HOST + value: monitoring-influxdb + - name: INFLUXDB_PORT + value: "80" + diff --git a/cluster/addons/cluster-monitoring/v1beta3/influxdb-service.yaml b/cluster/addons/cluster-monitoring/influxdb/influxdb-service.yaml similarity index 55% rename from cluster/addons/cluster-monitoring/v1beta3/influxdb-service.yaml rename to cluster/addons/cluster-monitoring/influxdb/influxdb-service.yaml index 1babd85ec38..94e730382b7 100644 --- a/cluster/addons/cluster-monitoring/v1beta3/influxdb-service.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/influxdb-service.yaml @@ -3,12 +3,16 @@ kind: Service metadata: labels: name: influxGrafana + kubernetes.io/cluster-service: "true" name: monitoring-influxdb spec: - ports: - - port: 80 + ports: + - name: http + port: 8083 + targetPort: 8083 + - name: api + port: 8086 targetPort: 8086 selector: name: influxGrafana - diff --git a/cluster/addons/cluster-monitoring/v1beta3/heapster-service.yaml b/cluster/addons/cluster-monitoring/v1beta3/heapster-service.yaml deleted file mode 100644 index 06919b01c46..00000000000 --- a/cluster/addons/cluster-monitoring/v1beta3/heapster-service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1beta3 -kind: Service -metadata: - labels: - name: heapster - kubernetes.io/cluster-service: "true" - name: monitoring-heapster -spec: - ports: - - port: 80 - targetPort: 8082 - selector: - name: heapster - kubernetes.io/cluster-service: "true" - - diff --git a/cluster/addons/cluster-monitoring/v1beta3/influxdb-ui-service.yaml b/cluster/addons/cluster-monitoring/v1beta3/influxdb-ui-service.yaml deleted file mode 100644 index 3c4f9d4d116..00000000000 --- a/cluster/addons/cluster-monitoring/v1beta3/influxdb-ui-service.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1beta3 -kind: Service -metadata: - labels: - name: influxGrafana - name: monitoring-influxdb-ui -spec: - ports: - - port: 80 - targetPort: 8083 - selector: - name: influxGrafana - - diff --git a/cluster/gce/config-default.sh b/cluster/gce/config-default.sh index a6a77237818..861c9bb6099 100755 --- a/cluster/gce/config-default.sh +++ b/cluster/gce/config-default.sh @@ -50,8 +50,11 @@ ENABLE_DOCKER_REGISTRY_CACHE=true # Optional: Install node monitoring. ENABLE_NODE_MONITORING="${KUBE_ENABLE_NODE_MONITORING:-true}" -# Optional: When set to true, heapster, Influxdb and Grafana will be setup as part of the cluster bring up. -ENABLE_CLUSTER_MONITORING="${KUBE_ENABLE_CLUSTER_MONITORING:-true}" +# Optional: Cluster monitoring to setup as part of the cluster bring up: +# none - No cluster monitoring setup +# influxdb - Heapster, InfluxDB, and Grafana +# google - Heapster, Google Cloud Monitoring, and Google Cloud Logging +ENABLE_CLUSTER_MONITORING="${KUBE_ENABLE_CLUSTER_MONITORING:-google}" # Optional: Enable node logging. ENABLE_NODE_LOGGING="${KUBE_ENABLE_NODE_LOGGING:-true}" diff --git a/cluster/gce/config-test.sh b/cluster/gce/config-test.sh index 1b1c614115f..d8145fb236f 100755 --- a/cluster/gce/config-test.sh +++ b/cluster/gce/config-test.sh @@ -49,8 +49,11 @@ ENABLE_DOCKER_REGISTRY_CACHE=true # Optional: Install node monitoring. ENABLE_NODE_MONITORING="${KUBE_ENABLE_NODE_MONITORING:-true}" -# Optional: When set to true, heapster will be setup as part of the cluster bring up. -ENABLE_CLUSTER_MONITORING="${KUBE_ENABLE_CLUSTER_MONITORING:-true}" +# Optional: Cluster monitoring to setup as part of the cluster bring up: +# none - No cluster monitoring setup +# influxdb - Heapster, InfluxDB, and Grafana +# google - Heapster, Google Cloud Monitoring, and Google Cloud Logging +ENABLE_CLUSTER_MONITORING="${KUBE_ENABLE_CLUSTER_MONITORING:-influxdb}" # Optional: Enable node logging. ENABLE_NODE_LOGGING="${KUBE_ENABLE_NODE_LOGGING:-true}" diff --git a/cluster/gce/coreos/helper.sh b/cluster/gce/coreos/helper.sh index 6db9beb28ab..6aeb537ccf8 100644 --- a/cluster/gce/coreos/helper.sh +++ b/cluster/gce/coreos/helper.sh @@ -33,7 +33,7 @@ SERVER_BINARY_TAR_URL: $(yaml-quote ${SERVER_BINARY_TAR_URL}) SALT_TAR_URL: $(yaml-quote ${SALT_TAR_URL}) PORTAL_NET: $(yaml-quote ${PORTAL_NET}) ALLOCATE_NODE_CIDRS: $(yaml-quote ${ALLOCATE_NODE_CIDRS:-false}) -ENABLE_CLUSTER_MONITORING: $(yaml-quote ${ENABLE_CLUSTER_MONITORING:-false}) +ENABLE_CLUSTER_MONITORING: $(yaml-quote ${ENABLE_CLUSTER_MONITORING:-none}) ENABLE_NODE_MONITORING: $(yaml-quote ${ENABLE_NODE_MONITORING:-false}) ENABLE_CLUSTER_LOGGING: $(yaml-quote ${ENABLE_CLUSTER_LOGGING:-false}) ENABLE_NODE_LOGGING: $(yaml-quote ${ENABLE_NODE_LOGGING:-false}) @@ -59,7 +59,7 @@ INSTANCE_PREFIX=$(yaml-quote ${INSTANCE_PREFIX}) NODE_INSTANCE_PREFIX=$(yaml-quote ${NODE_INSTANCE_PREFIX}) SERVER_BINARY_TAR_URL=$(yaml-quote ${SERVER_BINARY_TAR_URL}) PORTAL_NET=$(yaml-quote ${PORTAL_NET}) -ENABLE_CLUSTER_MONITORING=$(yaml-quote ${ENABLE_CLUSTER_MONITORING:-false}) +ENABLE_CLUSTER_MONITORING=$(yaml-quote ${ENABLE_CLUSTER_MONITORING:-none}) ENABLE_NODE_MONITORING=$(yaml-quote ${ENABLE_NODE_MONITORING:-false}) ENABLE_CLUSTER_LOGGING=$(yaml-quote ${ENABLE_CLUSTER_LOGGING:-false}) ENABLE_NODE_LOGGING=$(yaml-quote ${ENABLE_NODE_LOGGING:-false}) diff --git a/cluster/gce/debian/helper.sh b/cluster/gce/debian/helper.sh index 8551d821e52..0003226fd5c 100644 --- a/cluster/gce/debian/helper.sh +++ b/cluster/gce/debian/helper.sh @@ -31,7 +31,7 @@ SERVER_BINARY_TAR_URL: $(yaml-quote ${SERVER_BINARY_TAR_URL}) SALT_TAR_URL: $(yaml-quote ${SALT_TAR_URL}) PORTAL_NET: $(yaml-quote ${PORTAL_NET}) ALLOCATE_NODE_CIDRS: $(yaml-quote ${ALLOCATE_NODE_CIDRS:-false}) -ENABLE_CLUSTER_MONITORING: $(yaml-quote ${ENABLE_CLUSTER_MONITORING:-false}) +ENABLE_CLUSTER_MONITORING: $(yaml-quote ${ENABLE_CLUSTER_MONITORING:-none}) ENABLE_NODE_MONITORING: $(yaml-quote ${ENABLE_NODE_MONITORING:-false}) ENABLE_CLUSTER_LOGGING: $(yaml-quote ${ENABLE_CLUSTER_LOGGING:-false}) ENABLE_NODE_LOGGING: $(yaml-quote ${ENABLE_NODE_LOGGING:-false}) diff --git a/cluster/saltbase/salt/kube-addons/init.sls b/cluster/saltbase/salt/kube-addons/init.sls index 9ff1b7530d7..a129666b430 100644 --- a/cluster/saltbase/salt/kube-addons/init.sls +++ b/cluster/saltbase/salt/kube-addons/init.sls @@ -1,8 +1,19 @@ -{% if pillar.get('enable_cluster_monitoring', '').lower() == 'true' %} -/etc/kubernetes/addons/cluster-monitoring: +{% if pillar.get('enable_cluster_monitoring', '').lower() == 'influxdb' %} +/etc/kubernetes/addons/cluster-monitoring/influxdb: file.recurse: - - source: salt://kube-addons/cluster-monitoring - - include_pat: E@^.+\.yaml$ + - source: salt://kube-addons/cluster-monitoring/influxdb + - include_pat: E@(^.+\.yaml$|^.+\.json$) + - user: root + - group: root + - dir_mode: 755 + - file_mode: 644 +{% endif %} + +{% if pillar.get('enable_cluster_monitoring', '').lower() == 'google' %} +/etc/kubernetes/addons/cluster-monitoring/google: + file.recurse: + - source: salt://kube-addons/cluster-monitoring/google + - include_pat: E@(^.+\.yaml$|^.+\.json$) - user: root - group: root - dir_mode: 755 diff --git a/cluster/saltbase/salt/kube-addons/kube-addons.sh b/cluster/saltbase/salt/kube-addons/kube-addons.sh index a649c058e13..c6131c89ecd 100644 --- a/cluster/saltbase/salt/kube-addons/kube-addons.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addons.sh @@ -110,7 +110,7 @@ while read line; do create-kubeconfig-secret "${token}" "${username}" done < /srv/kubernetes/known_tokens.csv -for obj in $(find /etc/kubernetes/addons -name \*.yaml); do +for obj in $(find /etc/kubernetes/addons \( -name \*.yaml -o -name \*.json \)); do start_addon ${obj} 100 10 & echo "++ addon ${obj} starting in pid $! ++" done diff --git a/test/e2e/monitoring.go b/test/e2e/monitoring.go index 6cd5d08a4f3..93574b47f74 100644 --- a/test/e2e/monitoring.go +++ b/test/e2e/monitoring.go @@ -68,9 +68,8 @@ var ( "monitoring-influx-grafana-controller": false, } expectedServices = map[string]bool{ - influxdbService: false, - "monitoring-heapster": false, - "monitoring-grafana": false, + influxdbService: false, + "monitoring-grafana": false, } ) @@ -209,7 +208,7 @@ func testMonitoringUsingHeapsterInfluxdb(c *client.Client) { if !ok { Failf("failed to get master http client") } - proxyUrl := fmt.Sprintf("%s/api/v1beta3/proxy/namespaces/default/services/%s/", getMasterHost(), influxdbService) + proxyUrl := fmt.Sprintf("%s/api/v1beta3/proxy/namespaces/default/services/%s:api/", getMasterHost(), influxdbService) config := &influxdb.ClientConfig{ Host: proxyUrl, // TODO(vishh): Infer username and pw from the Pod spec.