Skip to content

Commit ed85cfc

Browse files
authored
Merge pull request #604 from KubeKyrie/add-otel-trace
add OTEL trace for clusterpedia-apiserver
2 parents 84c7402 + 2e13a70 commit ed85cfc

File tree

5 files changed

+53
-3
lines changed

5 files changed

+53
-3
lines changed

cmd/apiserver/app/options/options.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type ClusterPediaServerOptions struct {
3939
CoreAPI *genericoptions.CoreAPIOptions
4040
FeatureGate featuregate.FeatureGate
4141
Admission *genericoptions.AdmissionOptions
42-
// Traces *genericoptions.TracingOptions
42+
Traces *genericoptions.TracingOptions
4343

4444
Storage *storageoptions.StorageOptions
4545
}
@@ -66,7 +66,7 @@ func NewServerOptions() *ClusterPediaServerOptions {
6666
CoreAPI: genericoptions.NewCoreAPIOptions(),
6767
FeatureGate: feature.DefaultFeatureGate,
6868
Admission: genericoptions.NewAdmissionOptions(),
69-
// Traces: genericoptions.NewTracingOptions(),
69+
Traces: genericoptions.NewTracingOptions(),
7070

7171
Storage: storageoptions.NewStorageOptions(),
7272
}
@@ -154,6 +154,9 @@ func (o *ClusterPediaServerOptions) genericOptionsApplyTo(config *genericapiserv
154154
if err := o.Admission.ApplyTo(&config.Config, config.SharedInformerFactory, client, dynamicClient, o.FeatureGate); err != nil {
155155
return err
156156
}
157+
if err := o.Traces.ApplyTo(nil, &config.Config); err != nil {
158+
return err
159+
}
157160

158161
return nil
159162
}
@@ -176,7 +179,7 @@ func (o *ClusterPediaServerOptions) Flags() cliflag.NamedFlagSets {
176179
logsapi.AddFlags(o.Logs, fss.FlagSet("logs"))
177180

178181
// o.Admission.AddFlags(fss.FlagSet("admission"))
179-
// o.Traces.AddFlags(fss.FlagSet("traces"))
182+
o.Traces.AddFlags(fss.FlagSet("traces"))
180183

181184
o.Storage.AddFlags(fss.FlagSet("storage"))
182185
return fss

deploy/clusterpedia_apiserver_deployment.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ spec:
4141
- /usr/local/bin/apiserver
4242
- --secure-port=443
4343
- --storage-config=/etc/clusterpedia/storage/internalstorage-config.yaml
44+
- --tracing-config-file=/etc/clusterpedia/trace/tracing-config.yaml
4445
- -v=3
4546
env:
4647
- name: DB_PASSWORD
@@ -52,8 +53,27 @@ spec:
5253
- name: internalstorage-config
5354
mountPath: /etc/clusterpedia/storage
5455
readOnly: true
56+
- name: tracing-config
57+
mountPath: /etc/clusterpedia/trace
58+
readOnly: true
5559
serviceAccountName: clusterpedia-apiserver
5660
volumes:
5761
- name: internalstorage-config
5862
configMap:
5963
name: clusterpedia-internalstorage
64+
- name: tracing-config
65+
configMap:
66+
name: clusterpedia-tracing-config
67+
---
68+
apiVersion: v1
69+
kind: ConfigMap
70+
metadata:
71+
name: clusterpedia-tracing-config
72+
namespace: clusterpedia-system
73+
data:
74+
tracing-config.yaml: |
75+
apiVersion: apiserver.config.k8s.io/v1beta1
76+
kind: TracingConfiguration
77+
# default
78+
# endpoint: localhost:4317
79+
samplingRatePerMillion: 1000000

kustomize/apiserver/clusterpedia_apiserver_deployment.yaml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ spec:
4141
- /usr/local/bin/apiserver
4242
- --secure-port=443
4343
- --storage-config=/etc/clusterpedia/storage/internalstorage-config.yaml
44+
- --tracing-config-file=/etc/clusterpedia/trace/tracing-config.yaml
4445
- -v=3
4546
env:
4647
- name: DB_PASSWORD
@@ -52,8 +53,27 @@ spec:
5253
- name: internalstorage-config
5354
mountPath: /etc/clusterpedia/storage
5455
readOnly: true
56+
- name: tracing-config
57+
mountPath: /etc/clusterpedia/trace
58+
readOnly: true
5559
serviceAccountName: clusterpedia-apiserver
5660
volumes:
5761
- name: internalstorage-config
5862
configMap:
5963
name: clusterpedia-internalstorage
64+
- name: tracing-config
65+
configMap:
66+
name: clusterpedia-tracing-config
67+
---
68+
apiVersion: v1
69+
kind: ConfigMap
70+
metadata:
71+
name: clusterpedia-tracing-config
72+
namespace: clusterpedia-system
73+
data:
74+
tracing-config.yaml: |
75+
apiVersion: apiserver.config.k8s.io/v1beta1
76+
kind: TracingConfiguration
77+
# default
78+
# endpoint: localhost:4317
79+
samplingRatePerMillion: 1000000

pkg/apiserver/apiserver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ func (config completedConfig) New() (*ClusterPediaServer, error) {
124124
resourceServerConfig := kubeapiserver.NewDefaultConfig()
125125
resourceServerConfig.GenericConfig.ExternalAddress = config.GenericConfig.ExternalAddress
126126
resourceServerConfig.GenericConfig.LoopbackClientConfig = config.GenericConfig.LoopbackClientConfig
127+
resourceServerConfig.GenericConfig.TracerProvider = config.GenericConfig.TracerProvider
127128
resourceServerConfig.ExtraConfig = kubeapiserver.ExtraConfig{
128129
InformerFactory: clusterpediaInformerFactory,
129130
StorageFactory: config.StorageFactory,

pkg/kubeapiserver/apiserver.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ import (
1111
"k8s.io/apimachinery/pkg/runtime/serializer"
1212
genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
1313
genericrequest "k8s.io/apiserver/pkg/endpoints/request"
14+
genericfeatures "k8s.io/apiserver/pkg/features"
1415
genericapiserver "k8s.io/apiserver/pkg/server"
1516
genericfilters "k8s.io/apiserver/pkg/server/filters"
1617
"k8s.io/apiserver/pkg/server/healthz"
18+
utilfeature "k8s.io/apiserver/pkg/util/feature"
1719
"k8s.io/client-go/restmapper"
1820

1921
informers "github.com/clusterpedia-io/clusterpedia/pkg/generated/informers/externalversions"
@@ -145,6 +147,10 @@ func BuildHandlerChain(apiHandler http.Handler, c *genericapiserver.Config) http
145147
// https://github.com/clusterpedia-io/clusterpedia/issues/54
146148
handler = filters.RemoveFieldSelectorFromRequest(handler)
147149

150+
if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerTracing) {
151+
handler = genericapifilters.WithTracing(handler, c.TracerProvider)
152+
}
153+
148154
/* used for debugging
149155
handler = genericapifilters.WithWarningRecorder(handler)
150156
handler = WithClusterName(handler, "cluster-1")

0 commit comments

Comments
 (0)