Handle error on listing limit ranges, update example deploy and readme

This commit is contained in:
2019-05-20 11:06:32 +02:00
parent d1e5532c97
commit de61e7e9d9
3 changed files with 50 additions and 8 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
# Default-request-adder
A small container which periodically (every 10s) checks for a LimitRange on all non-excluded namespaces named `extreme-request-defaults` and creates it using the configured memory settings if absent.
See the example-dir for an example deployment-file.
[Example deployment-file](example/deploy.yaml)
+38
View File
@@ -1,3 +1,40 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: default-request-adder
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: default-request-adder
namespace: kube-system
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["list"]
- apiGroups: [""]
resources: ["limitranges"]
verbs: ["list","create"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: default-request-adder
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: default-request-adder
subjects:
- kind: ServiceAccount
name: default-request-adder
namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
@@ -20,6 +57,7 @@ spec:
labels:
app: default-request-adder
spec:
serviceAccountName: default-request-adder
containers:
- name: default-request-adder
resources:
+11 -7
View File
@@ -54,18 +54,22 @@ func main() {
for {
namespaces, err := clientset.CoreV1().Namespaces().List(metav1.ListOptions{})
if err != nil {
panic(err.Error())
panic(err)
}
for _, ns := range namespaces.Items {
if !nsExcluded(ns.Name, excludedNS) {
log.Printf("Checking for LimitRange named extreme-request-defaults in namespace '%v'\n", ns.Name)
if limitRanges, err := clientset.CoreV1().LimitRanges(ns.Name).List(metav1.ListOptions{FieldSelector: "metadata.name=extreme-request-defaults"}); err == nil && len(limitRanges.Items) == 0 {
log.Printf("Trying to create LimitRange\n")
if _, err := clientset.CoreV1().LimitRanges(ns.Name).Create(&limitRange); err != nil {
log.Printf("Unable to create LimitRange in namespace '%v': Error: %v\n", ns.Name, err)
} else {
log.Printf("LimitRange extreme-request-defaults created in namespace '%v'\n", ns.Name)
if limitRanges, err := clientset.CoreV1().LimitRanges(ns.Name).List(metav1.ListOptions{FieldSelector: "metadata.name=extreme-request-defaults"}); err != nil {
panic(err)
} else {
if len(limitRanges.Items) == 0 {
log.Printf("Trying to create LimitRange\n")
if _, err := clientset.CoreV1().LimitRanges(ns.Name).Create(&limitRange); err != nil {
log.Printf("Unable to create LimitRange in namespace '%v': Error: %v\n", ns.Name, err)
} else {
log.Printf("LimitRange extreme-request-defaults created in namespace '%v'\n", ns.Name)
}
}
}
}