diff --git a/METALLIB.md b/METALLIB.md new file mode 100644 index 00000000..392d312f --- /dev/null +++ b/METALLIB.md @@ -0,0 +1,71 @@ +# Настройка MetalLB для K3s с одним внешним IP-адресом + +## Шаги по настройке + +1. **Проверьте статус Traefik и MetalLB:** + ```bash + kubectl get svc -n kube-system traefik + kubectl get pods -n metallb-system + ``` + +2. **Установка MetalLB (если не установлен):** + ```bash + kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/main/config/manifests/metallb-native.yaml + ``` + +3. **Создайте файл конфигурации `metallb-config.yaml` с указанием внешнего IP-адреса:** + ```yaml + apiVersion: metallb.io/v1beta1 + kind: IPAddressPool + metadata: + name: my-single-ip-pool + namespace: metallb-system + spec: + addresses: + - <ваш-внешний-IP-адрес> # Укажите здесь ваш внешний IP-адрес + --- + apiVersion: metallb.io/v1beta1 + kind: L2Advertisement + metadata: + name: my-l2-advertisement + namespace: metallb-system + spec: {} + ``` + + Примените конфигурацию: + ```bash + kubectl apply -f metallb-config.yaml + ``` + +4. **Создайте сервис типа LoadBalancer:** + Создайте файл `service.yaml` со следующим содержимым: + ```yaml + apiVersion: v1 + kind: Service + metadata: + name: external-service + spec: + selector: + app: my-app + ports: + - protocol: TCP + port: 80 + targetPort: 80 + type: LoadBalancer + ``` + + Примените манифест: + ```bash + kubectl apply -f service.yaml + ``` + +5. **Проверьте, что сервис получил внешний IP:** + ```bash + kubectl get svc external-service + ``` + +## Заметки +- Убедитесь, что ваш сервер позволяет доступ к указанному IP-адресу на соответствующих портах. +- IP-адрес должен быть статическим и доступным для использования. + +Следуя этим шагам, вы настроите MetalLB для работы с указанным внешним IP-адресом в кластере K3s.