Skip to content

Commit 76b7f98

Browse files
committed
azure-load-balancer-tcp-idle-timeout validation for svc
1 parent 2298e65 commit 76b7f98

5 files changed

+36
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: admissionregistration.k8s.io/v1beta1
2+
kind: ValidatingAdmissionPolicyBinding
3+
metadata:
4+
name: azure-load-balancer-tcp-idle-timeout-validation-annotation-binding
5+
spec:
6+
policyName: azure-load-balancer-tcp-idle-timeout-annotation-validation-policy
7+
validationActions: ["Deny"]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: admissionregistration.k8s.io/v1beta1
2+
kind: ValidatingAdmissionPolicy
3+
metadata:
4+
name: azure-load-balancer-tcp-idle-timeout-annotation-validation-policy
5+
spec:
6+
matchConstraints:
7+
resourceRules:
8+
- apiGroups: [""]
9+
apiVersions: ["v1"]
10+
operations: ["CREATE", "UPDATE"]
11+
resources: ["services"]
12+
validations:
13+
- expression: |
14+
(!has(object.metadata.annotations) ||
15+
!('service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout' in object.metadata.annotations) ||
16+
(object.metadata.annotations['service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout'].matches('^[0-9]+$') &&
17+
int(object.metadata.annotations['service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout']) >= 4 &&
18+
int(object.metadata.annotations['service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout']) <= 100))
19+
message: "The annotation 'service.beta.kubernetes.io/azure-load-balancer-tcp-idle-timeout', if specified, must have a value between 4 and 100."
20+

pkg/cloud/azure/azure.go

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ var (
3434
{ReferenceObject: &rbacv1.ClusterRoleBinding{}, EmbedFsPath: "assets/azure-cloud-controller-manager-clusterrolebinding.yaml"},
3535
{ReferenceObject: &admissionregistrationv1.ValidatingAdmissionPolicy{}, EmbedFsPath: "assets/validating-admission-policy.yaml"},
3636
{ReferenceObject: &admissionregistrationv1.ValidatingAdmissionPolicyBinding{}, EmbedFsPath: "assets/validating-admission-policy-binding.yaml"},
37+
{ReferenceObject: &admissionregistrationv1.ValidatingAdmissionPolicyBinding{}, EmbedFsPath: "assets/validating-admission-service-annotation-policy-binding.yaml"},
38+
{ReferenceObject: &admissionregistrationv1.ValidatingAdmissionPolicy{}, EmbedFsPath: "assets/validating-admission-service-annotation-policy.yaml"},
3739
}
3840
)
3941

pkg/cloud/azure/azure_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func TestResourcesRenderingSmoke(t *testing.T) {
9090
}
9191

9292
resources := assets.GetRenderedResources()
93-
assert.Len(t, resources, 6)
93+
assert.Len(t, resources, 8)
9494
})
9595
}
9696
}

pkg/cloud/cloud_test.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -153,20 +153,22 @@ func TestGetResources(t *testing.T) {
153153
}, {
154154
name: "Azure resources returned as expected",
155155
testPlatform: platformsMap[string(configv1.AzurePlatformType)],
156-
expectedResourceCount: 7,
156+
expectedResourceCount: 9,
157157
expectedResourcesKindName: []string{
158158
"Deployment/azure-cloud-controller-manager",
159159
"DaemonSet/azure-cloud-node-manager",
160160
"ClusterRole/azure-cloud-controller-manager",
161161
"ClusterRoleBinding/cloud-controller-manager:azure-cloud-controller-manager",
162162
"ValidatingAdmissionPolicy/openshift-cloud-controller-manager-cloud-provider-azure-node-admission",
163163
"ValidatingAdmissionPolicyBinding/openshift-cloud-controller-manager-cloud-provider-azure-node-admission",
164+
"ValidatingAdmissionPolicyBinding/azure-load-balancer-tcp-idle-timeout-validation-annotation-binding",
165+
"ValidatingAdmissionPolicy/azure-load-balancer-tcp-idle-timeout-annotation-validation-policy",
164166
"PodDisruptionBudget/azure-cloud-controller-manager",
165167
},
166168
}, {
167169
name: "Azure resources returned as expected with single node cluster",
168170
testPlatform: platformsMap[string(configv1.AzurePlatformType)],
169-
expectedResourceCount: 6,
171+
expectedResourceCount: 8,
170172
singleReplica: true,
171173
expectedResourcesKindName: []string{
172174
"Deployment/azure-cloud-controller-manager",
@@ -175,6 +177,8 @@ func TestGetResources(t *testing.T) {
175177
"ClusterRoleBinding/cloud-controller-manager:azure-cloud-controller-manager",
176178
"ValidatingAdmissionPolicy/openshift-cloud-controller-manager-cloud-provider-azure-node-admission",
177179
"ValidatingAdmissionPolicyBinding/openshift-cloud-controller-manager-cloud-provider-azure-node-admission",
180+
"ValidatingAdmissionPolicyBinding/azure-load-balancer-tcp-idle-timeout-validation-annotation-binding",
181+
"ValidatingAdmissionPolicy/azure-load-balancer-tcp-idle-timeout-annotation-validation-policy",
178182
},
179183
}, {
180184
name: "Azure Stack resources returned as expected",

0 commit comments

Comments
 (0)