文档参考:https://metallb.io/installation/

使用 Helm chart 仓库通过Helm安装 MetalLB:https://metallb.github.io/metallb

helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb

安装时可以指定一个 values 文件。建议使用此文件在 Helm values 中提供配置:

helm install metallb metallb/metallb -f values.yaml

配置好之后,需要配置IP资源池。

apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default-pool
  namespace: metallb
spec:
  addresses:
    - 192.168.11.200-192.168.11.220
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2
  namespace: metallb
spec:
  ipAddressPools:
    - default-pool

接着可以安装ingress-traefik

安装好之后会提示如下信息,告诉我们外部IP。

wanna@k8s-master:~$ kubectl get svc traefik -n traefik -o wide
NAME      TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE   SELECTOR
traefik   LoadBalancer   10.43.251.31   192.168.11.200   80:30913/TCP,443:30754/TCP   8h    app.kubernetes.io/instance=traefik-traefik,app.kubernetes.io/name=traefik

接着使用就可以给自己想要的服务Service去配置IngressRoute,注意这里的service的port需要填写的是Service的Port。

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: authentik-http
  namespace: authentik
spec:
  entryPoints:
  - web
  routes:
  - kind: Rule
    match: Host(`ak.xxx.com`)
    services:
    - name: authentik-server   # service名称
      port: 80                 # service的端口号, 注意不是targetPort