diff --git a/Makefile b/Makefile index 3cc2fae6f..8c2a0ecb3 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ REGISTRY ?= gcr.io/google-containers VERSION ?= v0.1 +NAMESPACE ?= kube-system DELETE ?= "gcloud container images delete" .PHONY: test @@ -50,6 +51,7 @@ local-manifests: cp manifests/* manifests.local/ find ./manifests.local -type f -exec sed -i -e "s|REGISTRY|$(REGISTRY)|g" {} \; find ./manifests.local -type f -exec sed -i -e "s|VERSION|$(VERSION)|g" {} \; + find ./manifests.local -type f -exec sed -i -e "s|NAMESPACE|$(NAMESPACE)|g" {} \; .PHONY: all-containers push-all: all-containers diff --git a/manifests/initializer.yaml b/manifests/initializer.yaml index 5edcc2742..8b4fe8cf3 100644 --- a/manifests/initializer.yaml +++ b/manifests/initializer.yaml @@ -2,7 +2,7 @@ apiVersion: batch/v1 kind: Job metadata: name: initializer - namespace: kube-storage-migration + namespace: NAMESPACE spec: template: spec: diff --git a/manifests/migrator.yaml b/manifests/migrator.yaml index c66246679..9cb531b0c 100644 --- a/manifests/migrator.yaml +++ b/manifests/migrator.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: migrator - namespace: kube-storage-migration + namespace: NAMESPACE labels: app: migrator spec: diff --git a/manifests/namespace-rbac.yaml b/manifests/namespace-rbac.yaml index 48dcbd99e..da426b8ea 100644 --- a/manifests/namespace-rbac.yaml +++ b/manifests/namespace-rbac.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: Namespace metadata: - name: kube-storage-migration + name: NAMESPACE --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 @@ -40,7 +40,7 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: storage-version-migration-initializer - namespace: kube-storage-migration + namespace: NAMESPACE rules: - apiGroups: ["migration.k8s.io"] resources: ["storageversionmigrations"] @@ -53,7 +53,7 @@ metadata: subjects: - kind: ServiceAccount name: default - namespace: kube-storage-migration + namespace: NAMESPACE roleRef: kind: ClusterRole name: storage-version-migration-migrator @@ -66,7 +66,7 @@ metadata: subjects: - kind: ServiceAccount name: default - namespace: kube-storage-migration + namespace: NAMESPACE roleRef: kind: ClusterRole name: storage-version-migration-trigger @@ -79,7 +79,7 @@ metadata: subjects: - kind: ServiceAccount name: default - namespace: kube-storage-migration + namespace: NAMESPACE roleRef: kind: ClusterRole name: storage-version-migration-crd-creator @@ -89,11 +89,11 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: storage-version-migration-initializer - namespace: kube-storage-migration + namespace: NAMESPACE subjects: - kind: ServiceAccount name: default - namespace: kube-storage-migration + namespace: NAMESPACE roleRef: kind: Role name: storage-version-migration-initializer diff --git a/manifests/trigger.yaml b/manifests/trigger.yaml index c1557b18f..5f704293e 100644 --- a/manifests/trigger.yaml +++ b/manifests/trigger.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: trigger - namespace: kube-storage-migration + namespace: NAMESPACE labels: app: trigger spec: diff --git a/pkg/initializer/initializer.go b/pkg/initializer/initializer.go index 223cab7de..9ffbf080d 100644 --- a/pkg/initializer/initializer.go +++ b/pkg/initializer/initializer.go @@ -17,12 +17,13 @@ limitations under the License. package initializer import ( + "flag" "fmt" "time" migrationv1alpha1 "github.com/kubernetes-sigs/kube-storage-version-migrator/pkg/apis/migration/v1alpha1" "github.com/kubernetes-sigs/kube-storage-version-migrator/pkg/clients/clientset/typed/migration/v1alpha1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" "k8s.io/apimachinery/pkg/api/errors" @@ -53,13 +54,15 @@ func NewInitializer( discovery: d, crdClient: crdClient, namespaceClient: namespaceClient, - migrationClient: migrationGetter.StorageVersionMigrations(namespaceName), + migrationClient: migrationGetter.StorageVersionMigrations(*namespaceName), } } +var ( + namespaceName = flag.String("namespace", "kube-system", "the namespace the initializer is going to run in. The namespace should be created before running the initializer. The namespace should be the same one where the migrator runs. Default to kube-system.") +) + const ( - // TODO: get the namespace name from the enviroment variable - namespaceName = "kube-storage-migration" singularCRDName = "storageversionmigration" pluralCRDName = "storageversionmigrations" kind = "StorageVersionMigration" @@ -145,13 +148,13 @@ func (init *initializer) initializeCRD() error { // TODO: remove this function. Users will use provided yaml files to create the // namespace, and then create the initializer in the namespace. func (init *initializer) initializeNamespace() error { - _, err := init.namespaceClient.Get(namespaceName, metav1.GetOptions{}) + _, err := init.namespaceClient.Get(*namespaceName, metav1.GetOptions{}) if (err != nil && !errors.IsNotFound(err)) || err == nil { return err } _, err = init.namespaceClient.Create(&v1.Namespace{ ObjectMeta: metav1.ObjectMeta{ - Name: namespaceName, + Name: *namespaceName, }, }) return err diff --git a/pkg/trigger/controller.go b/pkg/trigger/controller.go index 26139a9a5..958049ed7 100644 --- a/pkg/trigger/controller.go +++ b/pkg/trigger/controller.go @@ -17,6 +17,7 @@ limitations under the License. package trigger import ( + "flag" "fmt" "reflect" "time" @@ -38,11 +39,11 @@ var ( Factor: 5.0, Jitter: 0.1, } + + namespaceName = flag.String("namespace", "kube-system", "the namespace the trigger is going to run in. The namespace should be created before running the trigger. The namespace should be the same one where the migrator runs. Default to kube-system.") ) const ( - // TODO: centralize the namespace definitions. - namespaceName = "kube-storage-migration" // The migration trigger controller redo the discovery every discoveryPeriod. discoveryPeriod = 10 * time.Minute ) diff --git a/pkg/trigger/discovery_handler.go b/pkg/trigger/discovery_handler.go index 4460ac691..b035dd89b 100644 --- a/pkg/trigger/discovery_handler.go +++ b/pkg/trigger/discovery_handler.go @@ -105,7 +105,7 @@ func (mt *MigrationTrigger) launchMigration(resource migrationv1alpha1.GroupVers Resource: resource, }, } - _, err := mt.client.MigrationV1alpha1().StorageVersionMigrations(namespaceName).Create(m) + _, err := mt.client.MigrationV1alpha1().StorageVersionMigrations(*namespaceName).Create(m) return err } diff --git a/test/e2e/test-cmd.sh b/test/e2e/test-cmd.sh index 1c2ce513b..409b19876 100755 --- a/test/e2e/test-cmd.sh +++ b/test/e2e/test-cmd.sh @@ -40,7 +40,7 @@ function wait-for-migration() { # wait for initialization for count in {0..9}; do - tasks=$(kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-storage-migration -o json | jq -r '.items | length') && rc=$? || rc=$? + tasks=$(kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-system -o json | jq -r '.items | length') && rc=$? || rc=$? if [ ${rc} -ne 0 ]; then echo "retry after 10s" sleep 10 @@ -59,7 +59,7 @@ function wait-for-migration() for count in {0..9}; do # pending storageversionmigrations either have no status, or have # status.conditions that are not "Succeeded". - pendings=$(kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-storage-migration -o json | jq -r '.items[] | select((has("status") | not) or ([ .status.conditions[] | select(.type != "Succeeded" and .status == "True") ] | length !=0) ) | .metadata.namespace + "/" + .metadata.name') + pendings=$(kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-system -o json | jq -r '.items[] | select((has("status") | not) or ([ .status.conditions[] | select(.type != "Succeeded" and .status == "True") ] | length !=0) ) | .metadata.namespace + "/" + .metadata.name') # Note that number=1 when pendings="". number=$(echo "${pendings}" | wc -l) if [ -z "${pendings}" ]; then @@ -76,9 +76,9 @@ function wait-for-migration() echo "Timed out waiting for migration to complete." echo "initializer logs:" - kubectl logs --namespace=kube-storage-migration -l job-name=initializer || true + kubectl logs --namespace=kube-system -l job-name=initializer || true echo "migrator logs:" - kubectl logs --namespace=kube-storage-migration -l app=migrator || true + kubectl logs --namespace=kube-system -l app=migrator || true return 1 } @@ -111,7 +111,7 @@ cleanup() { echo "Deleting images successfully" popd - kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-storage-migration -o json + kubectl get storageversionmigrations.migration.k8s.io --namespace=kube-system -o json } trap cleanup EXIT diff --git a/test/e2e/tests/crd-migration.go b/test/e2e/tests/crd-migration.go index d35cb4863..51265e342 100644 --- a/test/e2e/tests/crd-migration.go +++ b/test/e2e/tests/crd-migration.go @@ -19,7 +19,7 @@ import ( const ( // TODO: centralize the namespace definitions. - namespaceName = "kube-storage-migration" + namespaceName = "kube-system" // The migration trigger controller redo the discovery every discoveryPeriod. discoveryPeriod = 10 * time.Minute )