Skip to content

Commit

Permalink
Merge pull request kubernetes#123405 from cici37/vapGA
Browse files Browse the repository at this point in the history
[KEP-3488]Promote ValidatingAdmissionPolicy to GA
  • Loading branch information
k8s-ci-robot committed Mar 6, 2024
2 parents 39b085d + 5d83282 commit 2b521e5
Show file tree
Hide file tree
Showing 99 changed files with 19,297 additions and 3,057 deletions.
61 changes: 61 additions & 0 deletions api/discovery/aggregated_v2beta1.json
Original file line number Diff line number Diff line change
Expand Up @@ -1255,6 +1255,67 @@
"watch"
]
},
{
"categories": [
"api-extensions"
],
"resource": "validatingadmissionpolicies",
"responseKind": {
"group": "",
"kind": "ValidatingAdmissionPolicy",
"version": ""
},
"scope": "Cluster",
"singularResource": "validatingadmissionpolicy",
"subresources": [
{
"responseKind": {
"group": "",
"kind": "ValidatingAdmissionPolicy",
"version": ""
},
"subresource": "status",
"verbs": [
"get",
"patch",
"update"
]
}
],
"verbs": [
"create",
"delete",
"deletecollection",
"get",
"list",
"patch",
"update",
"watch"
]
},
{
"categories": [
"api-extensions"
],
"resource": "validatingadmissionpolicybindings",
"responseKind": {
"group": "",
"kind": "ValidatingAdmissionPolicyBinding",
"version": ""
},
"scope": "Cluster",
"singularResource": "validatingadmissionpolicybinding",
"verbs": [
"create",
"delete",
"deletecollection",
"get",
"list",
"patch",
"update",
"watch"
]
},
{
"categories": [
"api-extensions"
Expand Down
51 changes: 51 additions & 0 deletions api/discovery/apis__admissionregistration.k8s.io__v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,57 @@
"watch"
]
},
{
"categories": [
"api-extensions"
],
"kind": "ValidatingAdmissionPolicy",
"name": "validatingadmissionpolicies",
"namespaced": false,
"singularName": "validatingadmissionpolicy",
"storageVersionHash": "P/h9c6yIbaY=",
"verbs": [
"create",
"delete",
"deletecollection",
"get",
"list",
"patch",
"update",
"watch"
]
},
{
"kind": "ValidatingAdmissionPolicy",
"name": "validatingadmissionpolicies/status",
"namespaced": false,
"singularName": "",
"verbs": [
"get",
"patch",
"update"
]
},
{
"categories": [
"api-extensions"
],
"kind": "ValidatingAdmissionPolicyBinding",
"name": "validatingadmissionpolicybindings",
"namespaced": false,
"singularName": "validatingadmissionpolicybinding",
"storageVersionHash": "XYju31JKYek=",
"verbs": [
"create",
"delete",
"deletecollection",
"get",
"list",
"patch",
"update",
"watch"
]
},
{
"categories": [
"api-extensions"
Expand Down
1,913 changes: 1,913 additions & 0 deletions api/openapi-spec/swagger.json

Large diffs are not rendered by default.

5,415 changes: 4,286 additions & 1,129 deletions api/openapi-spec/v3/apis__admissionregistration.k8s.io__v1_openapi.json

Large diffs are not rendered by default.

5 changes: 1 addition & 4 deletions cmd/kube-apiserver/app/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ func CreateKubeAPIServerConfig(opts options.CompletedOptions) (
CloudConfigFile: opts.CloudProvider.CloudConfigFile,
}
serviceResolver := buildServiceResolver(opts.EnableAggregatorRouting, genericConfig.LoopbackClientConfig.Host, versionedInformers)
pluginInitializers, admissionPostStartHook, err := admissionConfig.New(proxyTransport, genericConfig.EgressSelector, serviceResolver, genericConfig.TracerProvider)
pluginInitializers, err := admissionConfig.New(proxyTransport, genericConfig.EgressSelector, serviceResolver, genericConfig.TracerProvider)
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to create admission plugin initializer: %v", err)
}
Expand All @@ -321,9 +321,6 @@ func CreateKubeAPIServerConfig(opts options.CompletedOptions) (
if err != nil {
return nil, nil, nil, fmt.Errorf("failed to apply admission: %w", err)
}
if err := config.GenericConfig.AddPostStartHook("start-kube-apiserver-admission-initializer", admissionPostStartHook); err != nil {
return nil, nil, nil, err
}

if config.GenericConfig.EgressSelector != nil {
// Use the config.GenericConfig.EgressSelector lookup to find the dialer to connect to the kubelet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ func startValidatingAdmissionPolicyStatusController(ctx context.Context, control
RestMapper: controllerContext.RESTMapper,
}
c, err := validatingadmissionpolicystatus.NewController(
controllerContext.InformerFactory.Admissionregistration().V1beta1().ValidatingAdmissionPolicies(),
controllerContext.ClientBuilder.ClientOrDie(names.ValidatingAdmissionPolicyStatusController).AdmissionregistrationV1beta1().ValidatingAdmissionPolicies(),
controllerContext.InformerFactory.Admissionregistration().V1().ValidatingAdmissionPolicies(),
controllerContext.ClientBuilder.ClientOrDie(names.ValidatingAdmissionPolicyStatusController).AdmissionregistrationV1().ValidatingAdmissionPolicies(),
typeChecker,
)

Expand Down
4 changes: 4 additions & 0 deletions pkg/api/testing/defaulting_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,10 @@ func TestDefaulting(t *testing.T) {
{Group: "admissionregistration.k8s.io", Version: "v1beta1", Kind: "ValidatingAdmissionPolicyList"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1beta1", Kind: "ValidatingAdmissionPolicyBinding"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1beta1", Kind: "ValidatingAdmissionPolicyBindingList"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingAdmissionPolicy"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingAdmissionPolicyList"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingAdmissionPolicyBinding"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingAdmissionPolicyBindingList"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingWebhookConfiguration"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "ValidatingWebhookConfigurationList"}: {},
{Group: "admissionregistration.k8s.io", Version: "v1", Kind: "MutatingWebhookConfiguration"}: {},
Expand Down
24 changes: 24 additions & 0 deletions pkg/apis/admissionregistration/v1/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,3 +93,27 @@ func SetDefaults_ServiceReference(obj *admissionregistrationv1.ServiceReference)
obj.Port = utilpointer.Int32(443)
}
}

// SetDefaults_ValidatingAdmissionPolicySpec sets defaults for ValidatingAdmissionPolicySpec
func SetDefaults_ValidatingAdmissionPolicySpec(obj *admissionregistrationv1.ValidatingAdmissionPolicySpec) {
if obj.FailurePolicy == nil {
policy := admissionregistrationv1.Fail
obj.FailurePolicy = &policy
}
}

// SetDefaults_MatchResources sets defaults for MatchResources
func SetDefaults_MatchResources(obj *admissionregistrationv1.MatchResources) {
if obj.MatchPolicy == nil {
policy := admissionregistrationv1.Equivalent
obj.MatchPolicy = &policy
}
if obj.NamespaceSelector == nil {
selector := metav1.LabelSelector{}
obj.NamespaceSelector = &selector
}
if obj.ObjectSelector == nil {
selector := metav1.LabelSelector{}
obj.ObjectSelector = &selector
}
}
88 changes: 88 additions & 0 deletions pkg/apis/admissionregistration/v1/defaults_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,91 @@ func TestDefaultAdmissionWebhook(t *testing.T) {
})
}
}

func TestDefaultAdmissionPolicy(t *testing.T) {
fail := v1.Fail
equivalent := v1.Equivalent
allScopes := v1.AllScopes

tests := []struct {
name string
original runtime.Object
expected runtime.Object
}{
{
name: "ValidatingAdmissionPolicy",
original: &v1.ValidatingAdmissionPolicy{
Spec: v1.ValidatingAdmissionPolicySpec{
MatchConstraints: &v1.MatchResources{},
},
},
expected: &v1.ValidatingAdmissionPolicy{
Spec: v1.ValidatingAdmissionPolicySpec{
MatchConstraints: &v1.MatchResources{
MatchPolicy: &equivalent,
NamespaceSelector: &metav1.LabelSelector{},
ObjectSelector: &metav1.LabelSelector{},
},
FailurePolicy: &fail,
},
},
},
{
name: "ValidatingAdmissionPolicyBinding",
original: &v1.ValidatingAdmissionPolicyBinding{
Spec: v1.ValidatingAdmissionPolicyBindingSpec{
MatchResources: &v1.MatchResources{},
},
},
expected: &v1.ValidatingAdmissionPolicyBinding{
Spec: v1.ValidatingAdmissionPolicyBindingSpec{
MatchResources: &v1.MatchResources{
MatchPolicy: &equivalent,
NamespaceSelector: &metav1.LabelSelector{},
ObjectSelector: &metav1.LabelSelector{},
},
},
},
},
{
name: "scope=*",
original: &v1.ValidatingAdmissionPolicy{
Spec: v1.ValidatingAdmissionPolicySpec{
MatchConstraints: &v1.MatchResources{
ResourceRules: []v1.NamedRuleWithOperations{{}},
},
},
},
expected: &v1.ValidatingAdmissionPolicy{
Spec: v1.ValidatingAdmissionPolicySpec{
MatchConstraints: &v1.MatchResources{
MatchPolicy: &equivalent,
NamespaceSelector: &metav1.LabelSelector{},
ObjectSelector: &metav1.LabelSelector{},
ResourceRules: []v1.NamedRuleWithOperations{
{
RuleWithOperations: v1.RuleWithOperations{
Rule: v1.Rule{
Scope: &allScopes, // defaulted
},
},
},
},
},
FailurePolicy: &fail,
},
},
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
original := test.original
expected := test.expected
legacyscheme.Scheme.Default(original)
if !apiequality.Semantic.DeepEqual(original, expected) {
t.Error(cmp.Diff(expected, original))
}
})
}
}

0 comments on commit 2b521e5

Please sign in to comment.