Skip to content

Commit

Permalink
Add support for Windows OVS Containerisation in Install-OVS script
Browse files Browse the repository at this point in the history
For antrea-io#4952

Signed-off-by: Naman Agarwal <[email protected]>
  • Loading branch information
NamanAg30 committed Jun 9, 2023
1 parent 5562b29 commit e07e3ec
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 4 deletions.
9 changes: 9 additions & 0 deletions docs/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ The following components should be configured and run on the Windows Node.

antrea-agent and kube-proxy run as processes on host and are managed by
management Pods. It is recommended to run OVS daemons as Windows services.
We also support running OVS processes inside container.
If you don't want to run antrea-agent and kube-proxy from the management Pods
Antrea also provides scripts which help install and run these two components
directly without Pod, please see [Manually run kube-proxy and antrea-agent on Windows worker Nodes](#Manually-run-kube-proxy-and-antrea-agent-on-Windows-worker-Nodes)
Expand Down Expand Up @@ -302,6 +303,14 @@ get-service ovsdb-server
get-service ovs-vswitchd
```

If you want to containerise OVS for containerd runtime, OVS userspace processes is
not required on host and hence you can use the `InstallUserspace` parameter
as false.

```powershell
.\Install-OVS.ps1 -InstallUserspace $false
```

#### 2. Disable Windows Firewall

```powershell
Expand Down
20 changes: 17 additions & 3 deletions hack/windows/Install-OVS.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,19 @@
.PARAMETER ImportCertificate
Specifies if a certificate file is needed for OVS package. If true, certificate
will be retrieved from OVSExt.sys and a package.cer file will be generated.
.PARAMETER InstallUserspace
Specifies whether OVS userspace processes is included in the installation. If false, these processes will not
be installed as Windows service on the host.
#>
Param(
[parameter(Mandatory = $false)] [string] $DownloadDir,
[parameter(Mandatory = $false)] [string] $DownloadURL,
[parameter(Mandatory = $false)] [string] $OVSInstallDir = "C:\openvswitch",
[parameter(Mandatory = $false)] [bool] $CheckFileHash = $true,
[parameter(Mandatory = $false)] [string] $LocalFile,
[parameter(Mandatory = $false)] [bool] $ImportCertificate = $true
[parameter(Mandatory = $false)] [bool] $ImportCertificate = $true,
[parameter(Mandatory = $false)] [bool] $InstallUserspace = $true
)

$ErrorActionPreference = "Stop"
Expand Down Expand Up @@ -251,6 +256,13 @@ function ConfigOVS() {
ovs-vsctl --no-wait set Open_vSwitch . ovs_version=$OVS_VERSION
}

if ($InstallUserspace -eq $false) {
if(!(Get-Process containerd )){
Write-error "Containerd runtime not found. Containerd runtime is required for OVS Containerisation."
exit 1
}
}

Log "Installation log location: $InstallLog"

CheckIfOVSInstalled
Expand All @@ -259,8 +271,10 @@ DownloadOVS

InstallOVS

InstallDependency
if ($InstallUserspace -eq $true) {
InstallDependency

ConfigOVS
ConfigOVS
}

Log "OVS Installation Complete!"
7 changes: 6 additions & 1 deletion hack/windows/Prepare-Node.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ Install OVS
.PARAMETER NodeIP
The node ip used by kubelet
.PARAMETER InstallOVSUserspace
Specifies whetehr OVS userspace processes is included in the installation. If false, these processes will not
be installed as Windows service on the host.
.EXAMPLE
PS> .\Prepare-Node.ps1 -KubernetesVersion v1.18.0 -InstallOVS -NodeIP 192.168.1.10
Expand All @@ -32,6 +36,7 @@ Param(
[parameter(Mandatory = $true, HelpMessage="Node IP")] [string] $NodeIP,
[parameter(Mandatory = $false)] [switch] $InstallOVS = $false,
[parameter(Mandatory = $false, HelpMessage="Kubernetes download")] [string] $KubernetesURL="dl.k8s.io"
[parameter(Mandatory = $false)] [bool] $InstallOVSUserspace = $true
)
$ErrorActionPreference = 'Stop'

Expand Down Expand Up @@ -127,5 +132,5 @@ New-NetFirewallRule -Name kubelet -DisplayName 'kubelet' -Enabled True -Directio

if ($InstallOVS) {
Write-Host "Installing OVS"
& .\Install-OVS.ps1
& .\Install-OVS.ps1 -InstallUserspace $InstallOVSUserspace
}

0 comments on commit e07e3ec

Please sign in to comment.