Skip to content

Commit

Permalink
Initial support for auto-instrumentation
Browse files Browse the repository at this point in the history
Signed-off-by: Pavol Loffay <p.loffay@gmail.com>
  • Loading branch information
pavolloffay committed Oct 20, 2021
1 parent 43904c4 commit c4594e4
Show file tree
Hide file tree
Showing 19 changed files with 853 additions and 138 deletions.
68 changes: 68 additions & 0 deletions api/v1alpha1/opentelemetryinst_types.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package v1alpha1

import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

type OpenTelemetryInstSpec struct {
// +optional
// +operator-sdk:gen-csv:customresourcedefinitions.specDescriptors=true
Java JavaSpec `json:"java,omitempty"`
// +optional
// +operator-sdk:gen-csv:customresourcedefinitions.specDescriptors=true
Reporter `json:"reporter,omitempty"`
}

type JavaSpec struct {
// +optional
// +operator-sdk:gen-csv:customresourcedefinitions.specDescriptors=true
Image string `json:"image,omitempty"`
}

type Reporter struct {
// +optional
// +operator-sdk:gen-csv:customresourcedefinitions.specDescriptors=true
Endpoint string `json:"endpoint,omitempty"`
}

type OpenTelemetryInstStatus struct {
}

// +kubebuilder:object:root=true
// +kubebuilder:resource:shortName=otelinst;otelinsts
// +kubebuilder:subresource:status
// +kubebuilder:subresource:scale:specpath=.spec.replicas,statuspath=.status.replicas
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// +operator-sdk:csv:customresourcedefinitions:displayName="OpenTelemetry Instrumentation"

type OpenTelemetryInst struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`

Spec OpenTelemetryInstSpec `json:"spec,omitempty"`
Status OpenTelemetryInstStatus `json:"status,omitempty"`
}

// +kubebuilder:object:root=true

type OpenTelemetryInstList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []OpenTelemetryInst `json:"items"`
}

func init() {
SchemeBuilder.Register(&OpenTelemetryInst{}, &OpenTelemetryInstList{})
}
121 changes: 121 additions & 0 deletions api/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions bundle/manifests/opentelemetry-operator.clusterserviceversion.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ spec:
- kind: OpenTelemetryCollector
name: opentelemetrycollectors.opentelemetry.io
version: v1alpha1
- kind: OpenTelemetryInst
name: opentelemetryinsts.opentelemetry.io
version: v1alpha1
description: |-
OpenTelemetry is a collection of tools, APIs, and SDKs. You use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior.
Expand Down Expand Up @@ -174,6 +177,14 @@ spec:
- get
- patch
- update
- apiGroups:
- opentelemetry.io
resources:
- opentelemetryinsts
verbs:
- get
- list
- watch
- apiGroups:
- authentication.k8s.io
resources:
Expand Down
68 changes: 68 additions & 0 deletions bundle/manifests/opentelemetry.io_opentelemetryinsts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.6.0-beta.0
creationTimestamp: null
name: opentelemetryinsts.opentelemetry.io
spec:
group: opentelemetry.io
names:
kind: OpenTelemetryInst
listKind: OpenTelemetryInstList
plural: opentelemetryinsts
shortNames:
- otelinst
- otelinsts
singular: opentelemetryinst
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
java:
properties:
image:
type: string
type: object
reporter:
properties:
endpoint:
type: string
type: object
type: object
status:
type: object
type: object
served: true
storage: true
subresources:
scale:
specReplicasPath: .spec.replicas
statusReplicasPath: .status.replicas
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
70 changes: 70 additions & 0 deletions config/crd/bases/opentelemetry.io_opentelemetryinsts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.6.0-beta.0
creationTimestamp: null
name: opentelemetryinsts.opentelemetry.io
spec:
group: opentelemetry.io
names:
kind: OpenTelemetryInst
listKind: OpenTelemetryInstList
plural: opentelemetryinsts
shortNames:
- otelinst
- otelinsts
singular: opentelemetryinst
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
properties:
java:
properties:
image:
type: string
type: object
reporter:
properties:
endpoint:
type: string
type: object
type: object
status:
type: object
type: object
served: true
storage: true
subresources:
scale:
specReplicasPath: .spec.replicas
statusReplicasPath: .status.replicas
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []
1 change: 1 addition & 0 deletions config/crd/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
# It should be run by config/default
resources:
- bases/opentelemetry.io_opentelemetrycollectors.yaml
- bases/opentelemetry.io_opentelemetryinsts.yaml
# +kubebuilder:scaffold:crdkustomizeresource

patchesStrategicMerge:
Expand Down
8 changes: 8 additions & 0 deletions config/rbac/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,11 @@ rules:
- get
- patch
- update
- apiGroups:
- opentelemetry.io
resources:
- opentelemetryinsts
verbs:
- get
- list
- watch
Loading

0 comments on commit c4594e4

Please sign in to comment.