Skip to content

Commit

Permalink
Deprecate Canal, Flannel, and Kube-router
Browse files Browse the repository at this point in the history
  • Loading branch information
johngmyers committed Jul 15, 2023
1 parent 1e9f11c commit fccee20
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 16 deletions.
8 changes: 4 additions & 4 deletions docs/networking.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ As of kOps 1.26 the default network provider is Cilium. Prior to that the defaul
|------------------|-------------:|-------:|-----------:|----------------:|
| AWS VPC | 1.9 | 1.21 | - | - |
| Calico | 1.6 | 1.11 | - | - |
| Canal | 1.12 | - | - | - |
| Canal | 1.12 | - | 1.27 | Kubernetes 1.28 |
| Cilium | 1.9 | 1.15 | - | - |
| Cilium ENI | 1.18 | 1.26 | - | - |
| Flannel udp | 1.5.2 | - | - | - |
| Flannel vxlan | 1.8.0 | - | - | - |
| Flannel udp | 1.5.2 | - | 1.27 | Kubernetes 1.28 |
| Flannel vxlan | 1.8.0 | - | 1.27 | Kubernetes 1.28 |
| Kopeio | 1.5 | - | - | - |
| Kube-router | 1.6.2 | - | - | - |
| Kube-router | 1.6.2 | - | 1.27 | Kubernetes 1.28 |
| Kubenet | 1.5 | 1.5 | - | - |
| Lyft VPC | 1.11 | - | 1.22 | 1.23 |
| Romana | 1.8 | - | 1.18 | 1.19 |
Expand Down
2 changes: 2 additions & 0 deletions docs/networking/canal.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Canal

⚠ The Canal CNI is not supported for Kubernetes 1.28 or later.

[Canal](https://github.com/projectcalico/canal) is a project that combines [Flannel](https://github.com/coreos/flannel) and [Calico](http://docs.projectcalico.org/latest/getting-started/kubernetes/installation/) for CNI Networking. It uses Flannel for networking pod traffic between hosts via VXLAN and Calico for network policy enforcement and pod to pod traffic.

## Installing
Expand Down
2 changes: 2 additions & 0 deletions docs/networking/flannel.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Flannel

⚠ The Flannel CNI is not supported for Kubernetes 1.28 or later.

## Installing

To install [flannel](https://github.com/coreos/flannel) - use `--networking flannel-vxlan` (recommended) or `--networking flannel-udp` (legacy). `--networking flannel` now selects `flannel-vxlan`.
Expand Down
2 changes: 2 additions & 0 deletions docs/networking/kube-router.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Kube-router

⚠ The Kube-router CNI is not supported for Kubernetes 1.28 or later.

[Kube-router](https://github.com/cloudnativelabs/kube-router) is project that provides one cohesive solution that provides CNI networking for pods, an IPVS based network service proxy and iptables based network policy enforcement.

Kube-router also provides a service proxy, so kube-proxy will not be deployed in to the cluster.
Expand Down
5 changes: 2 additions & 3 deletions docs/releases/1.27-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,10 @@ they would do so when the respective `topology` was set to `public`.

* Support for Ubuntu 18.04 is deprecated and will be removed in kOps 1.28.

* Canal, Flannel, and Kube-Router are deprecated and support will be removed for Kubernetes 1.28 and later.

* Support for AWS Classic Load Balancer for API is deprecated and should not be used for newly created clusters.

* All legacy addons are deprecated in favor of managed addons, including the [metrics server addon](https://github.com/kubernetes/kops/tree/master/addons/metrics-server) and the [autoscaler addon](https://github.com/kubernetes/kops/tree/master/addons/cluster-autoscaler).

# Help Wanted

* kOps needs maintainers for Canal, Flannel, and Kube-Router to keep versions up to date and move the integration from experimental to stable.
If no volunteers step up by the time kOps 1.27 is released, support will be phased out.
7 changes: 2 additions & 5 deletions docs/releases/1.28-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ This is a document to gather the release notes prior to the release.

* Support for Ubuntu 18.04 is has been removed.

* Support for Canal, Flannel, and Kube-Router has been removed for Kubernetes 1.28 and later.

# Deprecations

* Support for Kubernetes version 1.23 is deprecated and will be removed in kOps 1.29.
Expand All @@ -29,8 +31,3 @@ This is a document to gather the release notes prior to the release.
* Support for AWS Classic Load Balancer for API is deprecated and should not be used for newly created clusters.

* All legacy addons are deprecated in favor of managed addons, including the [metrics server addon](https://github.com/kubernetes/kops/tree/master/addons/metrics-server) and the [autoscaler addon](https://github.com/kubernetes/kops/tree/master/addons/cluster-autoscaler).

# Help Wanted

* kOps needs maintainers for Canal, Flannel, and Kube-Router to keep versions up to date and move the integration from experimental to stable.
If no volunteers step up by the time kOps 1.27 is released, support will be phased out.
18 changes: 14 additions & 4 deletions pkg/apis/kops/validation/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -1066,7 +1066,11 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
}
optionTaken = true

allErrs = append(allErrs, validateNetworkingFlannel(cluster, v.Flannel, fldPath.Child("flannel"))...)
if cluster.IsKubernetesGTE("1.28") {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("flannel"), "Flannel is not supported for Kubernetes >= 1.28"))
} else {
allErrs = append(allErrs, validateNetworkingFlannel(cluster, v.Flannel, fldPath.Child("flannel"))...)
}
}

if v.Calico != nil {
Expand All @@ -1084,7 +1088,11 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
}
optionTaken = true

allErrs = append(allErrs, validateNetworkingCanal(cluster, v.Canal, fldPath.Child("canal"))...)
if cluster.IsKubernetesGTE("1.28") {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("canal"), "Canal is not supported for Kubernetes >= 1.28"))
} else {
allErrs = append(allErrs, validateNetworkingCanal(cluster, v.Canal, fldPath.Child("canal"))...)
}
}

if v.KubeRouter != nil {
Expand All @@ -1096,8 +1104,10 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
}
optionTaken = true

if cluster.Spec.IsIPv6Only() {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("kuberRouter"), "kube-router does not support IPv6"))
if cluster.IsKubernetesGTE("1.28") {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("kubeRouter"), "kube-router is not supported for Kubernetes >= 1.28"))
} else if cluster.Spec.IsIPv6Only() {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("kubeRouter"), "kube-router does not support IPv6"))
}
}

Expand Down

0 comments on commit fccee20

Please sign in to comment.