K8S рдХреЗ рд▓рд┐рдП рдПрдХ Ingress Controller рдХреЗ рд░реВрдк рдореЗрдВ Traefik

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ K8S рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдореБрджрд╛рдп рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реИрдВред рдЗрд╕рдореЗрдВ рдЖрдк рдХрдИ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреА рддрд░рд╣, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЯреНрд░рд┐рдЧрд┐рдХ рдХреЛ рдЗрдирдЧреНрд░реЗрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ ред


рдЫрд╡рд┐


Ingress рдХреНрдпрд╛ рд╣реИ?


рдЗрдирдЧреНрд░реЗрдб рдПрдХ рдПрдкреАрдЖрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдмрд╛рд╣рд░реА рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ HTTP / HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ingress рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Ingress рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдк рдЬреАрд╕реАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдЧреНрд░реЗрдб рдирд┐рдпрдВрддреНрд░рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреНрд▓рд╕реНрдЯрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП kops рд╕реЗ AWS рддрдХ, рддреЛ рдЖрдкрдХреЛ рдЦреБрдж рд╣реА Ingress рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдорд┐рдиреАрдмреНрдпреВрдм рдкрд░, рдпрд╣ рдЗрдирдЧреНрд░реЗрдб рдПрдб-рдЗрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЗрдирдЧреНрд░реЗрдЯрд░ рдХрдВрдЯреНрд░реЛрд▓рд░


рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрдбреЗрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░, рдХреЛрдВрдЧ, рдУрдХреНрдЯрд╛рд╡рд┐рдпрд╛ рдЗрдирд░реНрдЧреЗрдиреНрд╕ рдХрдВрдЯреНрд░реЛрд▓рд░ рдЗрддреНрдпрд╛рджрд┐ рджреНрд╡рд╛рд░рд╛ рдЗрдирдЧреНрд░реЗрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЯреНрд░реИрдлрд┐рдХ рдЬреИрд╕реЗ рдЯреВрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрдирдЧреНрд░реЗрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдХреНрдпреЛрдВ?


рдпрджрд┐ рдЖрдк NodePort рдпрд╛ LoadBalancer рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ Ingress рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░реЗрдВ? рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╕рднреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдмрд┐рдВрджреБ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрдирдЧреНрд░реЗрдб рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд▓реЛрдбрдмреЗрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЯреНрд░рд╛рдлрд┐рдХ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рдпрд╣ рдмрдВрдбрд▓ рд╕рднреА рдпрд╛рддрд╛рдпрд╛рдд рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред


рдЯреНрд░рд╛рдлрд┐рдХ рдШрдЯрдХ


рдЯреНрд░реИрдлрд┐рдХ рдиреЗ рд╕рдВрд╕реНрдХрд░рдг 1.4 рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдЯреНрд░рд╛рдлрд┐рдХ 1.7 рдореЗрдВ publishedService, рд╡рд┐рдХрд▓реНрдк рд╣реИ publishedService, рдЬреЛ рдЗрдирдЧреНрд░реЗрдб рдореЗрдВ status рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред


рдмрдирд╛рдПрдБ:


  • рдирд╛рдо рд╕реНрдерд╛рди
  • рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛
  • рдЯреАрдПрд▓рдПрд╕ рдЧреБрдкреНрдд
  • рдХреНрд▓рд╕реНрдЯрд░ рднреВрдорд┐рдХрд╛
  • рдХреНрд▓рд╕реНрдЯрд░ рд░реЛрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
  • configmap
  • рддреИрдирд╛рддреА
  • http рдФрд░ https рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛
  • рдЯреНрд░реИрдлрд┐рдХ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛
  • рдкреНрд░рд╡реЗрд╢

рдирд╛рдо рд╕реНрдерд╛рди


рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдмрдирд╛рдПрдБ:


 kubectl create namespace traefik 

рдЯреАрдПрд▓рдПрд╕ рд╕реАрдХреНрд░реЗрдЯ


(рд▓рдЧрднрдЧ рдкреНрд░рддрд┐ред - рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд▓реЗрдЦрдХ рдЙрд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ README рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреЗрдЦреЗрдВ)


рдкрд╣рд▓реЗ рдПрдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдмрдирд╛рдПрдБ:


 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./tls.key -out ./tls.crt -subj "/CN=*.example.com" 

рдПрдХ рдЯреАрдПрд▓рдПрд╕ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рдПрдВ:


 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./tls.key -out ./tls.crt -subj "/CN=*.example.com" 

рдЧреБрдкреНрдд рдмрдирд╛рдПрдБ:


 kubectl create secret tls traefik-ui-tls-cert --key ./tls.key --cert ./tls.crt 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрди рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ README рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ GitHub рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ред


ConfigMap


 --- apiVersion: v1 kind: ConfigMap metadata: name: traefik-configmap namespace: traefik data: traefik.toml: | defaultEntryPoints = ["http","https"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.https] address = ":443" [entryPoints.https.tls] [[entryPoints.https.tls.certificates]] CertFile = "/ssl/tls.crt" KeyFile = "/ssl/tls.key" [entryPoints.traefik] address = ":8080" [entryPoints.traefik.auth.basic] users = ["admin:$apr1$zjjGWKW4$W2JIcu4m26WzOzzESDF0W/"] [kubernetes] [kubernetes.ingressEndpoint] publishedService = "traefik/traefik" [ping] entryPoint = "http" [api] entryPoint = "traefik" 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯреНрд╕ рдкреЛрд░реНрдЯреНрд╕ 80 рдФрд░ 443 ред


рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ http рд╕реБрдирддрд╛ рд╣реИ :80 рдФрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИ


EntryPoint https рд╕реБрдирддрд╛ рд╣реИ :443 рдФрд░ TLS рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рд╣реИред


рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ traefik рд╕реБрдирддрд╛ рд╣реИ :8080 рдФрд░ рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо admin , рдкрд╛рд╕рд╡рд░реНрдб admin ред


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЗрдирдЧреНрд░реЗрдб рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдкрдмреНрд▓рд┐рд╢ рд╕рд░реНрд╡рд┐рд╕ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдХреА publishService рдФрд░ рдЗрд╕рдореЗрдВ publishService рдХреЗ рд▓рд┐рдП namespace рд╡реИрд▓реНрдпреВ рдФрд░ service рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ traefik / traefik ред


ping рдпрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдореЗрдВ рдПрдВрдЯреНрд░реЗрд╕ рдкреЙрдЗрдВрдЯ http рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


api рдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб / рдпреВрдЖрдИ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ traefik рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред


рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреЛрд░реНрдЯ рдбрд╛рдпрдиреЗрдорд┐рдХ рдкреЛрд░реНрдЯ рдФрд░ NodePort рдмрдЬрд╛рдп рдХрд┐рд╕реА рднреА рдкреЛрд░реНрдЯ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред


ClusterRole


рдЯреНрд░рд╛рдИрдлрд┐рдХ рдХреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдореЗрдВ рдЗрдирдЧреНрд░реЗрдб Ingress status рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреНрд░реИрдлрд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


 --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: traefik-ingress-controller rules: - apiGroups: - "" resources: - services - endpoints - secrets verbs: - get - list - watch - apiGroups: - extensions resources: - ingresses verbs: - get - list - watch - apiGroups: - extensions resources: - ingresses/status verbs: - update 

рд╕рд╣реА рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо 6 рд▓рд╛рдЗрдиреЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред


рддреИрдирд╛рддреА


рддреИрдирд╛рддреА рдмрд╣реБрдд рд╕реАрдзреА рд╣реИред рдЖрдЗрдП рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдореБрдЦреНрдп рдмреНрд▓реЙрдХреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ:


 volumes: - name: traefik-ui-tls-cert secret: secretName: traefik-ui-tls-cert - name: traefik-configmap configMap: name: traefik-configmap 

рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдФрд░ рд╕реАрдХреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП volumes рдХреЛ рдбрд┐рдлрд╛рдЗрди рдХрд░реЗрдВ, рдЬрд┐рд╕реЗ рдлрд┐рд░ volumeMounts рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


 volumeMounts: - mountPath: "/ssl" name: "traefik-ui-tls-cert" - mountPath: "/config" name: "traefik-configmap" 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди 80 рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдкреЛрд░реНрдЯ 80 рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рдкреЛрд░реНрдЯ:


 ports: - name: http containerPort: 80 - name: https containerPort: 443 - name: dashboard containerPort: 8080 

рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдкреБрд░рд╛рдиреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдлрд┐рдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЖрд░реНрдЧреНрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдпрд╛рдж рди рдХрд░реЗрдВ:


 args: - --logLevel=INFO - --configfile=/config/traefik.toml 

рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рди рдХрд░реЗрдВ, рдЬреИрд╕реЗ -рдкреАрдЖрдИ, -рдкрд┐рдВрдЧрд┐рдВрдЧ рдпрд╛ -рдХреБрдмрд░реНрдиреЗрдЯреЗрд╕, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛ред


рд╕реЗрд╡рд╛


рд╕рд░реНрд╡рдкреНрд░рдердо рд╕реЗрд╡рд╛рдУрдВ рдиреЗ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдкреЙрдЗрдВрдЯ http рдФрд░ https рд▓рд┐рдП рдПрдХ рд▓реЛрдбрдмрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк LoadBalancer рдХреЗ рд▓рд┐рдП Security Group (Ingress) рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣рд╛рдВ рдкреЛрд░реНрдЯ 80 рдФрд░ 443 рдЦреБрд▓реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред K8s рдПрдХ LoadBalancer рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдЙрди рдиреЛрдбреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЯреНрд░реИрдлрд┐рдХ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдореЗрд░реА рддрд░рд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдИрдПрд▓рдмреА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 --- kind: Service apiVersion: v1 metadata: name: traefik namespace: traefik annotations: {} # service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0 spec: selector: k8s-app: traefik-ingress ports: - protocol: TCP port: 80 name: http - protocol: TCP port: 443 name: https type: LoadBalancer 

рд╕реЗрд╡рд╛ (рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП)


рдЕрдм рдордЬрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛! рдЪреВрдВрдХрд┐ рдбреИрд╢рдмреЛрд░реНрдб рдореВрд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ https рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред SSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреЛрд░реНрдЯ :8080 рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдбреИрд╢рдмреЛрд░реНрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╕рднреА рдЬрд╛рджреВ рдЗрдиреНрдЧреНрд░реЗрд╕ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред


 --- kind: Service apiVersion: v1 metadata: name: traefik-dashboard namespace: traefik spec: selector: k8s-app: traefik-ingress ports: - port: 8080 name: dashboard 

рдЗрдирдЧреНрд░реЗрдб (рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП)


рдЬрд╛рджреВ рдпрд╣ рд╣реИ рдХрд┐ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реА рдХреА рдЬрд╛рддреА рд╣реИред рдЯреНрд░рд╛рдлрд┐рдХ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрдирдЧреНрд░реЗрдб рдореЗрдВ рдЯреНрд░реЗрдлрд┐рдХ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: traefik-dashboard-ingress namespace: traefik annotations: kubernetes.io/ingress.class: traefik traefik.ingress.kubernetes.io/frontend-entry-points: http,https traefik.ingress.kubernetes.io/redirect-entry-point: https traefik.ingress.kubernetes.io/redirect-permanent: "true" spec: rules: - host: traefik-ui.example.com http: paths: - path: / backend: serviceName: traefik-dashboard servicePort: 8080 

рдЗрд╕рдиреЗ рдХреЗрд╡рд▓ 4 рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рдПрдиреЛрдЯреЗрд╢рди рд▓рд┐рдПред


рдмреЗрд╢рдХ, рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ DNS рд░рд┐рдХреЙрд░реНрдб traefik-ui.example.com рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ ELB рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред


рдХреНрдпрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ DNS рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕реНрд╡рдд: рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред


рд╕рдВрджрд░реНрдн


рд╕рдорд╛рдкреНрдд рдкрд░рд┐рдирд┐рдпреЛрдЬрди .yaml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореЗрд░реЗ Github рднрдВрдбрд╛рд░ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЛ рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдХрдард┐рдирд╛рдИ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдкреВрдЫреЗрдВред


рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ рд╢рдмреНрдж рдЬреБрджрд╛ рдХрд░рдирд╛


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдЕрдиреНрдп рд▓реЗрдЦ рдкрдврд╝реЗрдВ:


рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реНрдЯреЗрдЯрдлрд╝реБрд▓ рдмреИрдХрдЕрдк


рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рд╖рдо рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛


рд░реЗрдбрдорд╛рдЗрди рдХреЗ рд▓рд┐рдП рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯред рдЕрдкрдиреЗ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

Source: https://habr.com/ru/post/hi427655/


All Articles