apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-out # 네트워크 정책의 이름은 'deny-out'
namespace: app # 적용될 네임스페이스는 'app'
spec:
podSelector: {} # 모든 파드를 대상으로 하는 선택자
policyTypes:
- Egress # 아웃바운드(밖으로 나가는) 트래픽에만 적용
app 네임스페이스의 모든 파드에 대해 포트 53을 사용하는 TCP 및 UDP 아웃바운드 트래픽만을 허용
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy # 네트워크 정책 리소스 종류
metadata:
name: deny-out # 네트워크 정책의 이름
namespace: app # 적용될 네임스페이스
spec:
podSelector: {} # 모든 파드를 대상으로 하는 선택자
policyTypes:
- Egress # 아웃바운드(밖으로 나가는) 트래픽에 적용
egress:
- ports:
- port: 53 # 포트 53을 사용하는 TCP 트래픽 허용
protocol: TCP
- port: 53 # 포트 53을 사용하는 UDP 트래픽 허용
protocol: UDP
특정 pod가 메타데이터 서버로 접근 못하게끔하는 네트워크 정책
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: metadata-server # 정책 이름: metadata-server
namespace: default # 적용 네임스페이스: default
spec:
podSelector:
matchLabels:
trust: nope # 레이블 'trust: nope'을 가진 파드 대상
policyTypes:
- Egress # 아웃바운드 트래픽 제어
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0 # 모든 IP 범위 대상 (인터넷 전체)
except:
- 1.1.1.1/32 # 1.1.1.1 주소를 제외
default 네임스페이스 내에서 'trust: nope' 레이블을 가진 모든 파드가 1.1.1.1 주소를 제외한 모든 대상으로의 아웃바운드 트래픽을 허용한다.
How many network policies do you see in the environment? ( Network Policy 조회 )
- kubectl get networkpolicies
Create a network policy to allow traffic from the Internal application only to the payroll-service and db-service.(Network Policy 생성하기, internal 레이블을 가진 파드는 mysql 파드의 3306 포트 및 payroll 파드의 8080 포트로만 접근할 수 있게 만들기)
zone "demo.test" {
type master;
file "/etc/bind/zones/demo.test";
};
mkdir /etc/bind/zones
vim /etc/bind/zones/demo.test
$TTL 60
@ IN SOA ns.demo.test. admin.demo.test. (
3 ; Serial
120 ; Refresh
60 ; Retry
2419200 ; Expire
60 ) ; Negative Cache TTL
;
@ IN NS ns
NS IN A 192.168.0.8
* IN A 192.168.0.3
마스터 노드
cpu 2코어 / ram 4GB(4096)
워커 노드
cpu 4코어 / ram 8GB(8192)
마스터노드 clone 후 ip 변경
vim /etc/netplan/50-cloud-init.yaml 에서 ip 수정 && hostnamectl set-hostname worker --static