mirror of
				https://github.com/carlosedp/cluster-monitoring.git
				synced 2025-10-26 10:23:04 +01:00 
			
		
		
		
	Improve Makefile. Reformat code.
This commit is contained in:
		
							parent
							
								
									d4be411a81
								
							
						
					
					
						commit
						8c418b73bb
					
				
							
								
								
									
										58
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								Makefile
									
									
									
									
									
								
							@ -1,55 +1,65 @@
 | 
				
			|||||||
JSONNET_FMT := jsonnet fmt -n 2 --max-blank-lines 2 --string-style s --comment-style s
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
GOPATH ?= `$(pwd)`
 | 
					GOPATH ?= `$(pwd)`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JSONNET_BIN := $(GOPATH)/bin/jsonnet
 | 
					JSONNET_BIN := $(GOPATH)/bin/jsonnet
 | 
				
			||||||
JB_BINARY := $(GOPATH)/bin/jb
 | 
					JB_BINARY := $(GOPATH)/bin/jb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.PHONY: generate vendor fmt manifests
 | 
					JSONNET_FMT := $(GOPATH)/bin/jsonnetfmt -n 2 --max-blank-lines 2 --string-style s --comment-style s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all: manifests
 | 
					.PHONY: generate vendor fmt manifests help
 | 
				
			||||||
 | 
					
 | 
				
			||||||
manifests: jsonnet
 | 
					all: manifests       ## Builds the  manifests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					help:	# Show help
 | 
				
			||||||
 | 
						@echo "Makefile targets:"
 | 
				
			||||||
 | 
						@echo ""
 | 
				
			||||||
 | 
						@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					manifests: $(JSONNET_BIN)       ## Builds the  manifests
 | 
				
			||||||
	rm -rf manifests
 | 
						rm -rf manifests
 | 
				
			||||||
	./scripts/build.sh main.jsonnet $(JSONNET_BIN)
 | 
						./scripts/build.sh main.jsonnet $(JSONNET_BIN)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
update: jsonnet_bundler
 | 
					update_libs: $(JB_BINARY)       ## Updates vendor libs. Require a regeneration of the manifests
 | 
				
			||||||
	jb update
 | 
						$(JB_BINARY) update
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vendor: jsonnet_bundler jsonnetfile.json jsonnetfile.lock.json
 | 
					vendor: $(JB_BINARY) jsonnetfile.json jsonnetfile.lock.json       ## Download vendor libs
 | 
				
			||||||
	rm -rf vendor
 | 
						rm -rf vendor
 | 
				
			||||||
	$(JB_BINARY) install
 | 
						$(JB_BINARY) install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fmt:
 | 
					fmt:       ## Formats all jsonnet and libsonnet files (except on vendor dir)
 | 
				
			||||||
	find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | xargs -n 1 -- $(JSONNET_FMT) -i
 | 
						@echo "Formatting jsonnet files"
 | 
				
			||||||
 | 
						@find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | xargs -n 1 -- $(JSONNET_FMT) -i
 | 
				
			||||||
 | 
					
 | 
				
			||||||
deploy: manifests
 | 
					deploy: manifests       ## Rebuilds manifests and deploy to configured cluster
 | 
				
			||||||
	kubectl apply -f ./manifests/
 | 
						kubectl apply -f ./manifests/
 | 
				
			||||||
	echo "Will wait 40 seconds to reapply manifests"
 | 
						echo "Will wait 40 seconds to reapply manifests"
 | 
				
			||||||
	sleep 40
 | 
						sleep 40
 | 
				
			||||||
	kubectl apply -f ./manifests/
 | 
						kubectl apply -f ./manifests/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
teardown:
 | 
					teardown:       ## Delete all monitoring stack resources from configured cluster
 | 
				
			||||||
	kubectl delete -f ./manifests/
 | 
						kubectl delete -f ./manifests/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tar: manifests
 | 
					tar: manifests       ## Generates a .tar.gz from manifests dir
 | 
				
			||||||
	rm -rf manifests.tar
 | 
						rm -rf manifests.tar.gz
 | 
				
			||||||
	tar -cf manifests.tar manifests
 | 
						tar -cfz manifests.tar.gz manifests
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jsonnet_bundler:
 | 
					$(JB_BINARY):       ## Installs jsonnet-bundler utility
 | 
				
			||||||
ifeq (, $(shell which jb))
 | 
					 | 
				
			||||||
	@echo "Installing jsonnet-bundler"
 | 
						@echo "Installing jsonnet-bundler"
 | 
				
			||||||
	@go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
 | 
						@go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
jsonnet:
 | 
					$(JSONNET_BIN):       ## Installs jsonnet and jsonnetfmt utility
 | 
				
			||||||
ifeq (, $(shell which jsonnet))
 | 
					 | 
				
			||||||
	@echo "Installing jsonnet"
 | 
						@echo "Installing jsonnet"
 | 
				
			||||||
	@go get github.com/google/go-jsonnet/cmd/jsonnet
 | 
						@go get -u github.com/google/go-jsonnet/cmd/jsonnet
 | 
				
			||||||
	@go get github.com/brancz/gojsontoyaml
 | 
						@go get -u github.com/google/go-jsonnet/cmd/jsonnetfmt
 | 
				
			||||||
endif
 | 
						@go get -u github.com/brancz/gojsontoyaml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
change_suffix:
 | 
					update_tools:       ## Updates jsonnet, jsonnetfmt and jb utilities
 | 
				
			||||||
 | 
						@echo "Updating jsonnet"
 | 
				
			||||||
 | 
						@go get -u github.com/google/go-jsonnet/cmd/jsonnet
 | 
				
			||||||
 | 
						@go get -u github.com/google/go-jsonnet/cmd/jsonnetfmt
 | 
				
			||||||
 | 
						@go get -u github.com/brancz/gojsontoyaml
 | 
				
			||||||
 | 
						@go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					change_suffix:       ## Changes suffix for the ingress
 | 
				
			||||||
	@perl -p -i -e 's/^(\s*)\-\ host:.*/\1- host: alertmanager.${IP}.nip.io/g' manifests/ingress-alertmanager.yaml manifests/ingress-prometheus.yaml manifests/ingress-grafana.yaml
 | 
						@perl -p -i -e 's/^(\s*)\-\ host:.*/\1- host: alertmanager.${IP}.nip.io/g' manifests/ingress-alertmanager.yaml manifests/ingress-prometheus.yaml manifests/ingress-grafana.yaml
 | 
				
			||||||
	@echo "Ingress IPs changed to [service].${IP}.nip.io"
 | 
						@echo "Ingress IPs changed to [service].${IP}.nip.io"
 | 
				
			||||||
	${K3S} kubectl apply -f manifests/ingress-alertmanager.yaml
 | 
						${K3S} kubectl apply -f manifests/ingress-alertmanager.yaml
 | 
				
			||||||
 | 
				
			|||||||
@ -20,14 +20,16 @@ local utils = import 'utils.libsonnet';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    clusterRole:
 | 
					    clusterRole:
 | 
				
			||||||
      utils.newClusterRole('arm-exporter', [
 | 
					      utils.newClusterRole('arm-exporter', [
 | 
				
			||||||
        {apis: ['authentication.k8s.io'],
 | 
					        {
 | 
				
			||||||
 | 
					          apis: ['authentication.k8s.io'],
 | 
				
			||||||
          res: ['tokenreviews'],
 | 
					          res: ['tokenreviews'],
 | 
				
			||||||
         verbs: ['create']
 | 
					          verbs: ['create'],
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        {apis: ['authorization.k8s.io'],
 | 
					        {
 | 
				
			||||||
 | 
					          apis: ['authorization.k8s.io'],
 | 
				
			||||||
          res: ['subjectaccessreviews'],
 | 
					          res: ['subjectaccessreviews'],
 | 
				
			||||||
         verbs: ['create']
 | 
					          verbs: ['create'],
 | 
				
			||||||
        }
 | 
					        },
 | 
				
			||||||
      ], null),
 | 
					      ], null),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    clusterRoleBinding:
 | 
					    clusterRoleBinding:
 | 
				
			||||||
@ -86,7 +88,8 @@ local utils = import 'utils.libsonnet';
 | 
				
			|||||||
      service.mixin.spec.withClusterIp('None'),
 | 
					      service.mixin.spec.withClusterIp('None'),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serviceMonitor:
 | 
					    serviceMonitor:
 | 
				
			||||||
      utils.newServiceMonitorHTTPS('arm-exporter',
 | 
					      utils.newServiceMonitorHTTPS(
 | 
				
			||||||
 | 
					        'arm-exporter',
 | 
				
			||||||
        $._config.namespace,
 | 
					        $._config.namespace,
 | 
				
			||||||
        { 'k8s-app': 'arm-exporter' },
 | 
					        { 'k8s-app': 'arm-exporter' },
 | 
				
			||||||
        $._config.namespace,
 | 
					        $._config.namespace,
 | 
				
			||||||
 | 
				
			|||||||
@ -85,7 +85,8 @@ local utils = import 'utils.libsonnet';
 | 
				
			|||||||
        { 'k8s-app': 'elasticsearch-exporter' },
 | 
					        { 'k8s-app': 'elasticsearch-exporter' },
 | 
				
			||||||
        'monitoring',
 | 
					        'monitoring',
 | 
				
			||||||
        'es-metrics',
 | 
					        'es-metrics',
 | 
				
			||||||
        'http'),
 | 
					        'http'
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serviceMonitorFluentd:
 | 
					    serviceMonitorFluentd:
 | 
				
			||||||
      utils.newServiceMonitor(
 | 
					      utils.newServiceMonitor(
 | 
				
			||||||
@ -94,7 +95,8 @@ local utils = import 'utils.libsonnet';
 | 
				
			|||||||
        { 'k8s-app': 'fluentd-es' },
 | 
					        { 'k8s-app': 'fluentd-es' },
 | 
				
			||||||
        'logging',
 | 
					        'logging',
 | 
				
			||||||
        'metrics',
 | 
					        'metrics',
 | 
				
			||||||
        'http'),
 | 
					        'http'
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  // Add Prometheus monitoring rules for ElasticSearch
 | 
					  // Add Prometheus monitoring rules for ElasticSearch
 | 
				
			||||||
  prometheusRules+:: {
 | 
					  prometheusRules+:: {
 | 
				
			||||||
 | 
				
			|||||||
@ -12,6 +12,6 @@ local utils = import 'utils.libsonnet';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  traefikExporter+:: {
 | 
					  traefikExporter+:: {
 | 
				
			||||||
    serviceMonitor:
 | 
					    serviceMonitor:
 | 
				
			||||||
      utils.newServiceMonitor('traefik', $._config.namespace, {'app': 'traefik'}, 'kube-system', 'metrics', 'http'),
 | 
					      utils.newServiceMonitor('traefik', $._config.namespace, { app: 'traefik' }, 'kube-system', 'metrics', 'http'),
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,8 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
  generate(kp):: (
 | 
					  generate(kp):: (
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      [std.asciiLower(module) + '-' + name]: kp[module][name]
 | 
					      [std.asciiLower(module) + '-' + name]: kp[module][name]
 | 
				
			||||||
      for module in std.objectFieldsAll(kp) if !std.startsWith(module, '_')
 | 
					      for module in std.objectFieldsAll(kp)
 | 
				
			||||||
 | 
					      if !std.startsWith(module, '_')
 | 
				
			||||||
      for name in std.objectFields(kp[module])
 | 
					      for name in std.objectFields(kp[module])
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
@ -63,7 +64,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
    + clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io')
 | 
					    + clusterRoleBinding.mixin.roleRef.withApiGroup('rbac.authorization.k8s.io')
 | 
				
			||||||
    + clusterRoleBinding.mixin.roleRef.withName(clusterRole)
 | 
					    + clusterRoleBinding.mixin.roleRef.withName(clusterRole)
 | 
				
			||||||
    + clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' })
 | 
					    + clusterRoleBinding.mixin.roleRef.mixinInstance({ kind: 'ClusterRole' })
 | 
				
			||||||
      + clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', 'name': serviceAccount, 'namespace': serviceAccountNamespace }])
 | 
					    + clusterRoleBinding.withSubjects([{ kind: 'ServiceAccount', name: serviceAccount, namespace: serviceAccountNamespace }])
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Creates endpoint objects
 | 
					  // Creates endpoint objects
 | 
				
			||||||
@ -121,7 +122,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
    I + ingress.mixin.spec.withTls(
 | 
					    I + ingress.mixin.spec.withTls(
 | 
				
			||||||
      ingressTls.new() +
 | 
					      ingressTls.new() +
 | 
				
			||||||
      ingressTls.withHosts(host) +
 | 
					      ingressTls.withHosts(host) +
 | 
				
			||||||
        (if S != '' then {'secretName': S} else {})
 | 
					      (if S != '' then { secretName: S } else {})
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -136,7 +137,8 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
      {
 | 
					      {
 | 
				
			||||||
        'tls.crt': std.base64(crt),
 | 
					        'tls.crt': std.base64(crt),
 | 
				
			||||||
        'tls.key': std.base64(key),
 | 
					        'tls.key': std.base64(key),
 | 
				
			||||||
        })
 | 
					      }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Creates new basic deployments
 | 
					  // Creates new basic deployments
 | 
				
			||||||
@ -152,10 +154,10 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    local c = [con];
 | 
					    local c = [con];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local d = deployment.new(name, 1, c, {'app': name})
 | 
					    local d = deployment.new(name, 1, c, { app: name })
 | 
				
			||||||
              + deployment.mixin.metadata.withNamespace(namespace)
 | 
					              + deployment.mixin.metadata.withNamespace(namespace)
 | 
				
			||||||
      + deployment.mixin.metadata.withLabels({'app': name})
 | 
					              + deployment.mixin.metadata.withLabels({ app: name })
 | 
				
			||||||
      + deployment.mixin.spec.selector.withMatchLabels({'app': name})
 | 
					              + deployment.mixin.spec.selector.withMatchLabels({ app: name })
 | 
				
			||||||
              + deployment.mixin.spec.strategy.withType('RollingUpdate')
 | 
					              + deployment.mixin.spec.strategy.withType('RollingUpdate')
 | 
				
			||||||
              + deployment.mixin.spec.template.spec.withRestartPolicy('Always');
 | 
					              + deployment.mixin.spec.template.spec.withRestartPolicy('Always');
 | 
				
			||||||
    d
 | 
					    d
 | 
				
			||||||
@ -166,9 +168,9 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
    local servicePort = k.core.v1.service.mixin.spec.portsType;
 | 
					    local servicePort = k.core.v1.service.mixin.spec.portsType;
 | 
				
			||||||
    local p = servicePort.newNamed(name, port, port);
 | 
					    local p = servicePort.newNamed(name, port, port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local s = service.new(name, {'app': name}, p)
 | 
					    local s = service.new(name, { app: name }, p)
 | 
				
			||||||
              + service.mixin.metadata.withNamespace(namespace)
 | 
					              + service.mixin.metadata.withNamespace(namespace)
 | 
				
			||||||
      + service.mixin.metadata.withLabels({'app': name});
 | 
					              + service.mixin.metadata.withLabels({ app: name });
 | 
				
			||||||
    s
 | 
					    s
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -181,7 +183,7 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
        name: name,
 | 
					        name: name,
 | 
				
			||||||
        namespace: namespace,
 | 
					        namespace: namespace,
 | 
				
			||||||
        labels: {
 | 
					        labels: {
 | 
				
			||||||
            'app': name,
 | 
					          app: name,
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      spec: {
 | 
					      spec: {
 | 
				
			||||||
@ -216,18 +218,18 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
          bearerTokenFile: token,
 | 
					          bearerTokenFile: token,
 | 
				
			||||||
          tlsConfig: {
 | 
					          tlsConfig: {
 | 
				
			||||||
            insecureSkipVerify: true,
 | 
					            insecureSkipVerify: true,
 | 
				
			||||||
              }
 | 
					          },
 | 
				
			||||||
        }],
 | 
					        }],
 | 
				
			||||||
      }
 | 
					      },
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    std.mergePatch(s, t)
 | 
					    std.mergePatch(s, t)
 | 
				
			||||||
    // s + t
 | 
					    // s + t
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Adds arguments to a container in a deployment
 | 
					  // Adds arguments to a container in a deployment
 | 
				
			||||||
  # args is an array of arguments in the format
 | 
					  // args is an array of arguments in the format
 | 
				
			||||||
  # ["arg1","arg2",]
 | 
					  // ["arg1","arg2",]
 | 
				
			||||||
  addArguments(deployment, container, args):: (
 | 
					  addArguments(deployment, container, args):: (
 | 
				
			||||||
    { spec+: {
 | 
					    { spec+: {
 | 
				
			||||||
      template+: {
 | 
					      template+: {
 | 
				
			||||||
@ -245,9 +247,9 @@ local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet';
 | 
				
			|||||||
    } }
 | 
					    } }
 | 
				
			||||||
  ),
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Adds environment variables to a container in a deployment
 | 
					  // Adds environment variables to a container in a deployment
 | 
				
			||||||
  # envs is an array of environment variables in the format
 | 
					  // envs is an array of environment variables in the format
 | 
				
			||||||
  # [{name: 'VARNAME', value: 'var_value'},{...},]
 | 
					  // [{name: 'VARNAME', value: 'var_value'},{...},]
 | 
				
			||||||
  addEnviromnentVars(deployment, container, envs):: (
 | 
					  addEnviromnentVars(deployment, container, envs):: (
 | 
				
			||||||
    { spec+: {
 | 
					    { spec+: {
 | 
				
			||||||
      template+: {
 | 
					      template+: {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user