-
카테고리
-
세부 분야
데브옵스 · 인프라
-
해결 여부
미해결
로드벨런서 생성하면, 자동으로 external ip가 할당 되는데, 수동 할당도 할 수 있나요?
21.09.12 20:41 작성 조회수 425
2
답변을 작성해보세요.
2
1
조훈(Hoon Jo)
지식공유자2021.09.14
GKE의 경우 GLB에 static ip를 주고 그걸 manifest에 ip로 주면 동작하네요 (권장하는지를 좀 확인해 봐야 할꺼 같아요)
아마 다른 EKS, AKS도 유사할 것으로 예상됩니다.
│ File: static-lb.yaml
───────┼───────────────
1 │ apiVersion: v1
2 │ kind: Service
3 │ metadata:
4 │ labels:
5 │ app: chk-info
6 │ name: chk-info
7 │ spec:
8 │ ports:
9 │ - port: 80
10 │ protocol: TCP
11 │ targetPort: 80
12 │ selector:
13 │ app: chk-info
14 │ type: LoadBalancer
15 │ loadBalancerIP: 34.134.n.n
❯ k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chk-info LoadBalancer 10.16.2.107 34.134.n.n 80:32257/TCP 54s
kubernetes ClusterIP 10.16.0.1 <none> 443/TCP 171d
1
조훈(Hoon Jo)
지식공유자2021.09.13
anstls님은 :) 항상 자체 답변을 자주 주시는군요 :)
부가적인 설명을 좀 드리자면요.
LoadBalancer에 Static(고정) 주소를 줄 수는 있지만, 매우 제한적으로 사용됩니다.
아무래도 외부로 오픈하는 주소가 고정으로 된다면, 위험에 매우 노출되는 결과를 가지게 되거든요
예를 들면, 리니지 게임에 주요 메인 서버 주소를 안다고 생각해 볼까요
(물론 구조적으로는 그 메인 서버라는게 노출 될 일은 없고 베스천 서버 수준으로만 노출되겠지만요)
이는 크래킹 등의 위험에 쉽게 노출되게 됩니다.
또한 주소라는 것은 제한적인 자원으로 관리가 필요한데, 이를 Static으로 사용하게 되면, 실제로 관리를 하기 매우 어렵습니다. 그래서 거의 모든 관리형 쿠버네티스 및 설치형등은 IP range를 주고 그 내에서 사용하도록 합니다.
특정 서비스가 다른 서비스와 연결성이 필요하다면 노출되는 ip가 아니라 coreDNS에서 제공하는 Domain 이름으로 내부적으로 연결해서 관리합니다. 나중에 ingress 부분을 보면 clusterIP와 다른 서비스가 연결되는 것을 보실 수 있을꺼에요
참고가 되시면 좋을꺼 같습니다
조훈 드림.
0
anstls9614
질문자2021.09.12
아 이렇게 하면 되군요.
apiVersion: v1
kind: Service
metadata:
name: lb-nginx
spec:
selector:
app: deploy-nginx
ports:
- name: http
port: 80
targetPort: 80
type: LoadBalancer
loadBalancerIP: { IP 입력 }
답변 4