Skip to content

Commit 318c4d1

Browse files
mprahlopenshift-ci[bot]
authored andcommitted
Add Prometheus monitoring to the config-policy-controller
If on OpenShift, the kube-rbac-proxy is used to protect the /metrics endpoint. The ServiceMonitor is created in the openshift-monitoring namespace so that the metrics are scraped automatically in the OpenShift Prometheus instance over HTTPS. If not on OpenShift, the ServiceMonitor is created in the addon namespace and a Prometheus instance must be configured to look for ServiceMonitors in the addon namespace. The metrics are served over HTTP in this case. Note that the created Role and RoleBinding are to give the Prometheus operator access to the addon namespace during its discovery of what to scrape. Related: https://github.com/stolostron/backlog/issues/23547 Signed-off-by: mprahl <[email protected]>
1 parent bfd0225 commit 318c4d1

File tree

15 files changed

+421
-28
lines changed

15 files changed

+421
-28
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ $(KIND_KUBECONFIG):
169169
@echo "creating cluster"
170170
kind create cluster --name $(KIND_NAME) $(KIND_ARGS)
171171
kind get kubeconfig --name $(KIND_NAME) > $(KIND_KUBECONFIG)
172+
KUBECONFIG=$(KIND_KUBECONFIG) kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.57.0/example/prometheus-operator-crd-full/monitoring.coreos.com_servicemonitors.yaml
172173

173174
$(HUB_KUBECONFIG):
174175
@echo "fetching internal kubeconfig"

config/manager/manager.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ spec:
4040
fieldPath: metadata.name
4141
- name: CONFIG_POLICY_CONTROLLER_IMAGE
4242
value: quay.io/open-cluster-management/config-policy-controller:latest
43+
- name: KUBE_RBAC_PROXY_IMAGE
44+
value: registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.10
4345
- name: GOVERNANCE_POLICY_SPEC_SYNC_IMAGE
4446
value: quay.io/open-cluster-management/governance-policy-spec-sync:latest
4547
- name: GOVERNANCE_POLICY_STATUS_SYNC_IMAGE

go.mod

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ require (
66
github.com/onsi/ginkgo/v2 v2.1.3
77
github.com/onsi/gomega v1.18.1
88
github.com/openshift/library-go v0.0.0-20220121154930-b7889002d63e
9+
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.57.0
910
github.com/spf13/cobra v1.2.1
1011
github.com/spf13/pflag v1.0.5
11-
k8s.io/apimachinery v0.23.0
12-
k8s.io/client-go v0.23.0
13-
k8s.io/component-base v0.23.0
12+
k8s.io/apimachinery v0.23.5
13+
k8s.io/client-go v0.23.5
14+
k8s.io/component-base v0.23.5
1415
open-cluster-management.io/addon-framework v0.2.1-0.20220128080000-0a51d3129663
1516
open-cluster-management.io/api v0.6.0
16-
sigs.k8s.io/controller-runtime v0.11.0
17+
sigs.k8s.io/controller-runtime v0.11.2
1718
)
1819

1920
require (
@@ -113,16 +114,16 @@ require (
113114
gopkg.in/yaml.v2 v2.4.0 // indirect
114115
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
115116
helm.sh/helm/v3 v3.7.2 // indirect
116-
k8s.io/api v0.23.0 // indirect
117-
k8s.io/apiextensions-apiserver v0.23.0 // indirect
118-
k8s.io/apiserver v0.23.0 // indirect
117+
k8s.io/api v0.23.5 // indirect
118+
k8s.io/apiextensions-apiserver v0.23.5 // indirect
119+
k8s.io/apiserver v0.23.5 // indirect
119120
k8s.io/klog/v2 v2.30.0 // indirect
120121
k8s.io/kube-aggregator v0.23.0 // indirect
121122
k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect
122-
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b // indirect
123-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25 // indirect
123+
k8s.io/utils v0.0.0-20211116205334-6203023598ed // indirect
124+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 // indirect
124125
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect
125126
sigs.k8s.io/kube-storage-version-migrator v0.0.4 // indirect
126-
sigs.k8s.io/structured-merge-diff/v4 v4.2.0 // indirect
127+
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
127128
sigs.k8s.io/yaml v1.3.0 // indirect
128129
)

go.sum

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
828828
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
829829
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
830830
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
831+
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.57.0 h1:dslXhV7NbAFID2fh0ZLMjodbMYuitiJzDEpYNOoyRrg=
832+
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.57.0/go.mod h1:tflNO6iwG09icVcOe2VfhC73fmtKSKT1aNXYnVtAumU=
831833
github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
832834
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
833835
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
@@ -1187,6 +1189,7 @@ golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qx
11871189
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
11881190
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
11891191
golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
1192+
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
11901193
golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc=
11911194
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
11921195
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1600,50 +1603,56 @@ k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo=
16001603
k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ=
16011604
k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8=
16021605
k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk=
1603-
k8s.io/api v0.23.0 h1:WrL1gb73VSC8obi8cuYETJGXEoFNEh3LU0Pt+Sokgro=
16041606
k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg=
1607+
k8s.io/api v0.23.5 h1:zno3LUiMubxD/V1Zw3ijyKO3wxrhbUF1Ck+VjBvfaoA=
1608+
k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8=
16051609
k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8=
16061610
k8s.io/apiextensions-apiserver v0.18.0-beta.2/go.mod h1:Hnrg5jx8/PbxRbUoqDGxtQkULjwx8FDW4WYJaKNK+fk=
16071611
k8s.io/apiextensions-apiserver v0.22.4/go.mod h1:kH9lxD8dbJ+k0ZizGET55lFgdGjO8t45fgZnCVdZEpw=
1608-
k8s.io/apiextensions-apiserver v0.23.0 h1:uii8BYmHYiT2ZTAJxmvc3X8UhNYMxl2A0z0Xq3Pm+WY=
1609-
k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4=
1612+
k8s.io/apiextensions-apiserver v0.23.5 h1:5SKzdXyvIJKu+zbfPc3kCbWpbxi+O+zdmAJBm26UJqI=
1613+
k8s.io/apiextensions-apiserver v0.23.5/go.mod h1:ntcPWNXS8ZPKN+zTXuzYMeg731CP0heCTl6gYBxLcuQ=
16101614
k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg=
16111615
k8s.io/apimachinery v0.18.0-beta.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA=
16121616
k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
16131617
k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU=
16141618
k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc=
16151619
k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0=
1616-
k8s.io/apimachinery v0.23.0 h1:mIfWRMjBuMdolAWJ3Fd+aPTMv3X9z+waiARMpvvb0HQ=
16171620
k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc=
1621+
k8s.io/apimachinery v0.23.5 h1:Va7dwhp8wgkUPWsEXk6XglXWU4IKYLKNlv8VkX7SDM0=
1622+
k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
16181623
k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg=
16191624
k8s.io/apiserver v0.18.0-beta.2/go.mod h1:bnblMkMoCFnIfVnVftd0SXJPzyvrk3RtaqSbblphF/A=
16201625
k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU=
16211626
k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM=
16221627
k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q=
16231628
k8s.io/apiserver v0.22.4/go.mod h1:38WmcUZiiy41A7Aty8/VorWRa8vDGqoUzDf2XYlku0E=
1624-
k8s.io/apiserver v0.23.0 h1:Ds/QveXWi9aJ8ISB0CJa4zBNc5njxAs5u3rmMIexqCY=
16251629
k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4=
1630+
k8s.io/apiserver v0.23.5 h1:2Ly8oUjz5cnZRn1YwYr+aFgDZzUmEVL9RscXbnIeDSE=
1631+
k8s.io/apiserver v0.23.5/go.mod h1:7wvMtGJ42VRxzgVI7jkbKvMbuCbVbgsWFT7RyXiRNTw=
16261632
k8s.io/cli-runtime v0.22.4/go.mod h1:x35r0ERHXr/MrbR1C6MPJxQ3xKG6+hXi9m2xLzlMPZA=
16271633
k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k=
16281634
k8s.io/client-go v0.18.0-beta.2/go.mod h1:UvuVxHjKWIcgy0iMvF+bwNDW7l0mskTNOaOW1Qv5BMA=
16291635
k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y=
16301636
k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k=
16311637
k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0=
16321638
k8s.io/client-go v0.22.4/go.mod h1:Yzw4e5e7h1LNHA4uqnMVrpEpUs1hJOiuBsJKIlRCHDA=
1633-
k8s.io/client-go v0.23.0 h1:vcsOqyPq7XV3QmQRCBH/t9BICJM9Q1M18qahjv+rebY=
16341639
k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA=
1640+
k8s.io/client-go v0.23.5 h1:zUXHmEuqx0RY4+CsnkOn5l0GU+skkRXKGJrhmE2SLd8=
1641+
k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4=
16351642
k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s=
16361643
k8s.io/code-generator v0.18.0-beta.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc=
16371644
k8s.io/code-generator v0.22.4/go.mod h1:qjYl54pQ/emhkT0UxbufbREYJMWsHNNV/jSVwhYZQGw=
16381645
k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE=
1646+
k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk=
16391647
k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc=
16401648
k8s.io/component-base v0.18.0-beta.2/go.mod h1:HVk5FpRnyzQ/MjBr9//e/yEBjTVa2qjGXCTuUzcD7ks=
16411649
k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk=
16421650
k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI=
16431651
k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM=
16441652
k8s.io/component-base v0.22.4/go.mod h1:MrSaQy4a3tFVViff8TZL6JHYSewNCLshZCwHYM58v5A=
1645-
k8s.io/component-base v0.23.0 h1:UAnyzjvVZ2ZR1lF35YwtNY6VMN94WtOnArcXBu34es8=
16461653
k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI=
1654+
k8s.io/component-base v0.23.5 h1:8qgP5R6jG1BBSXmRYW+dsmitIrpk8F/fPEvgDenMCCE=
1655+
k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0=
16471656
k8s.io/component-helpers v0.22.4/go.mod h1:A50qTyczDFbhZDifIfS2zFrHuPk9UNOWPpvNZ+3RSIs=
16481657
k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM=
16491658
k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI=
@@ -1682,8 +1691,9 @@ k8s.io/utils v0.0.0-20200229041039-0a110f9eb7ab/go.mod h1:sZAwmy6armz5eXlNoLmJcl
16821691
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
16831692
k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
16841693
k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
1685-
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b h1:wxEMGetGMur3J1xuGLQY7GEQYg9bZxKn3tKo5k/eYcs=
16861694
k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
1695+
k8s.io/utils v0.0.0-20211116205334-6203023598ed h1:ck1fRPWPJWsMd8ZRFsWc6mh/zHp5fZ/shhbrgPUxDAE=
1696+
k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
16871697
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
16881698
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
16891699
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
@@ -1702,10 +1712,11 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT
17021712
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
17031713
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
17041714
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
1705-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25 h1:DEQ12ZRxJjsglk5JIi5bLgpKaHihGervKmg5uryaEHw=
17061715
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.25/go.mod h1:Mlj9PNLmG9bZ6BHFwFKDo5afkpWyUISkb9Me0GnK66I=
1707-
sigs.k8s.io/controller-runtime v0.11.0 h1:DqO+c8mywcZLFJWILq4iktoECTyn30Bkj0CwgqMpZWQ=
1708-
sigs.k8s.io/controller-runtime v0.11.0/go.mod h1:KKwLiTooNGu+JmLZGn9Sl3Gjmfj66eMbCQznLP5zcqA=
1716+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30 h1:dUk62HQ3ZFhD48Qr8MIXCiKA8wInBQCtuE4QGfFW7yA=
1717+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw=
1718+
sigs.k8s.io/controller-runtime v0.11.2 h1:H5GTxQl0Mc9UjRJhORusqfJCIjBO8UtUxGggCwL1rLA=
1719+
sigs.k8s.io/controller-runtime v0.11.2/go.mod h1:P6QCzrEjLaZGqHsfd+os7JQ+WFZhvB8MRFsn4dWF7O4=
17091720
sigs.k8s.io/controller-tools v0.2.8/go.mod h1:9VKHPszmf2DHz/QmHkcfZoewO6BL7pPs9uAiBVsaJSE=
17101721
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 h1:fD1pz4yfdADVNfFmcP2aBEtudwUQ1AlLnRBALr33v3s=
17111722
sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs=
@@ -1722,8 +1733,8 @@ sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnM
17221733
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
17231734
sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
17241735
sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
1725-
sigs.k8s.io/structured-merge-diff/v4 v4.2.0 h1:kDvPBbnPk+qYmkHmSo8vKGp438IASWofnbbUKDE/bv0=
1726-
sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
1736+
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
1737+
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
17271738
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
17281739
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
17291740
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=

pkg/addon/common.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/openshift/library-go/pkg/controller/controllercmd"
1212
"github.com/openshift/library-go/pkg/operator/events"
1313
"github.com/openshift/library-go/pkg/operator/resource/resourceapply"
14+
prometheusv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
1415
"k8s.io/apimachinery/pkg/runtime"
1516
"k8s.io/client-go/kubernetes"
1617
"k8s.io/client-go/kubernetes/scheme"
@@ -48,14 +49,20 @@ type UserValues struct {
4849
UserArgs UserArgs `json:"args,"`
4950
}
5051

51-
var genericScheme = runtime.NewScheme()
52+
var Scheme = runtime.NewScheme()
5253

5354
func init() {
54-
err := scheme.AddToScheme(genericScheme)
55+
err := scheme.AddToScheme(Scheme)
5556
if err != nil {
5657
log.Error(err, "Failed to add to scheme")
5758
os.Exit(1)
5859
}
60+
61+
err = prometheusv1.AddToScheme(Scheme)
62+
if err != nil {
63+
log.Error(err, "Failed to add the Prometheus scheme to scheme")
64+
os.Exit(1)
65+
}
5966
}
6067

6168
func NewRegistrationOption(

pkg/addon/configpolicy/agent_addon.go

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
const (
2121
addonName = "config-policy-controller"
2222
evaluationConcurrencyAnnotation = "policy-evaluation-concurrency"
23+
prometheusEnabledAnnotation = "prometheus-metrics-enabled"
2324
)
2425

2526
var log = ctrl.Log.WithName("configpolicy")
@@ -30,8 +31,10 @@ type UserArgs struct {
3031
}
3132

3233
type UserValues struct {
33-
GlobalValues policyaddon.GlobalValues `json:"global,"`
34-
UserArgs UserArgs `json:"args,"`
34+
GlobalValues policyaddon.GlobalValues `json:"global,"`
35+
KubernetesDistribution string `json:"kubernetesDistribution"`
36+
Prometheus map[string]interface{} `json:"prometheus"`
37+
UserArgs UserArgs `json:"args,"`
3538
}
3639

3740
//FS go:embed
@@ -56,6 +59,7 @@ func getValues(cluster *clusterv1.ManagedCluster,
5659
ImagePullSecret: "open-cluster-management-image-pull-credentials",
5760
ImageOverrides: map[string]string{
5861
"config_policy_controller": os.Getenv("CONFIG_POLICY_CONTROLLER_IMAGE"),
62+
"kube_rbac_proxy": os.Getenv("KUBE_RBAC_PROXY_IMAGE"),
5963
},
6064
NodeSelector: map[string]string{},
6165
ProxyConfig: map[string]string{
@@ -64,6 +68,7 @@ func getValues(cluster *clusterv1.ManagedCluster,
6468
"NO_PROXY": "",
6569
},
6670
},
71+
Prometheus: map[string]interface{}{},
6772
UserArgs: UserArgs{
6873
UserArgs: policyaddon.UserArgs{
6974
LogEncoder: "console",
@@ -74,6 +79,14 @@ func getValues(cluster *clusterv1.ManagedCluster,
7479
},
7580
}
7681

82+
for _, cc := range cluster.Status.ClusterClaims {
83+
if cc.Name == "product.open-cluster-management.io" {
84+
userValues.KubernetesDistribution = cc.Value
85+
86+
break
87+
}
88+
}
89+
7790
if val, ok := addon.GetAnnotations()[policyaddon.PolicyLogLevelAnnotation]; ok {
7891
logLevel := policyaddon.GetLogLevel(addonName, val)
7992
userValues.UserArgs.LogLevel = logLevel
@@ -93,6 +106,24 @@ func getValues(cluster *clusterv1.ManagedCluster,
93106
}
94107
}
95108

109+
// Enable Prometheus metrics by default on OpenShift
110+
userValues.Prometheus["enabled"] = userValues.KubernetesDistribution == "OpenShift"
111+
if userValues.KubernetesDistribution == "OpenShift" {
112+
userValues.Prometheus["serviceMonitor"] = map[string]interface{}{"namespace": "openshift-monitoring"}
113+
}
114+
115+
if val, ok := addon.GetAnnotations()[prometheusEnabledAnnotation]; ok {
116+
valBool, err := strconv.ParseBool(val)
117+
if err != nil {
118+
log.Error(err, fmt.Sprintf(
119+
"Failed to verify '%s' annotation value '%s' for component %s (falling back to default value %v)",
120+
prometheusEnabledAnnotation, val, addonName, userValues.Prometheus["enabled"]),
121+
)
122+
} else {
123+
userValues.Prometheus["enabled"] = valBool
124+
}
125+
}
126+
96127
return addonfactory.JsonStructToValues(userValues)
97128
}
98129

@@ -106,6 +137,7 @@ func GetAgentAddon(controllerContext *controllercmd.ControllerContext) (agent.Ag
106137
return addonfactory.NewAgentAddonFactory(addonName, FS, "manifests/managedclusterchart").
107138
WithGetValuesFuncs(getValues, addonfactory.GetValuesFromAddonAnnotation).
108139
WithAgentRegistrationOption(registrationOption).
140+
WithScheme(policyaddon.Scheme).
109141
BuildHelmAgentAddon()
110142
}
111143

pkg/addon/configpolicy/manifests/managedclusterchart/templates/deployment.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,27 @@ spec:
2929
heritage: {{ .Release.Service }}
3030
spec:
3131
containers:
32+
{{- if and .Values.prometheus.enabled (eq .Values.kubernetesDistribution "OpenShift") }}
33+
- name: kube-rbac-proxy
34+
image: "{{ .Values.global.imageOverrides.kube_rbac_proxy }}"
35+
imagePullPolicy: "{{ .Values.global.imagePullPolicy }}"
36+
args:
37+
- --upstream=http://127.0.0.1:8383/
38+
- --logtostderr=true
39+
- --v=6
40+
- --secure-listen-address=0.0.0.0:8443
41+
- "--tls-cert-file=/var/run/metrics-cert/tls.crt"
42+
- "--tls-private-key-file=/var/run/metrics-cert/tls.key"
43+
- "--tls-min-version=VersionTLS13"
44+
ports:
45+
- name: metrics
46+
protocol: TCP
47+
containerPort: 8443
48+
volumeMounts:
49+
- mountPath: "/var/run/metrics-cert"
50+
name: metrics-cert
51+
readOnly: true
52+
{{- end }}
3253
- name: {{ .Chart.Name }}
3354
image: "{{ .Values.global.imageOverrides.config_policy_controller }}"
3455
imagePullPolicy: "{{ .Values.global.imagePullPolicy }}"
@@ -44,6 +65,9 @@ spec:
4465
- --v={{ .Values.args.pkgLogLevel }}
4566
- --evaluation-concurrency={{ .Values.args.evaluationConcurrency }}
4667
- --health-probe-bind-address=:8081
68+
{{- if and .Values.prometheus.enabled (ne .Values.kubernetesDistribution "OpenShift") }}
69+
- --metrics-bind-address=0.0.0.0:8383
70+
{{- end }}
4771
env:
4872
- name: WATCH_NAMESPACE
4973
value: "{{ .Values.clusterName }}"
@@ -88,6 +112,12 @@ spec:
88112
failureThreshold: 30
89113
periodSeconds: 10
90114
{{- end }}
115+
{{- if and .Values.prometheus.enabled (ne .Values.kubernetesDistribution "OpenShift") }}
116+
ports:
117+
- name: metrics
118+
protocol: TCP
119+
containerPort: 8383
120+
{{- end }}
91121
resources: {{- toYaml .Values.resources | nindent 10 }}
92122
securityContext:
93123
allowPrivilegeEscalation: false
@@ -100,6 +130,11 @@ spec:
100130
- name: klusterlet-config
101131
secret:
102132
secretName: {{ .Values.hubKubeConfigSecret }}
133+
{{- if and .Values.prometheus.enabled (eq .Values.kubernetesDistribution "OpenShift") }}
134+
- name: metrics-cert
135+
secret:
136+
secretName: {{ include "controller.fullname" . }}-metrics
137+
{{- end }}
103138
{{- if .Values.global.imagePullSecret }}
104139
imagePullSecrets:
105140
- name: "{{ .Values.global.imagePullSecret }}"

0 commit comments

Comments
 (0)