공부/컴퓨터
[Kubernetes] k3s 1.20이하에서 Traefik 1.81 제거하고 Traefik 2.x 설치하기
찬
2021. 2. 26. 00:26
반응형
2021년 5월 업데이트...
- k3s가 1.21부터는 Traefik v1이 설치되어 있지 않다면, Traefik v2를 기본으로 설치 한다고 합니다. 그러니 최신 버젼을 사용하는 사람은 아래 내용은 그냥 참고삼아 읽으시면 됩니다.
k3s가 좋긴한데... Traefik 이 문제라...
- k3s를 이용하면 단한줄의 명령어만으로 single node kubernetes를 구성할 수 있다.
- 관련 링크 1 : https://blog.ggaman.com/1018?category=332239
- 관련 링크 2 : https://rancher.com/docs/k3s/latest/en/installation/install-options/
curl -sfL https://get.k3s.io | sh -
- 단, 한줄로 무언가를 할 수 있다는 말은, 기본적인 것은 알아서 다 설치해 줄께~ 정도의 말이 될 것이다.
- 그래서 문제다.
k3s 설치되는 IngressController
- k3s는 별 설정 없어도 Kubernetes 에 필요한 이것저것을 자동으로 설치해 쉽게 환경을 만들어 준다고 이야기 했다.
- 그 중에서 IngressController 기능을 할 것으로 Traefik 을 자동으로 설치해 사용하도록 되어 있다.
- 문제는 k3s에서 자동으로 설치해 주는 IngressController가 Traefik 1.81 버젼이라는것이다.
- 관련 링크 :https://github.com/k3s-io/k3s/blob/master/manifests/traefik.yaml
- Traefik 2.x 대부터는 Ingress를 쉽게 쓰기 위해서 IngressRoute라는 CRD(Custom Resource Definition)을 지원한다.
- 그러니, 난 Traefik2.x 를 사용하고 싶었고, 그러니.. Traefik2.x 를 설치해야 했다.
k3s 설치시 traefik 2.x 설치하기
- 우선 k3s를 설치할때 traefik 1.x 를 설치않도록 하고, 이후 traefik 2.x를 설치하는 방식으로 진행.
curl -sfL https://get.k3s.io | sh -s - --disable-traefik
k3s 설치시 traefik1.x 설치하지 않기
- k3s는 설치가 쉽기도 하지만, 특정 기능을 빼거나 변경하면서 설치하기도 쉽게 되어 있다.
curl -sfL https://get.k3s.io | sh -s - --disable traefik
- 위와 같이 설치하면, traefik 이 빠져서 설치된다.
k3s에 traefik 2.x 설치하기
- 최초 설치시에는 traefik 을 빼고 설치 했으나, 이제는 k3s가 traefik 2.x을 사용할 수 있도록 해야 한다.
- 물론 수동으로 traefik을 설치해도 된다.
- 관련 링크 : https://community.traefik.io/t/traefik-v2-helm-a-tour-of-the-traefik-2-helm-chart/6126
helm repo add traefik https://containous.github.io/traefik-helm-chart
helm repo update
helm install traefik traefik/traefik
- 참고로
helm install traefik stable/traefik
으로 설치하면 1.x가 설치 된다.
- traefik을 따로 설치하면, kubernetes 자체에 관한 설정이 k3s 쪽과 분리되어 있게 되므로, 관리의 편의를 위해서 될 수 있으면, k3s 설정 관련되는 디렉토리에 정보를 넣어 주는 방법이 좋을 것이다.
근데 k3s가 이것저것 알아서 설치해 준다고 했는데 어떻게?
- k3s는 kubernetes에서 이것저것 설치해야 할 것들을 자동으로 설치해 준다고 했다. 이건 어떻게 하는것일까?
- 단순하다, k3s를 설치할때, 특정 디렉토리에 yaml 파일들을 두게 되어 있는데, 거기 있는것들이 자동으로 설치 되는 것이다.
- 실제로 해당 디렉토리를 확인해 보면 각종 파일들이 있다.
- 여기에 Traefik2.x 관련 yaml 파일들을 두면, k3s가 디렉토리를 감시하다가 알아서 Traefik 2.x 를 설치해 줄 것이다.
k3s에 traefik 2.x를 설치하자.
- 인터넷을 찾아보면 간단하게 Traefik 2.x를 설치 할 수 있는 정보를 찾을 수 있다.
- 관련 링크 : https://github.com/k3s-io/k3s/issues/1141#issuecomment-612823047
- 아래와 같은 내용으로 yaml 파일을 작성하면 된다. 주의 : 해당 내용을 작성하는 파일명이 traefik.yaml 이면 안된다.!!!
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: traefik
namespace: kube-system
spec:
chart: traefik
repo: https://containous.github.io/traefik-helm-chart
set:
image.tag: "2.2"
valuesContent: |-
additionalArguments:
- --providers.file.filename=/data/traefik-config.yaml
- ....어쩌고 저쩌고...
- ....이러쿵 저러쿵...
- 위에도 이야기 했지만, 해당 디렉토리에 파일을 만들때
traefik.yaml
이라는 이름으로 파일을 만드니깐, 파일이 계속 사라지면저 적용이되지 않는 문제가 있있다. - 아마도 k3s 를 설치할때 traefik 을 disable 시켰으니깐, 그런게 아닌가 싶긴 한데.. 정확한건 모르겠다. ㅎ.
- 암튼 나는
traefik2.yaml
파일로 위 내용을 적용해서 traefik 2.x 를 설치 했다.
반응형