data engineering

aws route53 ~ 쿠버네티스 ingress 흐름관련

qkqhxla1 2020. 2. 22. 18:53

처음 aws와 쿠버네티스를 접하면서 누구나 그렇겠지만 이해하기 힘들었던 개념이 로드밸런싱과 라우팅이 어떻게 동작하는가였다. 그러니까 단순하게 로드밸런싱은 부하를 분산해준다.. 그런건 알고있었는데 구체적으로 어떻게 설정해줘야 이게 어떤식으로 로드밸런싱이 되는지, 포트포워딩은 어디에 어떻게 적어줘야 밖에서 내부로 제대로 접속이 되는지 몰랐다.

docs를 찾아봐도 이미 어느정도 아는 사람들을(알것같은 사람들을) 대상으로 써서 그런지 잘 이해가 되지 않았다. 

테스트도 못해보고 구름위에 둥둥 떠있는 느낌이어서 고생좀 했다.


아래에는 aws route53을 통해서 어떻게 데이터가 들어오는지 그림을 좀 그려보고자 한다. 요즘 이런 개념정리의 필요성을 느낀다. 너무 휙휙 지나가다보니 할줄은 아는데 이게 왜 이런건지 아무생각없이 만드는 경우가 많은것같다.


https://qkqhxla1.tistory.com/1026?category=802922 에서 aws cluster세팅하면서 자세하게 일부 적었었는데, 흐름 중심으로 적겠음.

현내 내 쿠버네티스의 상황인데 쿠버네티스 안에 또다른 네트워크가 있지만 굳이 그것까지 그릴 필요는 없어서 이렇게만 그려놨다. 

Route 53에서 http://kibana.test.net/으로 입력했을때 쿠버네티스 안에 설치된 키바나가 실행되도록 하려면 어떤 설정을 해야하나 간단히 적겠다.(현재 쿠버네티스 worker들은 aws ec2 instance로 구성되어있음.)


아래의 1,2,3은 https://qkqhxla1.tistory.com/1026?category=802922에 일부 적기도했고 딱히 적을만한 내용이 없어서 설명만 적음.

1. aws target group을 만듬. target group을 만드는 이유는 쿠버네티스 worker들을 묶어주기 위해서다. aws안에서 이 target group을 바라보면 이게 모든 worker들을 바라본다. target group에 포트를 설정할수 있는데 80번 웹 포트를 설정해준다.(이러면 이제 aws내부에서 이 타겟 그룹을 보게 되면 설정한 80번 포트로밖에 접근을 못한다.)


2. load balancer을 만듬. aws load balancer을 만들고, 그 로드밸런서가 타겟 그룹을 보도록 한다. 로드밸런서를 연결해야만 실질적으로 밖에서 worker로 접근할수 있는 DNS가 생긴다. target group 자체만으로는 DNS가 생성되지 않는다.


3. Route 53을 만듬. Route 53에 내가 원하는 url인 http://kibana.test.net/을 입력하고, 바라보는 타겟은 2번에서 만든 load balancer의 DNS 를 적는다. http://kibana.test.net/를 입력했을때 worker내의 내가 만든 키바나로 가도록 하는것은 쿠버네티스 단에서 설정한다.


4. kubernetes ingress 설정.

랜쳐 gui로만 해봐서 gui예시를 붙인다.

Load Balancing탭에 Add Ingress 가 있는데. Add Ingress를 눌러주고 

이처럼 설정해준다. 내가 test-zone이라는 namespace에 kibana-t라는 키바나를 설치해놔서 저리 잘 뜨고, 이건 Request Host인 http://kibana.test.net/로 쿠버네티스 worker로 요청이 오면 내가 만든 kibana-t라는 서비스의 5601 포트로 포워딩시켜주겠다는 얘기이다. 


+위의 작업은 다 끝났고 추가로 키바나와 다른 워커에 엘라스틱서치가 설치되어 있다고 가정하자. route 53에 url을 추가해서 엘라스틱서치도 접속하고 싶다. 이 경우에는

1. route 53에 elasticsearch url을 만든다음 위에서 만든 로드밸런서를 보게 한다.(무조건 워커들을 봄)


2. 위의 4번, ingress를 만들어준다. 내가만든 elasticsearch url이 Request Host에 있으면 target을 엘라스틱서치 서비스로 지정해주고, 포트는 기본포트인 9200으로 지정해준다.


이 두개만 해주면 끝.

다른 서비스의 url추가하는 과정도 동일한다.