Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate Canal, Flannel, and Kube-router #15634

Merged
merged 1 commit into from
Jul 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
1 change: 1 addition & 0 deletions pkg/apis/kops/validation/validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ func Test_Validate_Networking_Flannel(t *testing.T) {
for _, g := range grid {
cluster := &kops.Cluster{
Spec: kops.ClusterSpec{
KubernetesVersion: "1.27.0",
Networking: kops.NetworkingSpec{
NetworkCIDR: "10.0.0.0/8",
NonMasqueradeCIDR: "100.64.0.0/10",
Expand Down
Loading