mirror of
https://github.com/stakater/Reloader.git
synced 2026-02-14 18:09:50 +00:00
Implement PR-1 review comments
This commit is contained in:
@@ -7,12 +7,13 @@ metadata:
|
|||||||
name: {{ template "reloader-name" . }}
|
name: {{ template "reloader-name" . }}
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
kind: ClusterRole
|
kind: Role
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
{{ include "reloader-labels.stakater" . | indent 4 }}
|
{{ include "reloader-labels.stakater" . | indent 4 }}
|
||||||
{{ include "reloader-labels.chart" . | indent 4 }}
|
{{ include "reloader-labels.chart" . | indent 4 }}
|
||||||
name: {{ template "reloader-name" . }}-role
|
name: {{ template "reloader-name" . }}-role
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
rules:
|
rules:
|
||||||
- apiGroups:
|
- apiGroups:
|
||||||
- ""
|
- ""
|
||||||
@@ -25,15 +26,16 @@ rules:
|
|||||||
- watch
|
- watch
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
kind: ClusterRoleBinding
|
kind: RoleBinding
|
||||||
metadata:
|
metadata:
|
||||||
labels:
|
labels:
|
||||||
{{ include "reloader-labels.stakater" . | indent 4 }}
|
{{ include "reloader-labels.stakater" . | indent 4 }}
|
||||||
{{ include "reloader-labels.chart" . | indent 4 }}
|
{{ include "reloader-labels.chart" . | indent 4 }}
|
||||||
name: {{ template "reloader-name" . }}-role-binding
|
name: {{ template "reloader-name" . }}-role-binding
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
roleRef:
|
roleRef:
|
||||||
apiGroup: rbac.authorization.k8s.io
|
apiGroup: rbac.authorization.k8s.io
|
||||||
kind: ClusterRole
|
kind: Role
|
||||||
name: {{ template "reloader-name" . }}-role
|
name: {{ template "reloader-name" . }}-role
|
||||||
subjects:
|
subjects:
|
||||||
- kind: ServiceAccount
|
- kind: ServiceAccount
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import (
|
|||||||
var (
|
var (
|
||||||
client, err = kube.GetClient()
|
client, err = kube.GetClient()
|
||||||
configmapNamePrefix = "testconfigmap-reloader"
|
configmapNamePrefix = "testconfigmap-reloader"
|
||||||
|
secretNamePrefix = "testsecret-reloader"
|
||||||
letters = []rune("abcdefghijklmnopqrstuvwxyz")
|
letters = []rune("abcdefghijklmnopqrstuvwxyz")
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -72,6 +73,51 @@ func TestControllerForUpdatingConfigmapShouldUpdateDeployment(t *testing.T) {
|
|||||||
time.Sleep(15 * time.Second)
|
time.Sleep(15 * time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestControllerForUpdatingSecretShouldUpdateDeployment(t *testing.T) {
|
||||||
|
namespace := "test-reloader-secrets"
|
||||||
|
createNamespace(t, namespace)
|
||||||
|
defer deleteNamespace(t, namespace)
|
||||||
|
|
||||||
|
controller, err := NewController(client, "secrets", namespace)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Infof("Unable to create NewController error = %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
stop := make(chan struct{})
|
||||||
|
defer close(stop)
|
||||||
|
go controller.Run(1, stop)
|
||||||
|
time.Sleep(10 * time.Second)
|
||||||
|
|
||||||
|
secretName := secretNamePrefix + "-update-" + randSeq(5)
|
||||||
|
secretClient := client.CoreV1().Secrets(namespace)
|
||||||
|
secret := initSecret(namespace, secretName)
|
||||||
|
secret, err = secretClient.Create(secret)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
logrus.Infof("Created Secret %q.\n", secret.GetObjectMeta().GetName())
|
||||||
|
time.Sleep(10 * time.Second)
|
||||||
|
|
||||||
|
logrus.Infof("Updating Secret %q.\n", secret.GetObjectMeta().GetName())
|
||||||
|
secret, err = secretClient.Get(secretName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
|
||||||
|
}
|
||||||
|
secret = updateSecret(namespace, secretName)
|
||||||
|
_, updateErr := secretClient.Update(secret)
|
||||||
|
|
||||||
|
// TODO: Add functionality to verify reloader functionality here
|
||||||
|
|
||||||
|
if updateErr != nil {
|
||||||
|
controller.client.CoreV1().Secrets(namespace).Delete(secretName, &metav1.DeleteOptions{})
|
||||||
|
panic(updateErr)
|
||||||
|
}
|
||||||
|
time.Sleep(10 * time.Second)
|
||||||
|
logrus.Infof("Deleting Secret %q.\n", secret.GetObjectMeta().GetName())
|
||||||
|
controller.client.CoreV1().Secrets(namespace).Delete(secretName, &metav1.DeleteOptions{})
|
||||||
|
time.Sleep(15 * time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
func initConfigmap(namespace string, configmapName string) *v1.ConfigMap {
|
func initConfigmap(namespace string, configmapName string) *v1.ConfigMap {
|
||||||
return &v1.ConfigMap{
|
return &v1.ConfigMap{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
@@ -83,6 +129,17 @@ func initConfigmap(namespace string, configmapName string) *v1.ConfigMap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initSecret(namespace string, secretName string) *v1.Secret {
|
||||||
|
return &v1.Secret{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: secretName,
|
||||||
|
Namespace: namespace,
|
||||||
|
Labels: map[string]string{"firstLabel": "temp"},
|
||||||
|
},
|
||||||
|
Data: map[string][]byte{"test.url": []byte("dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI=")},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func createNamespace(t *testing.T, namespace string) {
|
func createNamespace(t *testing.T, namespace string) {
|
||||||
_, err := client.CoreV1().Namespaces().Create(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}})
|
_, err := client.CoreV1().Namespaces().Create(&v1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -111,3 +168,14 @@ func updateConfigmap(namespace string, configmapName string) *v1.ConfigMap {
|
|||||||
Data: map[string]string{"test.url": "www.stakater.com"},
|
Data: map[string]string{"test.url": "www.stakater.com"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateSecret(namespace string, secretName string) *v1.Secret {
|
||||||
|
return &v1.Secret{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: secretName,
|
||||||
|
Namespace: namespace,
|
||||||
|
Labels: map[string]string{"firstLabel": "temp"},
|
||||||
|
},
|
||||||
|
Data: map[string][]byte{"test.url": []byte("dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy")},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user