Я реализую сетевую политику kubernetes для своего приложения на K3s. Я хочу разрешить egress
(внешний вызов в Интернет из модуля) для порта 443
, т. е. https
вызовов только, и запретить/заблокировать все исходящие вызовы на порту 80
, т.е. http
. Короче говоря, разрешить https
исходящие вызовы и запретить http
исходящие вызовы.
Я тестирую это с помощью custom-dns.yaml
файла ниже:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: foo-deny-egress
spec:
podSelector:
matchLabels:
app: foo
policyTypes:
- Egress
egress:
# allow DNS resolution
- ports:
- port: 443
protocol: UDP
- port: 443
protocol: TCP
После kubectl apply -f custom-dns.yaml
я создаю и вхожу в модуль :kubectl run --restart=Never pod-v1 --image=busybox -i -t -l app=foo
и проверяю URL-адреса http и https с помощью команды:
wget https://www.google.com
wget http://drive.google.com/drive/u/0/my-drive
Обе команды wget выдают ошибку wget: bad address
.
Но когда я не применяю эту сетевую политику, те же команды wget работают и дают следующий результат из того же модуля:
i.
wget https://www.google.com
Connecting to www.google.com (172.217.167.164:443)
wget: note: TLS certificate validation not implemented
saving to 'index.html'
index.html 100% |******************************************************| 15264 0:00:00 ETA
'index.html' saved
ii.
wget http://drive.google.com/drive/u/0/my-drive
Connecting to drive.google.com (142.250.192.46:80)
Connecting to drive.google.com (142.250.192.46:443)
wget: note: TLS certificate validation not implemented
Connecting to accounts.google.com (142.250.192.77:443)
saving to 'my-drive'
my-drive 100% |******************************************************| 92019 0:00:00 ETA
'my-drive' saved
iii. Telnet
на google.com IP 172.217.167.164
с 80
и 443
портом
#telnet 172.217.166.164 80
Connected to 172.217.166.164
^]q
# telnet 172.217.166.164 443
Connected to 172.217.166.164
^]
iv. Аналогично Telnet
для drive.com IP 142.250.192.46
с 80
и 443
портом
Что мне здесь не хватает?