본문 바로가기

공부/컴퓨터

[Kubernetes] k3s 1.20이하에서 Traefik 1.81 제거하고 Traefik 2.x 설치하기

2021년 5월 업데이트...

  • k3s가 1.21부터는 Traefik v1이 설치되어 있지 않다면, Traefik v2를 기본으로 설치 한다고 합니다. 그러니 최신 버젼을 사용하는 사람은 아래 내용은 그냥 참고삼아 읽으시면 됩니다. 

k3s가 좋긴한데... Traefik 이 문제라...

  • k3s를 이용하면 단한줄의 명령어만으로 single node kubernetes를 구성할 수 있다.

k3s 설치되는 IngressController

  • k3s는 별 설정 없어도 Kubernetes 에 필요한 이것저것을 자동으로 설치해 쉽게 환경을 만들어 준다고 이야기 했다.
  • 그 중에서 IngressController 기능을 할 것으로 Traefik 을 자동으로 설치해 사용하도록 되어 있다.

  • 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 를 설치 했다.