@@ -192,6 +192,37 @@ func DownloadFromAppInWorkloadCluster(ctx context.Context, workloadKubeconfigPat
192
192
return KubectlExec (ctx , "run" , workloadKubeconfigPath , runArgs ... )
193
193
}
194
194
195
+ func DownloadMetricsFromCAPCManager (ctx context.Context , bootstrapKubeconfigPath string ) (string , error ) {
196
+ // Expose the CAPC manager metrics port via a K8S service
197
+ runArgs := []string {
198
+ "--port=8080" , "--target-port=metrics" , "--name=capc-controller-manager-metrics" , "--namespace=capc-system" , "deployment" , "capc-controller-manager" ,
199
+ }
200
+ _ , err := KubectlExec (ctx , "expose" , bootstrapKubeconfigPath , runArgs ... )
201
+ if err != nil {
202
+ fmt .Println (err )
203
+ return "" , err
204
+ }
205
+
206
+ // Scrape the metrics from the service
207
+ runArgs = []string {
208
+ "-i" , "--restart=Never" , "dummy" , "--image=dockerqa/curl:ubuntu-trusty" , "--command" , "--" , "curl" , "--silent" , "capc-controller-manager-metrics.capc-system:8080/metrics" ,
209
+ }
210
+ result , err := KubectlExec (ctx , "run" , bootstrapKubeconfigPath , runArgs ... )
211
+ if err != nil {
212
+ return result , err
213
+ }
214
+
215
+ // Remove the metrics service
216
+ runArgs = []string {
217
+ "--namespace=capc-system" , "service" , "capc-controller-manager-metrics" ,
218
+ }
219
+ _ , err = KubectlExec (ctx , "delete" , bootstrapKubeconfigPath , runArgs ... )
220
+ if err != nil {
221
+ return "" , err
222
+ }
223
+ return result , err
224
+ }
225
+
195
226
type cloudConfig struct {
196
227
APIURL string `ini:"api-url"`
197
228
APIKey string `ini:"api-key"`
0 commit comments