2
0

Makefile 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # Makefile for generating TLS certs for the Prometheus custom metrics API adapter
  2. SHELL=bash
  3. UNAME := $(shell uname)
  4. PURPOSE:=metrics
  5. SERVICE_NAME:=custom-metrics-apiserver
  6. ALT_NAMES:="custom-metrics-apiserver.monitoring","custom-metrics-apiserver.monitoring.svc"
  7. SECRET_FILE:=custom-metrics-api/cm-adapter-serving-certs.yaml
  8. certs: gensecret rmcerts
  9. .PHONY: gencerts
  10. gencerts:
  11. @echo Generating TLS certs
  12. @docker pull cfssl/cfssl
  13. @mkdir -p output
  14. @touch output/apiserver.pem
  15. @touch output/apiserver-key.pem
  16. @openssl req -x509 -sha256 -new -nodes -days 365 -newkey rsa:2048 -keyout $(PURPOSE)-ca.key -out $(PURPOSE)-ca.crt -subj "/CN=ca"
  17. @echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","'$(PURPOSE)'"]}}}' > "$(PURPOSE)-ca-config.json"
  18. @echo '{"CN":"'$(SERVICE_NAME)'","hosts":[$(ALT_NAMES)],"key":{"algo":"rsa","size":2048}}' | docker run -v ${HOME}:${HOME} -v ${PWD}/metrics-ca.key:/go/src/github.com/cloudflare/cfssl/metrics-ca.key -v ${PWD}/metrics-ca.crt:/go/src/github.com/cloudflare/cfssl/metrics-ca.crt -v ${PWD}/metrics-ca-config.json:/go/src/github.com/cloudflare/cfssl/metrics-ca-config.json -i cfssl/cfssl gencert -ca=metrics-ca.crt -ca-key=metrics-ca.key -config=metrics-ca-config.json - | docker run --entrypoint=cfssljson -v ${HOME}:${HOME} -v ${PWD}/output:/go/src/github.com/cloudflare/cfssl/output -i cfssl/cfssl -bare output/apiserver
  19. .PHONY: gensecret
  20. gensecret: gencerts
  21. @echo Generating $(SECRET_FILE)
  22. @echo "apiVersion: v1" > $(SECRET_FILE)
  23. @echo "kind: Secret" >> $(SECRET_FILE)
  24. @echo "metadata:" >> $(SECRET_FILE)
  25. @echo " name: cm-adapter-serving-certs" >> $(SECRET_FILE)
  26. @echo " namespace: monitoring" >> $(SECRET_FILE)
  27. @echo "data:" >> $(SECRET_FILE)
  28. ifeq ($(UNAME), Darwin)
  29. @echo " serving.crt: $$(cat output/apiserver.pem | base64)" >> $(SECRET_FILE)
  30. @echo " serving.key: $$(cat output/apiserver-key.pem | base64)" >> $(SECRET_FILE)
  31. endif
  32. ifeq ($(UNAME), Linux)
  33. @echo " serving.crt: $$(cat output/apiserver.pem | base64 -w 0)" >> $(SECRET_FILE)
  34. @echo " serving.key: $$(cat output/apiserver-key.pem | base64 -w 0)" >> $(SECRET_FILE)
  35. endif
  36. .PHONY: rmcerts
  37. rmcerts:
  38. @rm -f apiserver-key.pem apiserver.csr apiserver.pem
  39. @rm -f metrics-ca-config.json metrics-ca.crt metrics-ca.key
  40. .PHONY: deploy
  41. deploy:
  42. kubectl create -f ./namespaces.yaml
  43. kubectl create -f ./metrics-server
  44. kubectl create -f ./prometheus
  45. kubectl create -f ./custom-metrics-api