Skip to content

Commit 57394ba

Browse files
authored
Add support for json log format (#1974)
1 parent e25a71e commit 57394ba

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

docs/book/src/developer/tilt.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,42 @@ kustomize_substitutions:
155155
IBMCLOUD_AUTH_URL: "https://iam.test.cloud.ibm.com"
156156
```
157157

158+
### 4. Configuration to use observability tools
159+
160+
- cluster-api provides support for deploying observability tools, More information about it is available in cluster-api [book](https://cluster-api.sigs.k8s.io/developer/logging#developing-and-testing-logs).
161+
162+
```yaml
163+
default_registry: "gcr.io/you-project-name-here"
164+
deploy_observability:
165+
- promtail
166+
- loki
167+
- grafana
168+
- prometheus
169+
provider_repos:
170+
- ../cluster-api-provider-ibmcloud
171+
enable_providers:
172+
- ibmcloud
173+
- kubeadm-bootstrap
174+
- kubeadm-control-plane
175+
kustomize_substitutions:
176+
IBMCLOUD_API_KEY: "XXXXXXXXXXXXXXXXXX"
177+
PROVIDER_ID_FORMAT: "v2"
178+
EXP_CLUSTER_RESOURCE_SET: "true"
179+
extra_args:
180+
core:
181+
- "--logging-format=json"
182+
- "--v=5"
183+
kubeadm-bootstrap:
184+
- "--v=5"
185+
- "--logging-format=json"
186+
kubeadm-control-plane:
187+
- "--v=5"
188+
- "--logging-format=json"
189+
ibmcloud:
190+
- "--v=5"
191+
- "--logging-format=json"
192+
```
193+
158194
**NOTE**: For information about all the fields that can be used in the `tilt-settings.yaml` file, check them [here](https://cluster-api.sigs.k8s.io/developer/tilt.html#tilt-settings-fields).
159195

160196
## Run Tilt

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ require (
3737
k8s.io/apimachinery v0.30.3
3838
k8s.io/cli-runtime v0.30.3
3939
k8s.io/client-go v0.30.3
40+
k8s.io/component-base v0.30.3
4041
k8s.io/klog/v2 v2.120.1
4142
k8s.io/utils v0.0.0-20231127182322-b307cd553661
4243
sigs.k8s.io/cluster-api v1.8.3
@@ -80,6 +81,7 @@ require (
8081
github.com/fsnotify/fsnotify v1.7.0 // indirect
8182
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
8283
github.com/go-logr/stdr v1.2.2 // indirect
84+
github.com/go-logr/zapr v1.3.0 // indirect
8385
github.com/go-openapi/analysis v0.21.5 // indirect
8486
github.com/go-openapi/errors v0.22.0 // indirect
8587
github.com/go-openapi/jsonpointer v0.20.1 // indirect
@@ -162,6 +164,7 @@ require (
162164
go.opentelemetry.io/otel/trace v1.24.0 // indirect
163165
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
164166
go.uber.org/multierr v1.11.0 // indirect
167+
go.uber.org/zap v1.27.0 // indirect
165168
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
166169
golang.org/x/oauth2 v0.21.0 // indirect
167170
golang.org/x/sync v0.8.0 // indirect
@@ -180,7 +183,6 @@ require (
180183
gopkg.in/yaml.v3 v3.0.1 // indirect
181184
k8s.io/apiserver v0.30.3 // indirect
182185
k8s.io/cluster-bootstrap v0.30.3 // indirect
183-
k8s.io/component-base v0.30.3 // indirect
184186
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
185187
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.0 // indirect
186188
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect

main.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ import (
3030
"k8s.io/apimachinery/pkg/runtime"
3131
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
3232
cgrecord "k8s.io/client-go/tools/record"
33+
"k8s.io/component-base/logs"
34+
logsv1 "k8s.io/component-base/logs/api/v1"
3335
"k8s.io/klog/v2"
3436

3537
ctrl "sigs.k8s.io/controller-runtime"
@@ -48,6 +50,7 @@ import (
4850
"sigs.k8s.io/cluster-api-provider-ibmcloud/pkg/record"
4951

5052
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
53+
_ "k8s.io/component-base/logs/json/register"
5154
)
5255

5356
var (
@@ -56,6 +59,7 @@ var (
5659
healthAddr string
5760
syncPeriod time.Duration
5861
managerOptions = flags.ManagerOptions{}
62+
logOptions = logs.NewOptions()
5963
webhookPort int
6064
webhookCertDir string
6165

@@ -126,6 +130,7 @@ func initFlags(fs *pflag.FlagSet) {
126130
fs.StringVar(&webhookCertDir, "webhook-cert-dir", "/tmp/k8s-webhook-server/serving-certs/",
127131
"The webhook certificate directory, where the server should find the TLS certificate and key.")
128132

133+
logsv1.AddFlags(logOptions, fs)
129134
flags.AddManagerOptions(fs, &managerOptions)
130135
}
131136

@@ -139,6 +144,12 @@ func validateFlags() error {
139144
default:
140145
return fmt.Errorf("invalid value for flag provider-id-fmt: %s, Supported values: %s, %s ", options.ProviderIDFormat, options.ProviderIDFormatV1, options.ProviderIDFormatV2)
141146
}
147+
148+
if err := logsv1.ValidateAndApply(logOptions, nil); err != nil {
149+
setupLog.Error(err, "unable to validate and apply log options")
150+
return err
151+
}
152+
142153
return nil
143154
}
144155

0 commit comments

Comments
 (0)