fix(operator): Use safe bearer token authentication to scrape operator metrics (#12164)

pull/12219/head
Periklis Tsirakidis 2 years ago committed by GitHub
parent f0cf65b3c3
commit 862d0fb2cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      operator/CHANGELOG.md
  2. 11
      operator/bundle/community-openshift/manifests/loki-operator-controller-manager-metrics-reader_v1_serviceaccount.yaml
  3. 13
      operator/bundle/community-openshift/manifests/loki-operator-controller-manager-metrics-token_v1_secret.yaml
  4. 19
      operator/bundle/community-openshift/manifests/loki-operator-controller-manager-read-metrics_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml
  5. 11
      operator/bundle/community-openshift/manifests/loki-operator-metrics-monitor_monitoring.coreos.com_v1_servicemonitor.yaml
  6. 5
      operator/bundle/community-openshift/manifests/loki-operator.clusterserviceversion.yaml
  7. 11
      operator/bundle/community/manifests/loki-operator-controller-manager-metrics-reader_v1_serviceaccount.yaml
  8. 19
      operator/bundle/community/manifests/loki-operator-controller-manager-read-metrics_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml
  9. 5
      operator/bundle/community/manifests/loki-operator.clusterserviceversion.yaml
  10. 11
      operator/bundle/openshift/manifests/loki-operator-controller-manager-metrics-reader_v1_serviceaccount.yaml
  11. 13
      operator/bundle/openshift/manifests/loki-operator-controller-manager-metrics-token_v1_secret.yaml
  12. 19
      operator/bundle/openshift/manifests/loki-operator-controller-manager-read-metrics_rbac.authorization.k8s.io_v1_clusterrolebinding.yaml
  13. 11
      operator/bundle/openshift/manifests/loki-operator-metrics-monitor_monitoring.coreos.com_v1_servicemonitor.yaml
  14. 5
      operator/bundle/openshift/manifests/loki-operator.clusterserviceversion.yaml
  15. 1
      operator/config/manager/manager.yaml
  16. 13
      operator/config/overlays/community-openshift/prometheus_service_monitor_patch.yaml
  17. 1
      operator/config/overlays/openshift/kustomization.yaml
  18. 7
      operator/config/overlays/openshift/manager_metrics_secret_token.yaml
  19. 13
      operator/config/overlays/openshift/prometheus_service_monitor_patch.yaml
  20. 12
      operator/config/rbac/auth_proxy_client_clusterrolebinding.yaml
  21. 5
      operator/config/rbac/auth_proxy_client_serviceaccount.yaml
  22. 2
      operator/config/rbac/auth_proxy_role_binding.yaml
  23. 3
      operator/config/rbac/kustomization.yaml
  24. 2
      operator/config/rbac/leader_election_role_binding.yaml
  25. 2
      operator/config/rbac/role_binding.yaml
  26. 5
      operator/config/rbac/serviceaccount.yaml

@ -1,5 +1,6 @@
## Main
- [12164](https://github.com/grafana/loki/pull/12164) **periklis**: Use safe bearer token authentication to scrape operator metrics
- [12216](https://github.com/grafana/loki/pull/12216) **xperimental**: Fix duplicate operator metrics due to ServiceMonitor selector
- [12212](https://github.com/grafana/loki/pull/12212) **xperimental**: Keep credentialMode in status when updating schemas
- [12165](https://github.com/grafana/loki/pull/12165) **JoaoBraveCoding**: Change attribute value used for CCO-based credential mode

@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-v0.5.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: loki-operator
app.kubernetes.io/version: 0.5.0
name: loki-operator-controller-manager-metrics-reader

@ -0,0 +1,13 @@
apiVersion: v1
kind: Secret
metadata:
annotations:
kubernetes.io/service-account.name: loki-operator-controller-manager-metrics-reader
labels:
app.kubernetes.io/instance: loki-operator-v0.5.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: loki-operator
app.kubernetes.io/version: 0.5.0
name: loki-operator-controller-manager-metrics-token
type: kubernetes.io/service-account-token

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-v0.5.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: loki-operator
app.kubernetes.io/version: 0.5.0
name: loki-operator-controller-manager-read-metrics
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: loki-operator-metrics-reader
subjects:
- kind: ServiceAccount
name: loki-operator-controller-manager-metrics-reader
namespace: kubernetes-operators

@ -11,14 +11,21 @@ metadata:
name: loki-operator-metrics-monitor
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
- authorization:
credentials:
key: token
name: loki-operator-controller-manager-metrics-token
type: bearer
interval: 30s
path: /metrics
scheme: https
scrapeTimeout: 10s
targetPort: 8443
tlsConfig:
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
ca:
secret:
key: service-ca.crt
name: loki-operator-controller-manager-metrics-token
serverName: loki-operator-controller-manager-metrics-service.kubernetes-operators.svc
selector:
matchLabels:

@ -1678,7 +1678,7 @@ spec:
- subjectaccessreviews
verbs:
- create
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
deployments:
- label:
app.kubernetes.io/instance: loki-operator-v0.5.0
@ -1779,6 +1779,7 @@ spec:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
serviceAccountName: loki-operator-controller-manager
terminationGracePeriodSeconds: 10
volumes:
- configMap:
@ -1812,7 +1813,7 @@ spec:
verbs:
- create
- patch
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
strategy: deployment
installModes:
- supported: false

@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-v0.5.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: loki-operator
app.kubernetes.io/version: 0.5.0
name: loki-operator-controller-manager-metrics-reader

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-v0.5.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: loki-operator
app.kubernetes.io/version: 0.5.0
name: loki-operator-controller-manager-read-metrics
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: loki-operator-metrics-reader
subjects:
- kind: ServiceAccount
name: loki-operator-controller-manager-metrics-reader
namespace: loki-operator

@ -1658,7 +1658,7 @@ spec:
- subjectaccessreviews
verbs:
- create
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
deployments:
- label:
app.kubernetes.io/instance: loki-operator-v0.5.0
@ -1748,6 +1748,7 @@ spec:
kubernetes.io/os: linux
securityContext:
runAsNonRoot: true
serviceAccountName: loki-operator-controller-manager
terminationGracePeriodSeconds: 10
volumes:
- name: webhook-cert
@ -1780,7 +1781,7 @@ spec:
verbs:
- create
- patch
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
strategy: deployment
installModes:
- supported: false

@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-0.1.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: cluster-logging
app.kubernetes.io/version: 0.1.0
name: loki-operator-controller-manager-metrics-reader

@ -0,0 +1,13 @@
apiVersion: v1
kind: Secret
metadata:
annotations:
kubernetes.io/service-account.name: loki-operator-controller-manager-metrics-reader
labels:
app.kubernetes.io/instance: loki-operator-0.1.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: cluster-logging
app.kubernetes.io/version: 0.1.0
name: loki-operator-controller-manager-metrics-token
type: kubernetes.io/service-account-token

@ -0,0 +1,19 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: loki-operator-0.1.0
app.kubernetes.io/managed-by: operator-lifecycle-manager
app.kubernetes.io/name: loki-operator
app.kubernetes.io/part-of: cluster-logging
app.kubernetes.io/version: 0.1.0
name: loki-operator-controller-manager-read-metrics
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: loki-operator-metrics-reader
subjects:
- kind: ServiceAccount
name: loki-operator-controller-manager-metrics-reader
namespace: openshift-operators-redhat

@ -11,14 +11,21 @@ metadata:
name: loki-operator-metrics-monitor
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
- authorization:
credentials:
key: token
name: loki-operator-controller-manager-metrics-token
type: bearer
interval: 30s
path: /metrics
scheme: https
scrapeTimeout: 10s
targetPort: 8443
tlsConfig:
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
ca:
secret:
key: service-ca.crt
name: loki-operator-controller-manager-metrics-token
serverName: loki-operator-controller-manager-metrics-service.openshift-operators-redhat.svc
selector:
matchLabels:

@ -1663,7 +1663,7 @@ spec:
- subjectaccessreviews
verbs:
- create
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
deployments:
- label:
app.kubernetes.io/instance: loki-operator-0.1.0
@ -1764,6 +1764,7 @@ spec:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
serviceAccountName: loki-operator-controller-manager
terminationGracePeriodSeconds: 10
volumes:
- configMap:
@ -1797,7 +1798,7 @@ spec:
verbs:
- create
- patch
serviceAccountName: default
serviceAccountName: loki-operator-controller-manager
strategy: deployment
installModes:
- supported: false

@ -39,4 +39,5 @@ spec:
periodSeconds: 10
nodeSelector:
kubernetes.io/os: linux
serviceAccountName: controller-manager
terminationGracePeriodSeconds: 10

@ -6,12 +6,19 @@ metadata:
name: metrics-monitor
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
path: /metrics
- path: /metrics
targetPort: 8443
scheme: https
interval: 30s
scrapeTimeout: 10s
authorization:
type: bearer
credentials:
key: token
name: loki-operator-controller-manager-metrics-token
tlsConfig:
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
ca:
secret:
key: service-ca.crt
name: loki-operator-controller-manager-metrics-token
serverName: loki-operator-controller-manager-metrics-service.kubernetes-operators.svc

@ -4,6 +4,7 @@ resources:
- ../../manager
- ../../webhook
- ../../prometheus
- manager_metrics_secret_token.yaml
# Adds namespace to all resources.
namespace: openshift-operators-redhat

@ -0,0 +1,7 @@
apiVersion: v1
kind: Secret
metadata:
name: controller-manager-metrics-token
annotations:
kubernetes.io/service-account.name: loki-operator-controller-manager-metrics-reader
type: kubernetes.io/service-account-token

@ -6,12 +6,19 @@ metadata:
name: metrics-monitor
spec:
endpoints:
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
path: /metrics
- path: /metrics
targetPort: 8443
scheme: https
interval: 30s
scrapeTimeout: 10s
authorization:
type: bearer
credentials:
key: token
name: loki-operator-controller-manager-metrics-token
tlsConfig:
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
ca:
secret:
key: service-ca.crt
name: loki-operator-controller-manager-metrics-token
serverName: loki-operator-controller-manager-metrics-service.openshift-operators-redhat.svc

@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: controller-manager-read-metrics
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: metrics-reader
subjects:
- kind: ServiceAccount
name: controller-manager-metrics-reader
namespace: system

@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: controller-manager-metrics-reader
namespace: system

@ -8,5 +8,5 @@ roleRef:
name: proxy-role
subjects:
- kind: ServiceAccount
name: default
name: controller-manager
namespace: system

@ -7,5 +7,8 @@ resources:
- auth_proxy_role.yaml
- auth_proxy_role_binding.yaml
- auth_proxy_client_clusterrole.yaml
- auth_proxy_client_clusterrolebinding.yaml
- auth_proxy_client_serviceaccount.yaml
- prometheus_role.yaml
- prometheus_role_binding.yaml
- serviceaccount.yaml

@ -8,5 +8,5 @@ roleRef:
name: leader-election-role
subjects:
- kind: ServiceAccount
name: default
name: controller-manager
namespace: system

@ -8,5 +8,5 @@ roleRef:
name: lokistack-manager
subjects:
- kind: ServiceAccount
name: default
name: controller-manager
namespace: system

@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: controller-manager
namespace: system
Loading…
Cancel
Save