Metallb#
Metallb - контроллер балансировки нагрузки, который используется в DropApp для предоставления статических IP-адресов для сервисов DropApp. Metallb может заменить выделение IP-адресов из общего списка адресов, позволяя конечным пользователям использовать статические IP-адреса для своих сервисов.
Предварительные условия#
Предварительные условия использования:
Отредактируйте конфигурацию kube-proxy в текущем кластере:
kubectl edit configmap -n kube-system kube-proxyВнесите конфигурацию:
apiVersion: kubeproxy.config.k8s.io/v1alpha1 kind: KubeProxyConfiguration mode: "ipvs" ipvs: strictARP: true
Сценарий использования#
Сценарий использования metallb:
Примените манифест:
kubectl apply -f https://example.com/metallb/metallb/v0.13.10/config/manifests/metallb-native.yamlОпределите список адресов для предоставления услуг:
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: production namespace: metallb-system spec: # Укажите адрес для предоставления услуг. addresses: - <IP-address>/30Определите список адресов для среды разработки:
apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: sandbox namespace: metallb-system spec: addresses: # Среда разработки использует частное IP-пространство, этому списку адресов выделяется масса IP-адресов для удобства разработки. - <IP-address>/20Установите атрибуты BGP для управления видимостью каждого набора адресов:
apiVersion: metallb.io/v1beta1 kind: BGPAdvertisement metadata: name: external namespace: metallb-system spec: ipAddressPools: - production
Ниже представлено определение объекта BGP Advertisement в DropApp, которое используется для управления конфигурациями BGP в DropApp-среде.
apiVersionопределяет версию API, которая используется для описания объекта. В данном случае этоmetallb/v1beta1.kindопределяет тип объекта. В данном случае это BGPAdvertisement.metadataсодержит информацию об объекте, такую как имя (name), метку (labels) и пространство имен (namespace).specопределяет конфигурацию объекта, такую как IP-адрес pool (ipAddressPools) и сообщества (communities).
В данном случае, объект описывает конфигурацию BGP, которая будет использоваться для управления IP-адресами в sandbox в namespace metallb-system. Сообщество vpn-only указывает, что эта конфигурация должна использоваться только для VPN-сетей.
apiVersion: metallb.io/v1beta1
kind: BGPAdvertisement
metadata:
name: local
namespace: metallb-system
spec:
ipAddressPools:
- sandbox
communities:
- vpn-only