@@ -57,6 +57,10 @@ func createStaticModeCommand() *cobra.Command {
5757 leaderElectionLockNameFlag = "leader-election-lock-name"
5858 plusFlag = "nginx-plus"
5959 gwAPIExperimentalFlag = "gateway-api-experimental-features"
60+ usageReportSecretFlag = "usage-report-secret"
61+ usageReportServerURLFlag = "usage-report-server-url"
62+ usageReportSkipVerifyFlag = "usage-report-skip-verify"
63+ usageReportClusterNameFlag = "usage-report-cluster-name"
6064 )
6165
6266 // flag values
@@ -95,9 +99,17 @@ func createStaticModeCommand() *cobra.Command {
9599 value : "nginx-gateway-leader-election-lock" ,
96100 }
97101
98- plus bool
99-
100102 gwExperimentalFeatures bool
103+
104+ plus bool
105+ usageReportSkipVerify bool
106+ usageReportClusterName = stringValidatingValue {
107+ validator : validateQualifiedName ,
108+ }
109+ usageReportSecretName = namespacedNameValue {}
110+ usageReportServerURL = stringValidatingValue {
111+ validator : validateURL ,
112+ }
101113 )
102114
103115 cmd := & cobra.Command {
@@ -144,6 +156,20 @@ func createStaticModeCommand() *cobra.Command {
144156 gwNsName = & gateway .value
145157 }
146158
159+ var usageReportConfig * config.UsageReportConfig
160+ if cmd .Flags ().Changed (usageReportSecretFlag ) {
161+ if ! plus {
162+ return errors .New ("usage-report arguments are only valid if using nginx-plus" )
163+ }
164+
165+ usageReportConfig = & config.UsageReportConfig {
166+ SecretNsName : usageReportSecretName .value ,
167+ ServerURL : usageReportServerURL .value ,
168+ ClusterDisplayName : usageReportClusterName .value ,
169+ InsecureSkipVerify : usageReportSkipVerify ,
170+ }
171+ }
172+
147173 conf := config.Config {
148174 GatewayCtlrName : gatewayCtlrName .value ,
149175 ConfigName : configName .String (),
@@ -167,11 +193,12 @@ func createStaticModeCommand() *cobra.Command {
167193 Port : metricsListenPort .value ,
168194 Secure : metricsSecure ,
169195 },
170- LeaderElection : config.LeaderElection {
196+ LeaderElection : config.LeaderElectionConfig {
171197 Enabled : ! disableLeaderElection ,
172198 LockName : leaderElectionLockName .String (),
173199 Identity : podName ,
174200 },
201+ UsageReportConfig : usageReportConfig ,
175202 Plus : plus ,
176203 TelemetryReportPeriod : period ,
177204 Version : version ,
@@ -297,6 +324,33 @@ func createStaticModeCommand() *cobra.Command {
297324 "Requires the Gateway APIs installed from the experimental channel." ,
298325 )
299326
327+ cmd .Flags ().Var (
328+ & usageReportSecretName ,
329+ usageReportSecretFlag ,
330+ "The namespace/name of the Secret containing the credentials for NGINX Plus usage reporting." ,
331+ )
332+
333+ cmd .Flags ().Var (
334+ & usageReportServerURL ,
335+ usageReportServerURLFlag ,
336+ "The base server URL of the NGINX Plus usage reporting server." ,
337+ )
338+
339+ cmd .MarkFlagsRequiredTogether (usageReportSecretFlag , usageReportServerURLFlag )
340+
341+ cmd .Flags ().Var (
342+ & usageReportClusterName ,
343+ usageReportClusterNameFlag ,
344+ "The display name of the Kubernetes cluster in the NGINX Plus usage reporting server." ,
345+ )
346+
347+ cmd .Flags ().BoolVar (
348+ & usageReportSkipVerify ,
349+ usageReportSkipVerifyFlag ,
350+ false ,
351+ "Disable client verification of the NGINX Plus usage reporting server certificate." ,
352+ )
353+
300354 return cmd
301355}
302356
0 commit comments