Kubernetes ExternalName типи сервісів допомагають нам створювати сервіс у Kubernetes, що відображає зовнішній хостнейм URL. У цьому документі я спробую представити сценарій для цього випадку.
Сценарій:
Зазвичай це стосується статичних файлів, створених системами CMS/Backend, які потрібно розмістити для вашого додатку. Ідеальним рішенням було б використати логіку фронтенду для обробки цих файлів. Але ми будемо використовувати сервіс Kubernetes ExternalName (як вказано в заголовку).
Схема дизайну рішення:
Зображення нижче показує підхід до реалізації цього рішення.
У цій схемі налаштовано контролер Ingress (nginx-ingress), який маршрутизує трафік на основі шляху URL. За замовчуванням маршрут завжди відправляє трафік до додатку, а лише специфічні файли отримуються зі сховища через сервіс ExternalName.
Кроки реалізації
Наступні кроки можна виконати для досягнення цього:
- Створіть externalname-service.yaml для нашого ExternalName сервісу, який буде вказувати на Azure Storage Account blob storage.
# Це створить ExternalName сервіс
apiVersion: v1
kind: Service
metadata:
name: storage-service
namespace: prod
spec:
type: ExternalName # Тип сервісу ExternalName
externalName: demostorage.blob.core.windows.net # замініть на фактичне ім'я сховища
- Створіть robots-ingress.yaml, щоб створити об'єкт ingress Kubernetes, який буде перенаправляти трафік до цього сервісу на основі URL файлу.
# Це створить об'єкт ingress з правилами
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: robots-ingress
annotations:
kubernetes.io/ingress.class: nginx # клас ingress
nginx.ingress.kubernetes.io/backend-protocol: https # Протокол бекенду
nginx.ingress.kubernetes.io/rewrite-target: /storage-container/robots.txt # ім'я контейнера в обліковому записі сховища
spec:
rules:
- host: demohost.com.au # замініть на фактичне ім'я хосту
http:
paths:
- path: /robots.txt
pathType: Prefix
backend:
service:
name: storage-service
port:
number: 443
- Виконайте kubectl apply для створення ресурсів.
kubectl apply -f externalname-service.yaml
kubectl apply -f robots-ingress.yaml
Тепер, якщо ми відвідаємо наступний URL: demohost.com.au/robots.txt, буде відображено вміст файлу robots.txt з контейнера Azure Storage у контейнері /storage-container/ в обліковому записі сховища demostorage.blob.core.windows.net.
Посилання:
[
Сервіси
Використовуйте додаток, що працює у вашому кластері, за єдиною вихідною точкою, навіть коли навантаження розділене...
kubernetes.io
](https://kubernetes.io/docs/concepts/services-networking/service/?source=post_page-----b1aeb51dc052--------------------------------#externalname)
[
Користувацькі анотації
Ця тема пояснює, як ви можете використовувати користувацькі анотації з F5 NGINX Ingress Controller. Користувацькі анотації дозволяють вам...
docs.nginx.com
](https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/custom-annotations/?source=post_page-----b1aeb51dc052--------------------------------)
Перекладено з: How to use Kubernetes ExternalName Service type