Чтобы развернуть два отдельных контроллера входа в трафик, для обслуживания private и publi c traffi c по отдельности, я использовал kubernetes.ingressclass=traefik
args.
Это то, что документация должна сказать для kubernetes.ingressclass
:
--kubernetes.ingressclass Value of kubernetes.io/ingress.class annotation to watch for
Я создал два развертывания с отдельным значением для kubernetes.ingressclass
.
Одно с kubernetes.ingressclass=traefik
, которое находилось за публикацией c ALB и kubernetes.ingressclass=traefik-internal
, что находился за частным / внутренним ALB
Для служб, которые я хочу обслуживать в частном порядке, я использую следующие аннотации во входных объектах:
annotations:
kubernetes.io/ingress.class: traefik-internal
и для публикации c
annotations:
kubernetes.io/ingress.class: traefik
Мой deploy.yaml
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: traefik-internal-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-internal-ingress-lb
spec:
replicas: 1
selector:
matchLabels:
k8s-app: traefik-internal-ingress-lb
template:
metadata:
labels:
k8s-app: traefik-internal-ingress-lb
spec:
serviceAccountName: traefik-internal-ingress-controller
terminationGracePeriodSeconds: 60
containers:
- image: traefik:v1.7
name: traefik-internal-ingress-lb
ports:
- name: http
containerPort: 80
- name: admin
containerPort: 8080
args:
- --api
- --kubernetes
- --logLevel=INFO
- --accesslog=true
- --kubernetes.ingressclass=traefik-internal ##this makes it to watch only for ingress objects with annotaion "kubernetes.io/ingress.class: traefik-internal"
Надеюсь, это кому-нибудь поможет.