Skip to content

Commit f1cc767

Browse files
authored
feat: Added support for running kube-proxy in IPVS mode (#625)
Signed-off-by: Ali Mukadam <[email protected]>
1 parent 0984eac commit f1cc767

File tree

5 files changed

+20
-5
lines changed

5 files changed

+20
-5
lines changed

main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ module "oke" {
264264
admission_controller_options = var.admission_controller_options
265265

266266
# oke node pool parameters
267+
kubeproxy_mode = var.kubeproxy_mode
267268
max_pods_per_node = var.max_pods_per_node
268269
node_pools = var.node_pools
269270
node_pool_name_prefix = var.node_pool_name_prefix

modules/oke/nodepools.tf

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ resource "oci_containerengine_node_pool" "nodepools" {
2323
## If placement_ads are specified, use them.
2424
## Else, iterate over all ADs.
2525
## If a single AD region is used, pick the only AD returned from the data source.
26-
26+
2727
dynamic "placement_configs" {
2828
iterator = ad_iterator
2929
for_each = [for n in lookup(each.value, "placement_ads", local.ad_numbers) :
@@ -75,7 +75,8 @@ resource "oci_containerengine_node_pool" "nodepools" {
7575

7676
# cloud-init
7777
node_metadata = {
78-
user_data = var.cloudinit_nodepool_common == "" && lookup(var.cloudinit_nodepool, each.key, null) == null ? data.cloudinit_config.worker.rendered : lookup(var.cloudinit_nodepool, each.key, null) != null ? filebase64(lookup(var.cloudinit_nodepool, each.key, null)) : filebase64(var.cloudinit_nodepool_common)
78+
oke-kubeproxy-proxy-mode = var.kubeproxy_mode
79+
user_data = var.cloudinit_nodepool_common == "" && lookup(var.cloudinit_nodepool, each.key, null) == null ? data.cloudinit_config.worker.rendered : lookup(var.cloudinit_nodepool, each.key, null) != null ? filebase64(lookup(var.cloudinit_nodepool, each.key, null)) : filebase64(var.cloudinit_nodepool_common)
7980
}
8081

8182
# optimized OKE images
@@ -120,10 +121,10 @@ resource "oci_containerengine_node_pool" "nodepools" {
120121
lifecycle {
121122
ignore_changes = [
122123
kubernetes_version,
123-
defined_tags, # automatic tagging after apply
124-
node_metadata, # templated cloud-init
124+
defined_tags, # automatic tagging after apply
125+
node_metadata, # templated cloud-init
125126
node_config_details[0].placement_configs, # dynamic placement configs
126-
node_source_details # dynamic image lookup
127+
node_source_details # dynamic image lookup
127128
]
128129
}
129130

modules/oke/variables.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ variable "admission_controller_options" {
8585
type = map(any)
8686
}
8787

88+
variable "kubeproxy_mode" {}
89+
8890
variable "max_pods_per_node" {
8991
type = number
9092
}

terraform.tfvars.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ image_signing_keys = []
189189
# node pools
190190
check_node_active = "all"
191191
enable_pv_encryption_in_transit = false
192+
kubeproxy_mode = "iptables"
192193
node_pools = {
193194
# Basic node pool
194195
#np1 = {

variables.tf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,16 @@ variable "cloudinit_nodepool_common" {
683683
default = ""
684684
}
685685

686+
variable "kubeproxy_mode" {
687+
default = "iptables"
688+
description = "The mode in which to run kube-proxy."
689+
type = string
690+
691+
validation {
692+
condition = contains(["iptables", "ipvs"], var.kubeproxy_mode)
693+
error_message = "Accepted values are iptables or ipvs."
694+
}
695+
}
686696
variable "node_pools" {
687697
default = {}
688698
description = "Tuple of node pools. Each key maps to a node pool. Each value is a tuple of shape (string),ocpus(number) , node_pool_size(number) and boot_volume_size(number)"

0 commit comments

Comments
 (0)