mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-03 23:40:03 +00:00 
			
		
		
		
	Revert "Graduate API Server tracing to beta"
This commit is contained in:
		@@ -19,7 +19,6 @@ package apiserver
 | 
			
		||||
import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	tracingapi "k8s.io/component-base/tracing/api/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 | 
			
		||||
@@ -154,6 +153,16 @@ type TLSConfig struct {
 | 
			
		||||
type TracingConfiguration struct {
 | 
			
		||||
	metav1.TypeMeta
 | 
			
		||||
 | 
			
		||||
	// Embed the component config tracing configuration struct
 | 
			
		||||
	tracingapi.TracingConfiguration
 | 
			
		||||
	// +optional
 | 
			
		||||
	// Endpoint of the collector that's running on the control-plane node.
 | 
			
		||||
	// The APIServer uses the egressType ControlPlane when sending data to the collector.
 | 
			
		||||
	// The syntax is defined in https://github.com/grpc/grpc/blob/master/doc/naming.md.
 | 
			
		||||
	// Defaults to the otlp grpc default, localhost:4317
 | 
			
		||||
	// The connection is insecure, and does not currently support TLS.
 | 
			
		||||
	Endpoint *string
 | 
			
		||||
 | 
			
		||||
	// +optional
 | 
			
		||||
	// SamplingRatePerMillion is the number of samples to collect per million spans.
 | 
			
		||||
	// Defaults to 0.
 | 
			
		||||
	SamplingRatePerMillion *int32
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,6 @@ package v1alpha1
 | 
			
		||||
import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	tracingapi "k8s.io/component-base/tracing/api/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 | 
			
		||||
@@ -155,6 +154,16 @@ type TLSConfig struct {
 | 
			
		||||
type TracingConfiguration struct {
 | 
			
		||||
	metav1.TypeMeta `json:",inline"`
 | 
			
		||||
 | 
			
		||||
	// Embed the component config tracing configuration struct
 | 
			
		||||
	tracingapi.TracingConfiguration `json:",inline"`
 | 
			
		||||
	// +optional
 | 
			
		||||
	// Endpoint of the collector that's running on the control-plane node.
 | 
			
		||||
	// The APIServer uses the egressType ControlPlane when sending data to the collector.
 | 
			
		||||
	// The syntax is defined in https://github.com/grpc/grpc/blob/master/doc/naming.md.
 | 
			
		||||
	// Defaults to the otlpgrpc default, localhost:4317
 | 
			
		||||
	// The connection is insecure, and does not support TLS.
 | 
			
		||||
	Endpoint *string `json:"endpoint,omitempty" protobuf:"bytes,1,opt,name=endpoint"`
 | 
			
		||||
 | 
			
		||||
	// +optional
 | 
			
		||||
	// SamplingRatePerMillion is the number of samples to collect per million spans.
 | 
			
		||||
	// Defaults to 0.
 | 
			
		||||
	SamplingRatePerMillion *int32 `json:"samplingRatePerMillion,omitempty" protobuf:"varint,2,opt,name=samplingRatePerMillion"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -313,7 +313,8 @@ func Convert_apiserver_TLSConfig_To_v1alpha1_TLSConfig(in *apiserver.TLSConfig,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1alpha1_TracingConfiguration_To_apiserver_TracingConfiguration(in *TracingConfiguration, out *apiserver.TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	out.TracingConfiguration = in.TracingConfiguration
 | 
			
		||||
	out.Endpoint = (*string)(unsafe.Pointer(in.Endpoint))
 | 
			
		||||
	out.SamplingRatePerMillion = (*int32)(unsafe.Pointer(in.SamplingRatePerMillion))
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -323,7 +324,8 @@ func Convert_v1alpha1_TracingConfiguration_To_apiserver_TracingConfiguration(in
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_apiserver_TracingConfiguration_To_v1alpha1_TracingConfiguration(in *apiserver.TracingConfiguration, out *TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	out.TracingConfiguration = in.TracingConfiguration
 | 
			
		||||
	out.Endpoint = (*string)(unsafe.Pointer(in.Endpoint))
 | 
			
		||||
	out.SamplingRatePerMillion = (*int32)(unsafe.Pointer(in.SamplingRatePerMillion))
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +189,16 @@ func (in *TLSConfig) DeepCopy() *TLSConfig {
 | 
			
		||||
func (in *TracingConfiguration) DeepCopyInto(out *TracingConfiguration) {
 | 
			
		||||
	*out = *in
 | 
			
		||||
	out.TypeMeta = in.TypeMeta
 | 
			
		||||
	in.TracingConfiguration.DeepCopyInto(&out.TracingConfiguration)
 | 
			
		||||
	if in.Endpoint != nil {
 | 
			
		||||
		in, out := &in.Endpoint, &out.Endpoint
 | 
			
		||||
		*out = new(string)
 | 
			
		||||
		**out = **in
 | 
			
		||||
	}
 | 
			
		||||
	if in.SamplingRatePerMillion != nil {
 | 
			
		||||
		in, out := &in.SamplingRatePerMillion, &out.SamplingRatePerMillion
 | 
			
		||||
		*out = new(int32)
 | 
			
		||||
		**out = **in
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,14 +23,10 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const GroupName = "apiserver.k8s.io"
 | 
			
		||||
const ConfigGroupName = "apiserver.config.k8s.io"
 | 
			
		||||
 | 
			
		||||
// SchemeGroupVersion is group version used to register these objects
 | 
			
		||||
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"}
 | 
			
		||||
 | 
			
		||||
// ConfigSchemeGroupVersion is group version used to register these objects
 | 
			
		||||
var ConfigSchemeGroupVersion = schema.GroupVersion{Group: ConfigGroupName, Version: "v1beta1"}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api.
 | 
			
		||||
	// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
 | 
			
		||||
@@ -51,9 +47,6 @@ func addKnownTypes(scheme *runtime.Scheme) error {
 | 
			
		||||
	scheme.AddKnownTypes(SchemeGroupVersion,
 | 
			
		||||
		&EgressSelectorConfiguration{},
 | 
			
		||||
	)
 | 
			
		||||
	scheme.AddKnownTypes(ConfigSchemeGroupVersion,
 | 
			
		||||
		&TracingConfiguration{},
 | 
			
		||||
	)
 | 
			
		||||
	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,6 @@ package v1beta1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	tracingapi "k8s.io/component-base/tracing/api/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 | 
			
		||||
@@ -119,13 +118,3 @@ type TLSConfig struct {
 | 
			
		||||
	// +optional
 | 
			
		||||
	ClientCert string `json:"clientCert,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 | 
			
		||||
 | 
			
		||||
// TracingConfiguration provides versioned configuration for tracing clients.
 | 
			
		||||
type TracingConfiguration struct {
 | 
			
		||||
	metav1.TypeMeta `json:",inline"`
 | 
			
		||||
 | 
			
		||||
	// Embed the component config tracing configuration struct
 | 
			
		||||
	tracingapi.TracingConfiguration `json:",inline"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -81,16 +81,6 @@ func RegisterConversions(s *runtime.Scheme) error {
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := s.AddGeneratedConversionFunc((*TracingConfiguration)(nil), (*apiserver.TracingConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
 | 
			
		||||
		return Convert_v1beta1_TracingConfiguration_To_apiserver_TracingConfiguration(a.(*TracingConfiguration), b.(*apiserver.TracingConfiguration), scope)
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := s.AddGeneratedConversionFunc((*apiserver.TracingConfiguration)(nil), (*TracingConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
 | 
			
		||||
		return Convert_apiserver_TracingConfiguration_To_v1beta1_TracingConfiguration(a.(*apiserver.TracingConfiguration), b.(*TracingConfiguration), scope)
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := s.AddGeneratedConversionFunc((*Transport)(nil), (*apiserver.Transport)(nil), func(a, b interface{}, scope conversion.Scope) error {
 | 
			
		||||
		return Convert_v1beta1_Transport_To_apiserver_Transport(a.(*Transport), b.(*apiserver.Transport), scope)
 | 
			
		||||
	}); err != nil {
 | 
			
		||||
@@ -248,26 +238,6 @@ func Convert_apiserver_TLSConfig_To_v1beta1_TLSConfig(in *apiserver.TLSConfig, o
 | 
			
		||||
	return autoConvert_apiserver_TLSConfig_To_v1beta1_TLSConfig(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1beta1_TracingConfiguration_To_apiserver_TracingConfiguration(in *TracingConfiguration, out *apiserver.TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	out.TracingConfiguration = in.TracingConfiguration
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Convert_v1beta1_TracingConfiguration_To_apiserver_TracingConfiguration is an autogenerated conversion function.
 | 
			
		||||
func Convert_v1beta1_TracingConfiguration_To_apiserver_TracingConfiguration(in *TracingConfiguration, out *apiserver.TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_v1beta1_TracingConfiguration_To_apiserver_TracingConfiguration(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_apiserver_TracingConfiguration_To_v1beta1_TracingConfiguration(in *apiserver.TracingConfiguration, out *TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	out.TracingConfiguration = in.TracingConfiguration
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Convert_apiserver_TracingConfiguration_To_v1beta1_TracingConfiguration is an autogenerated conversion function.
 | 
			
		||||
func Convert_apiserver_TracingConfiguration_To_v1beta1_TracingConfiguration(in *apiserver.TracingConfiguration, out *TracingConfiguration, s conversion.Scope) error {
 | 
			
		||||
	return autoConvert_apiserver_TracingConfiguration_To_v1beta1_TracingConfiguration(in, out, s)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func autoConvert_v1beta1_Transport_To_apiserver_Transport(in *Transport, out *apiserver.Transport, s conversion.Scope) error {
 | 
			
		||||
	out.TCP = (*apiserver.TCPTransport)(unsafe.Pointer(in.TCP))
 | 
			
		||||
	out.UDS = (*apiserver.UDSTransport)(unsafe.Pointer(in.UDS))
 | 
			
		||||
 
 | 
			
		||||
@@ -132,32 +132,6 @@ func (in *TLSConfig) DeepCopy() *TLSConfig {
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 | 
			
		||||
func (in *TracingConfiguration) DeepCopyInto(out *TracingConfiguration) {
 | 
			
		||||
	*out = *in
 | 
			
		||||
	out.TypeMeta = in.TypeMeta
 | 
			
		||||
	in.TracingConfiguration.DeepCopyInto(&out.TracingConfiguration)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TracingConfiguration.
 | 
			
		||||
func (in *TracingConfiguration) DeepCopy() *TracingConfiguration {
 | 
			
		||||
	if in == nil {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	out := new(TracingConfiguration)
 | 
			
		||||
	in.DeepCopyInto(out)
 | 
			
		||||
	return out
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
 | 
			
		||||
func (in *TracingConfiguration) DeepCopyObject() runtime.Object {
 | 
			
		||||
	if c := in.DeepCopy(); c != nil {
 | 
			
		||||
		return c
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 | 
			
		||||
func (in *Transport) DeepCopyInto(out *Transport) {
 | 
			
		||||
	*out = *in
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +189,16 @@ func (in *TLSConfig) DeepCopy() *TLSConfig {
 | 
			
		||||
func (in *TracingConfiguration) DeepCopyInto(out *TracingConfiguration) {
 | 
			
		||||
	*out = *in
 | 
			
		||||
	out.TypeMeta = in.TypeMeta
 | 
			
		||||
	in.TracingConfiguration.DeepCopyInto(&out.TracingConfiguration)
 | 
			
		||||
	if in.Endpoint != nil {
 | 
			
		||||
		in, out := &in.Endpoint, &out.Endpoint
 | 
			
		||||
		*out = new(string)
 | 
			
		||||
		**out = **in
 | 
			
		||||
	}
 | 
			
		||||
	if in.SamplingRatePerMillion != nil {
 | 
			
		||||
		in, out := &in.SamplingRatePerMillion, &out.SamplingRatePerMillion
 | 
			
		||||
		*out = new(int32)
 | 
			
		||||
		**out = **in
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -73,7 +73,7 @@ const (
 | 
			
		||||
	APIServerIdentity featuregate.Feature = "APIServerIdentity"
 | 
			
		||||
 | 
			
		||||
	// owner: @dashpole
 | 
			
		||||
	// beta: v1.26
 | 
			
		||||
	// alpha: v1.22
 | 
			
		||||
	//
 | 
			
		||||
	// Add support for distributed tracing in the API Server
 | 
			
		||||
	APIServerTracing featuregate.Feature = "APIServerTracing"
 | 
			
		||||
@@ -218,7 +218,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
 | 
			
		||||
 | 
			
		||||
	APIServerIdentity: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
 | 
			
		||||
	APIServerTracing: {Default: true, PreRelease: featuregate.Beta},
 | 
			
		||||
	APIServerTracing: {Default: false, PreRelease: featuregate.Alpha},
 | 
			
		||||
 | 
			
		||||
	AdvancedAuditing: {Default: true, PreRelease: featuregate.GA},
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -154,5 +154,9 @@ func ReadTracingConfiguration(configFilePath string) (*tracingapi.TracingConfigu
 | 
			
		||||
	if err := runtime.DecodeInto(codecs.UniversalDecoder(), data, internalConfig); err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("unable to decode tracing configuration data: %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	return &internalConfig.TracingConfiguration, nil
 | 
			
		||||
	tc := &tracingapi.TracingConfiguration{
 | 
			
		||||
		Endpoint:               internalConfig.Endpoint,
 | 
			
		||||
		SamplingRatePerMillion: internalConfig.SamplingRatePerMillion,
 | 
			
		||||
	}
 | 
			
		||||
	return tc, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -37,7 +37,10 @@ import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/strategicpatch"
 | 
			
		||||
	genericfeatures "k8s.io/apiserver/pkg/features"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	client "k8s.io/client-go/kubernetes"
 | 
			
		||||
	featuregatetesting "k8s.io/component-base/featuregate/testing"
 | 
			
		||||
	kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
 | 
			
		||||
	"k8s.io/kubernetes/test/integration/framework"
 | 
			
		||||
)
 | 
			
		||||
@@ -76,7 +79,7 @@ egressSelections:
 | 
			
		||||
	defer os.Remove(tracingConfigFile.Name())
 | 
			
		||||
 | 
			
		||||
	if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(`
 | 
			
		||||
apiVersion: apiserver.config.k8s.io/v1beta1
 | 
			
		||||
apiVersion: apiserver.config.k8s.io/v1alpha1
 | 
			
		||||
kind: TracingConfiguration
 | 
			
		||||
endpoint: %s`, listener.Addr().String())), os.FileMode(0755)); err != nil {
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
@@ -104,6 +107,7 @@ endpoint: %s`, listener.Addr().String())), os.FileMode(0755)); err != nil {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPIServerTracing(t *testing.T) {
 | 
			
		||||
	defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, genericfeatures.APIServerTracing, true)()
 | 
			
		||||
	// Listen for traces from the API Server before starting it, so the
 | 
			
		||||
	// API Server will successfully connect right away during the test.
 | 
			
		||||
	listener, err := net.Listen("tcp", "localhost:")
 | 
			
		||||
@@ -118,7 +122,7 @@ func TestAPIServerTracing(t *testing.T) {
 | 
			
		||||
	defer os.Remove(tracingConfigFile.Name())
 | 
			
		||||
 | 
			
		||||
	if err := os.WriteFile(tracingConfigFile.Name(), []byte(fmt.Sprintf(`
 | 
			
		||||
apiVersion: apiserver.config.k8s.io/v1beta1
 | 
			
		||||
apiVersion: apiserver.config.k8s.io/v1alpha1
 | 
			
		||||
kind: TracingConfiguration
 | 
			
		||||
samplingRatePerMillion: 1000000
 | 
			
		||||
endpoint: %s`, listener.Addr().String())), os.FileMode(0755)); err != nil {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user