diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b569506..93b2c8d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,22 @@ --> +## v0.8.2 + +Note: we're skipping v0.8.1 because the 0.8.1 image tag was erroneously used for a pre-release version. + +### Bugfixes + +- Fix [#20](https://github.com/admiraltyio/multicluster-scheduler/issues/20). Scheduling was failing altogether if the namespace didn't exist in one of the target clusters. That cluster is now simply filtered out. +- Fix [#21](https://github.com/admiraltyio/multicluster-scheduler/issues/21). The feedback controller wasn't compatible with namespaced targets. It was trying to watch remote pod chaperons at the cluster level, which wasn't allowed by remote RBAC. +- Fix [#25](https://github.com/admiraltyio/multicluster-scheduler/issues/25). The Helm chart values structure was broken, making it difficult to set resource requests/limits. +- Fix [#26](https://github.com/admiraltyio/multicluster-scheduler/issues/26). Init containers weren't stripped from their service account token volume mounts as pods were delegated. +- Fix a race condition that allowed candidate pod chaperons and their pods to be orphaned if scheduling failed. Finalizer is now added to proxy pods at admission vs. asynchronously by the feedback controller. + +### Breaking Changes + +- Some Helm chart values were broken (see above). As we fixed them, we reorganized all values, so some values that did work now work differently. + ## v0.8.0 This release removes the central scheduler, replaced by a decentralized algorithm creating candidate pods in all targets (of which only one becomes the proxy pod's delegate). See the [proposal](proposals/decentralized.md) for details. diff --git a/README.md b/README.md index e0227193..ca407351 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ kubectl --context "$CLUSTER1" create namespace admiralty helm install multicluster-scheduler admiralty/multicluster-scheduler \ --kube-context "$CLUSTER1" \ --namespace admiralty \ - --version 0.8.0 \ + --version 0.8.2 \ --set clusterName=c1 \ --set targetSelf=true \ --set targets[0].name=c2 @@ -71,7 +71,7 @@ kubectl --context "$CLUSTER2" create namespace admiralty helm install multicluster-scheduler admiralty/multicluster-scheduler \ --kube-context "$CLUSTER2" \ --namespace admiralty \ - --version 0.8.0 \ + --version 0.8.2 \ --set clusterName=c2 ``` diff --git a/charts/multicluster-scheduler/Chart.yaml b/charts/multicluster-scheduler/Chart.yaml index cab2eb7e..1353dc9a 100644 --- a/charts/multicluster-scheduler/Chart.yaml +++ b/charts/multicluster-scheduler/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: multicluster-scheduler -version: 0.8.0 +version: 0.8.2 #kubeVersion: A SemVer range of compatible Kubernetes versions (optional) description: A system of Kubernetes controllers that intelligently schedules workloads across clusters. type: application @@ -14,5 +14,5 @@ home: https://github.com/admiraltyio/multicluster-scheduler # email: The maintainer's email (optional for each maintainer) # url: A URL for the maintainer (optional for each maintainer) icon: https://admiralty.io/icons/icon-144x144.png -appVersion: 0.8.0 +appVersion: 0.8.2 #deprecated: Whether this chart is deprecated (optional, boolean) diff --git a/charts/multicluster-scheduler/README.md b/charts/multicluster-scheduler/README.md index af0db107..d08eb7d6 100644 --- a/charts/multicluster-scheduler/README.md +++ b/charts/multicluster-scheduler/README.md @@ -46,9 +46,9 @@ Create a namespace for multicluster-scheduler and install the chart in it, using ```sh kubectl create namespace admiralty helm install multicluster-scheduler admiralty/multicluster-scheduler \ - --version 0.8.0 \ + --version 0.8.2 \ -n admiralty \ - -f values-scheduler.yaml + -f values.yaml ``` Repeat for other clusters. @@ -63,7 +63,7 @@ See [getting started guide](../../README.md#getting-started) for now. ## Post-Delete Hook -Multicluster-scheduler uses [finalizers](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#finalizers) for [cross-cluster garbage collection](https://twitter.com/adrienjt/status/1199467878015066112). In particular, it adds finalizers to proxy pods and global services. The finalizers block the deletion of those objects until multicluster-scheduler's scheduler deletes their delegates in other clusters. If the scheduler stopped running and those finalizers weren't removed, object deletions would be blocked indefinitely. Therefore, when multicluster-scheduler is uninstalled, a Kubernetes job will run as a [Helm post-delete hook](https://helm.sh/docs/topics/charts_hooks/) to clean up the finalizers. +Multicluster-scheduler uses [finalizers](https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#finalizers) for [cross-cluster garbage collection](https://twitter.com/adrienjt/status/1199467878015066112). In particular, it adds finalizers to proxy pods and global services. The finalizers block the deletion of those objects until multicluster-scheduler deletes their delegates in other clusters. If multicluster-scheduler stopped running, and those finalizers weren't removed, object deletions would be blocked indefinitely. Therefore, when multicluster-scheduler is uninstalled, a Kubernetes job will run as a [Helm post-delete hook](https://helm.sh/docs/topics/charts_hooks/) to clean up the finalizers. ## Advanced Use Cases @@ -109,7 +109,7 @@ Don't forget to label multicluster-scheduler's namespace (e.g., "admiralty") wit | targets[].context | string | `""` | if using a custom kubeconfig secret, with multiple contexts, override the kubeconfig's current context | | imagePullSecretName | string | `""` | | | controllerManager.image.repository | string | `"quay.io/admiralty/multicluster-scheduler-agent"` | | -| controllerManager.image.tag | string | `"0.8.0"` | | +| controllerManager.image.tag | string | `"0.8.2"` | | | controllerManager.image.pullPolicy | string | `"IfNotPresent"` | | | controllerManager.resources | object | `{}` | | | controllerManager.nodeSelector | object | `{}` | | @@ -117,7 +117,7 @@ Don't forget to label multicluster-scheduler's namespace (e.g., "admiralty") wit | controllerManager.affinity | object | `{}` | | | controllerManager.tolerations | array | `[]` | | | scheduler.image.repository | string | `"quay.io/admiralty/multicluster-scheduler-scheduler"` | | -| scheduler.image.tag | string | `"0.8.0"` | | +| scheduler.image.tag | string | `"0.8.2"` | | | scheduler.image.pullPolicy | string | `"IfNotPresent"` | | | scheduler.resources | object | `{}` | | | scheduler.nodeSelector | object | `{}` | | @@ -125,7 +125,7 @@ Don't forget to label multicluster-scheduler's namespace (e.g., "admiralty") wit | scheduler.affinity | object | `{}` | | | scheduler.tolerations | array | `[]` | | | postDeleteJob.image.repository | string | `"quay.io/admiralty/multicluster-scheduler-remove-finalizers"` | | -| postDeleteJob.image.tag | string | `"0.8.0"` | | +| postDeleteJob.image.tag | string | `"0.8.2"` | | | postDeleteJob.image.pullPolicy | string | `"IfNotPresent"` | | | postDeleteJob.resources | object | `{}` | | | postDeleteJob.nodeSelector | object | `{}` | | diff --git a/charts/multicluster-scheduler/templates/deploy.yaml b/charts/multicluster-scheduler/templates/deploy.yaml index 056f2823..ed5487ae 100644 --- a/charts/multicluster-scheduler/templates/deploy.yaml +++ b/charts/multicluster-scheduler/templates/deploy.yaml @@ -57,8 +57,8 @@ spec: items: - key: {{ default "config" .key }} path: config - {{- end }} - {{- end }} + {{- end }} + {{- end }} {{- with .Values.imagePullSecretName }} imagePullSecrets: - name: {{ . }}