fix: [CNI] NAT hostPort mapping for HNSv2 (#1922)

* NAT update

* NAT update

* Cleaning up and unit test

* Fix Lint

* Fix Lint

* Fix Lint - Addr. comments

---------

Co-authored-by: jpayne3506 <johnpayne@microsoft.com>
This commit is contained in:
John Payne 2023-05-01 07:20:43 -07:00 коммит произвёл GitHub
Родитель 2df9d27b73
Коммит 4f76b19c21
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 17 добавлений и 1 удалений

Просмотреть файл

@ -252,11 +252,14 @@ func getPoliciesFromRuntimeCfg(nwCfg *cni.NetworkConfig) []policy.Policy {
protocol = policy.ProtocolUdp
}
// To support hostport policy mapping
// uint32 NatFlagsLocalRoutedVip = 1
rawPolicy, _ := json.Marshal(&hnsv2.PortMappingPolicySetting{
ExternalPort: uint16(mapping.HostPort),
InternalPort: uint16(mapping.ContainerPort),
VIP: mapping.HostIp,
Protocol: protocol,
Flags: hnsv2.NatFlagsLocalRoutedVip,
})
hnsv2Policy, _ := json.Marshal(&hnsv2.EndpointPolicy{

Просмотреть файл

@ -235,8 +235,21 @@ func TestSetPoliciesFromNwCfg(t *testing.T) {
},
},
},
{
name: "Runtime hostPort mapping polices",
nwCfg: cni.NetworkConfig{
RuntimeConfig: cni.RuntimeConfig{
PortMappings: []cni.PortMapping{
{
Protocol: "tcp",
HostPort: 44000,
ContainerPort: 80,
},
},
},
},
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {