티스토리 뷰

기본적으로 alb-ingress사용시 아무런 옵션이 없이 ingress를 생성한다면

 

새로운 alb가 생성되고 all open sg(allow 0.0.0.0 80/443) 1개와  k8s 관리용 shared backend sg해서 2개의 sg가 할당됩니다

 

이중 후자는 lb에서 클러스터에 접근할때 사용하는 backend용 sg입니다 클러스터 sg에서 해당 sg를 선택하여 정책을 제어 합니다

 

전자는 기본값으로 all open 되어지며 lb생성시마다 새로 생성 됩니다

 

제가 사용하는 환경에서는 위와같이 실제 서비스 용도도 있지만 보안을 위하여 특정 ip에만 open된 ingress도 있습니다

 

또한 많은 alb가 있어 alb마다 똑같은 정책의 sg가 새로 생성되는것을 피하고자 해서 아래의 방법을 사용 하였습니다

 

기 생성된 sg를 이용하여 alb-ingress 생성 하는방법에 대한 정리 입니다

 

먼저 shared backend sg를 생성합니다 이미 사용중이라면 description에 [k8s] Shared Backend SecurityGroup for LoadBalancer라고 적혀져 있는 sg를 사용하면 됩니다

 

inbound는 비워두고 outbound 만 open하면 됩니다 lb에서 pod에 접근시 이 sg를 사용 합니다

 

그리고 alb에 적용할 sg를 생성 합니다

 

0.0.0.0 80/443이나 특정 아이피의 정책을 넣어 인바운드 설정을 합니다

 

위와같이 sg를 생성하고 생성된 sg를 사용하려면 ingress 생성시 아래 annotation을 이용하면 됩니다

 

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: server-ingress
  namespace: default
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/security-groups: sg-0190xxxxx, sg-0f6eaxxxxxxx6
    alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxx:certificate/xxxxxx
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/ssl-redirect: '443'
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
         - path: /users/*
           pathType: ImplementationSpecific
           backend:
             service:
               name: user-service
               port:
                 number: 80

 

위에서 중요한 값은

 

    alb.ingress.kubernetes.io/security-groups: sg-0190xxxxx, sg-0f6eaxxxxxxx6
    alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"

위 2가지 입니다

 

security-groups에는 사용할 2개의 sg id를 입력 해줍니다

 

manage-backend-security-group-rules 은 생성된 backend sg를 이용하여 클러스터 cni기본 sg정책에 ingress 인바운드 허용 정책을 추가하여 줍니다

 

위와같이 설정하게 되면 클러스터 기본 sg에 소스가 shared backend인 곳에서 80번 tcp port allow 정책이 들어가게 되는것 입니다

 

위 옵션을 넣지 않으면 lb의 sg는 잘 설정되었어도 lb에서 클러스터 접근이 불가능 합니다

 

'클라우드 > 쿠버네티스' 카테고리의 다른 글

Internal LoadBalancer 생성하기  (0) 2022.05.24
엘라스틱 서치 security 설정  (0) 2022.05.24
자원 관리  (0) 2022.05.24
Probe 설정  (0) 2022.05.10
EKS에서의 Ingress Controller 선택  (0) 2022.03.29
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함