Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
e475ba70
Commit
e475ba70
authored
Oct 02, 2024
by
manuelbuil
Committed by
Manuel Buil
Oct 09, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add e2e test for advanced fields in services
Signed-off-by:
manuelbuil
<
mbuil@suse.com
>
parent
c6392c9f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
253 additions
and
0 deletions
+253
-0
loadbalancer-extTrafficPol.yaml
.../e2e/amd64_resource_files/loadbalancer-extTrafficPol.yaml
+62
-0
loadbalancer-intTrafficPol.yaml
.../e2e/amd64_resource_files/loadbalancer-intTrafficPol.yaml
+63
-0
loadbalancer.yaml
tests/e2e/amd64_resource_files/loadbalancer.yaml
+25
-0
Vagrantfile
tests/e2e/svcpoliciesandfirewall/Vagrantfile
+75
-0
svcpoliciesandfirewall_test.go
...e2e/svcpoliciesandfirewall/svcpoliciesandfirewall_test.go
+0
-0
testutils.go
tests/e2e/testutils.go
+28
-0
No files found.
tests/e2e/amd64_resource_files/loadbalancer-extTrafficPol.yaml
0 → 100644
View file @
e475ba70
---
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
nginx-config
data
:
default.conf
:
|
server {
listen 80;
location /ip {
return 200 "$remote_addr\n";
}
# Default location block to serve the default "Welcome to nginx" page
location / {
root /usr/share/nginx/html;
index index.html;
}
}
---
apiVersion
:
apps/v1
kind
:
Deployment
metadata
:
name
:
test-loadbalancer-ext
spec
:
selector
:
matchLabels
:
k8s-app
:
nginx-app-loadbalancer-ext
replicas
:
1
template
:
metadata
:
labels
:
k8s-app
:
nginx-app-loadbalancer-ext
spec
:
containers
:
-
name
:
nginx
image
:
ranchertest/mytestcontainer
ports
:
-
containerPort
:
80
volumeMounts
:
-
name
:
nginx-config-volume
mountPath
:
/etc/nginx/conf.d
volumes
:
-
name
:
nginx-config-volume
configMap
:
name
:
nginx-config
---
apiVersion
:
v1
kind
:
Service
metadata
:
name
:
nginx-loadbalancer-svc-ext
labels
:
k8s-app
:
nginx-app-loadbalancer-ext
spec
:
type
:
LoadBalancer
externalTrafficPolicy
:
Local
ports
:
-
port
:
82
targetPort
:
80
protocol
:
TCP
name
:
http
selector
:
k8s-app
:
nginx-app-loadbalancer-ext
tests/e2e/amd64_resource_files/loadbalancer-intTrafficPol.yaml
0 → 100644
View file @
e475ba70
---
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
nginx-config
data
:
default.conf
:
|
server {
listen 80;
location /ip {
return 200 "$remote_addr\n";
}
# Default location block to serve the default "Welcome to nginx" page
location / {
root /usr/share/nginx/html;
index index.html;
}
}
---
apiVersion
:
apps/v1
kind
:
Deployment
metadata
:
name
:
test-loadbalancer-int
spec
:
selector
:
matchLabels
:
k8s-app
:
nginx-app-loadbalancer-int
replicas
:
1
template
:
metadata
:
labels
:
k8s-app
:
nginx-app-loadbalancer-int
spec
:
containers
:
-
name
:
nginx
image
:
ranchertest/mytestcontainer
ports
:
-
containerPort
:
80
volumeMounts
:
-
name
:
nginx-config-volume
mountPath
:
/etc/nginx/conf.d
volumes
:
-
name
:
nginx-config-volume
configMap
:
name
:
nginx-config
---
apiVersion
:
v1
kind
:
Service
metadata
:
name
:
nginx-loadbalancer-svc-int
labels
:
k8s-app
:
nginx-app-loadbalancer-int
spec
:
type
:
LoadBalancer
internalTrafficPolicy
:
Local
ports
:
-
port
:
83
targetPort
:
80
protocol
:
TCP
name
:
http
selector
:
k8s-app
:
nginx-app-loadbalancer-int
tests/e2e/amd64_resource_files/loadbalancer.yaml
View file @
e475ba70
---
---
apiVersion
:
v1
kind
:
ConfigMap
metadata
:
name
:
nginx-config
data
:
default.conf
:
|
server {
listen 80;
location /ip {
return 200 "$remote_addr\n";
}
# Default location block to serve the default "Welcome to nginx" page
location / {
root /usr/share/nginx/html;
index index.html;
}
}
---
apiVersion
:
apps/v1
apiVersion
:
apps/v1
kind
:
Deployment
kind
:
Deployment
metadata
:
metadata
:
...
@@ -18,6 +36,13 @@ spec:
...
@@ -18,6 +36,13 @@ spec:
image
:
ranchertest/mytestcontainer
image
:
ranchertest/mytestcontainer
ports
:
ports
:
-
containerPort
:
80
-
containerPort
:
80
volumeMounts
:
-
name
:
nginx-config-volume
mountPath
:
/etc/nginx/conf.d
volumes
:
-
name
:
nginx-config-volume
configMap
:
name
:
nginx-config
---
---
apiVersion
:
v1
apiVersion
:
v1
kind
:
Service
kind
:
Service
...
...
tests/e2e/svcpoliciesandfirewall/Vagrantfile
0 → 100644
View file @
e475ba70
ENV
[
'VAGRANT_NO_PARALLEL'
]
=
'no'
NODE_ROLES
=
(
ENV
[
'E2E_NODE_ROLES'
]
||
[
"server-0"
,
"agent-0"
])
NODE_BOXES
=
(
ENV
[
'E2E_NODE_BOXES'
]
||
[
'bento/ubuntu-24.04'
,
'bento/ubuntu-24.04'
])
GITHUB_BRANCH
=
(
ENV
[
'E2E_GITHUB_BRANCH'
]
||
"master"
)
RELEASE_VERSION
=
(
ENV
[
'E2E_RELEASE_VERSION'
]
||
""
)
GOCOVER
=
(
ENV
[
'E2E_GOCOVER'
]
||
""
)
NODE_CPUS
=
(
ENV
[
'E2E_NODE_CPUS'
]
||
2
).
to_i
NODE_MEMORY
=
(
ENV
[
'E2E_NODE_MEMORY'
]
||
2048
).
to_i
NETWORK4_PREFIX
=
"10.10.10"
install_type
=
""
def
provision
(
vm
,
role
,
role_num
,
node_num
)
vm
.
box
=
NODE_BOXES
[
node_num
]
vm
.
hostname
=
role
node_ip4
=
"
#{
NETWORK4_PREFIX
}
.
#{
100
+
node_num
}
"
vm
.
network
"private_network"
,
:ip
=>
node_ip4
,
:netmask
=>
"255.255.255.0"
scripts_location
=
Dir
.
exist?
(
"./scripts"
)
?
"./scripts"
:
"../scripts"
vagrant_defaults
=
File
.
exist?
(
"./vagrantdefaults.rb"
)
?
"./vagrantdefaults.rb"
:
"../vagrantdefaults.rb"
load
vagrant_defaults
defaultOSConfigure
(
vm
)
addCoverageDir
(
vm
,
role
,
GOCOVER
)
install_type
=
getInstallType
(
vm
,
RELEASE_VERSION
,
GITHUB_BRANCH
)
if
role
.
include?
(
"server"
)
&&
role_num
==
0
vm
.
provision
:k3s
,
run:
'once'
do
|
k3s
|
k3s
.
config_mode
=
'0644'
# side-step https://github.com/k3s-io/k3s/issues/4321
k3s
.
args
=
"server "
k3s
.
config
=
<<~
YAML
node-ip:
#{
node_ip4
}
token: vagrant
YAML
k3s
.
env
=
[
"K3S_KUBECONFIG_MODE=0644"
,
install_type
]
end
end
if
role
.
include?
(
"agent"
)
vm
.
provision
:k3s
,
run:
'once'
do
|
k3s
|
k3s
.
config_mode
=
'0644'
# side-step https://github.com/k3s-io/k3s/issues/4321
k3s
.
args
=
"agent "
k3s
.
config
=
<<~
YAML
server: https://
#{
NETWORK4_PREFIX
}
.100:6443
token: vagrant
node-ip:
#{
node_ip4
}
YAML
k3s
.
env
=
[
"K3S_KUBECONFIG_MODE=0644"
,
install_type
]
end
end
end
Vagrant
.
configure
(
"2"
)
do
|
config
|
config
.
vagrant
.
plugins
=
[
"vagrant-k3s"
,
"vagrant-reload"
,
"vagrant-libvirt"
,
"vagrant-scp"
]
config
.
vm
.
provider
"libvirt"
do
|
v
|
v
.
cpus
=
NODE_CPUS
v
.
memory
=
NODE_MEMORY
# We replicate the default prefix, but add a timestamp to enable parallel runs and cleanup of old VMs
v
.
default_prefix
=
File
.
basename
(
Dir
.
getwd
)
+
"_"
+
Time
.
now
.
to_i
.
to_s
+
"_"
end
if
NODE_ROLES
.
kind_of?
(
String
)
NODE_ROLES
=
NODE_ROLES
.
split
(
" "
,
-
1
)
end
if
NODE_BOXES
.
kind_of?
(
String
)
NODE_BOXES
=
NODE_BOXES
.
split
(
" "
,
-
1
)
end
NODE_ROLES
.
each_with_index
do
|
role
,
i
|
role_num
=
role
.
split
(
"-"
,
-
1
).
pop
.
to_i
config
.
vm
.
define
role
do
|
node
|
provision
(
node
.
vm
,
role
,
role_num
,
i
)
end
end
end
tests/e2e/svcpoliciesandfirewall/svcpoliciesandfirewall_test.go
0 → 100644
View file @
e475ba70
This diff is collapsed.
Click to expand it.
tests/e2e/testutils.go
View file @
e475ba70
...
@@ -46,6 +46,11 @@ type NodeError struct {
...
@@ -46,6 +46,11 @@ type NodeError struct {
Err
error
Err
error
}
}
type
SvcExternalIP
struct
{
IP
string
`json:"ip"`
ipMode
string
`json:"ipMode"`
}
type
ObjIP
struct
{
type
ObjIP
struct
{
Name
string
Name
string
IPv4
string
IPv4
string
...
@@ -262,6 +267,29 @@ func FetchClusterIP(kubeconfig string, servicename string, dualStack bool) (stri
...
@@ -262,6 +267,29 @@ func FetchClusterIP(kubeconfig string, servicename string, dualStack bool) (stri
return
RunCommand
(
cmd
)
return
RunCommand
(
cmd
)
}
}
// FetchExternalIPs fetches the external IPs of a service
func
FetchExternalIPs
(
kubeconfig
string
,
servicename
string
)
([]
string
,
error
)
{
var
externalIPs
[]
string
cmd
:=
"kubectl get svc "
+
servicename
+
" -o jsonpath='{.status.loadBalancer.ingress}' --kubeconfig="
+
kubeconfig
output
,
err
:=
RunCommand
(
cmd
)
if
err
!=
nil
{
return
externalIPs
,
err
}
var
svcExternalIPs
[]
SvcExternalIP
err
=
json
.
Unmarshal
([]
byte
(
output
),
&
svcExternalIPs
)
if
err
!=
nil
{
return
externalIPs
,
fmt
.
Errorf
(
"Error unmarshalling JSON: %v"
,
err
)
}
// Iterate over externalIPs and append each IP to the ips slice
for
_
,
ipEntry
:=
range
svcExternalIPs
{
externalIPs
=
append
(
externalIPs
,
ipEntry
.
IP
)
}
return
externalIPs
,
nil
}
func
FetchIngressIP
(
kubeconfig
string
)
([]
string
,
error
)
{
func
FetchIngressIP
(
kubeconfig
string
)
([]
string
,
error
)
{
cmd
:=
"kubectl get ing ingress -o jsonpath='{.status.loadBalancer.ingress[*].ip}' --kubeconfig="
+
kubeconfig
cmd
:=
"kubectl get ing ingress -o jsonpath='{.status.loadBalancer.ingress[*].ip}' --kubeconfig="
+
kubeconfig
res
,
err
:=
RunCommand
(
cmd
)
res
,
err
:=
RunCommand
(
cmd
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment