Flux를 사용하여 Kubernetes에 Traefik Ingress를 배포합니다.
Helm 차트를 배포하기 위해 Helm Cli를 사용하여 수동 배포를 설명하는 또 다른 게시물을 게시했음을 언급하고 싶습니다.
다이빙하자...
플럭스란 무엇입니까?
Flux는 Kubernetes 클러스터를 구성 소스(예: Git 리포지토리)와 동기화하고 배포할 새 코드가 있을 때 구성 업데이트를 자동화하기 위한 도구 모음입니다.
Flux 핵심 개념
here에서 필요한 정보를 찾을 수 있습니다.
플럭스를 어떻게 설치하나요?
두 부분을 설치해야 합니다. 첫 번째 부분은 Kubernetes 클러스터에 플럭스를 설치하는 데 필요한 Flux CLI입니다.
here에서 필요한 정보를 찾을 수 있습니다.
리포지토리를 어떻게 구성할 수 있습니까?
here에서 필요한 정보를 찾을 수 있습니다.
데모 리포지토리를 Bootstap으로 만들 수 있습니다.
flux bootstrap github \
--owner=<github-user> \
--repository=test-app-deployment \
--team=Developers \
--path=clusters/test-cluster \
--components-extra=image-reflector-controller,image-automation-controller \
--token-auth
이는 소스(Source of Truth)로 사용되는 Flux git 저장소를 구조화하는 매우 간단한 방법입니다(항상 플럭스에 의해 모니터링됨).
cluster/test-cluster 내에서 Kubernetes 클러스터에 배포하려는 애플리케이션을 추가할 것입니다.
Flux가 Helm Controller와 함께 Traefik Helm Chart를 배포할 수 있도록 하기 위해 커밋해야 하는 매니페스트를 다음과 같이 찾을 수 있습니다.
---
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
name: traefik
namespace: flux-system
spec:
interval: 1m0s
url: https://helm.traefik.io/traefik
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: traefik
namespace: flux-system
spec:
chart:
spec:
chart: traefik
sourceRef:
kind: HelmRepository
name: traefik
version: 10.24.3
interval: 1m0s
releaseName: traefik
targetNamespace: default
valuesFrom:
- kind: Secret
name: traefik-secret
---
apiVersion: v1
kind: Secret
metadata:
creationTimestamp: null
name: traefik-secret
namespace: flux-system
stringData:
values.yaml: |
additionalArguments:
- "--providers.kubernetescrd.allowCrossNamespace=true"
- "--certificatesresolvers.<le-name>.acme.tlschallenge"
- "--certificatesresolvers.<le-name>.acme.email=<[email protected]>"
- "--certificatesresolvers.<le-name>.acme.storage=/data/acme.json"
# Logging
- --log.level=info
- --log.format=json
service:
enabled: true
type: LoadBalancer
annotations:
helm.sh/resource-policy: keep
meta.helm.sh/release-name: traefik
meta.helm.sh/release-namespace: default
ports:
vault:
port: 8200
expose: true
exposedPort: 8200
protocol: TCP
persistence:
enabled: enable
name: data
accessMode: ReadWriteOnce
size: 1024Mi
path: /data
podSecurityContext:
fsGroup: null
deployment:
initContainers:
- name: fix-data-dir-permissions
image: alpine:3.16.2
command:
- chown
- -R
- 65532:65532
- /data
volumeMounts:
- name: data
mountPath: /data
다음 명령을 실행하여 플럭스가 조정 프로세스를 완료했는지 확인하십시오.
Also you can execute to retrieve all the resources managed by Flux
flux get all -A
If you want to force flux to reconcile faster a helm relase deployment you can execute the following commands
flux reconcile source git flux-system
flux get hr traefik
조정 프로세스가 완료되면 Traefik CRD의 배포인 배포의 다음 단계와 사용자 정의 미들웨어 및 Ingressroutes(실제로 사용자 정의 리소스임)와 같은 기타 필요한 정의를 진행할 수 있습니다.
---
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
name: traefik-crds
namespace: flux-system
spec:
interval: 30m
url: https://github.com/traefik/traefik-helm-chart.git
ref:
tag: v10.3.0
ignore: |
# exclude all
/*
# path to crds
!/traefik/crds/
---
apiVersion: kustomize.toolkit.fluxcd.io/v1beta1
kind: Kustomization
metadata:
name: traefik-api-crds
namespace: flux-system
spec:
interval: 15m
prune: false
sourceRef:
kind: GitRepository
name: traefik-crds
namespace: flux-system
healthChecks:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: ingressroutes.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: ingressroutetcps.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: ingressrouteudps.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: middlewares.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: middlewaretcps.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: serverstransports.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: tlsoptions.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: tlsstores.traefik.containo.us
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
name: traefikservices.traefik.containo.us
---
# Redirect to https
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: redirectscheme
spec:
redirectScheme:
scheme: https
permanent: true
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: frontend-ingress-route-redirect
namespace: default
spec:
entryPoints:
- web
routes:
- match: Host(`some-domain`)
kind: Rule
services:
- name: frontend
port: <ports>
middlewares:
- name: redirectscheme #enable redirect to https
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: frontend-ingress-route-secure
namespace: default
spec:
entryPoints:
- vault
routes:
- match: Host(``)
kind: Rule
services:
- name: frontend
port: <port>
tls:
certResolver: <le-name> # can be random name
엄지 척을 포기한다면 튜토리얼이 마음에 드시기 바랍니다! 에서 나를 팔로우하고 내Newletter 를 구독하여 다가오는 자습서를 놓치지 않도록 할 수도 있습니다.
미디어 속성
내 게시물에서 사용하고 있는 멋진Clark Tibbs을 디자인해 준 것에 대해photo 감사합니다.
감사합니다, 건배!!!
Reference
이 문제에 관하여(Flux를 사용하여 Kubernetes에 Traefik Ingress를 배포합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tvelmachos/deploy-traefik-ingress-to-kubernetes-with-flux-f2g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)