Як використовувати тип сервісу Kubernetes ExternalName

Kubernetes ExternalName типи сервісів допомагають нам створювати сервіс у Kubernetes, що відображає зовнішній хостнейм URL. У цьому документі я спробую представити сценарій для цього випадку.

Сценарій:

Зазвичай це стосується статичних файлів, створених системами CMS/Backend, які потрібно розмістити для вашого додатку. Ідеальним рішенням було б використати логіку фронтенду для обробки цих файлів. Але ми будемо використовувати сервіс Kubernetes ExternalName (як вказано в заголовку).

Схема дизайну рішення:

Зображення нижче показує підхід до реалізації цього рішення.

pic

У цій схемі налаштовано контролер Ingress (nginx-ingress), який маршрутизує трафік на основі шляху URL. За замовчуванням маршрут завжди відправляє трафік до додатку, а лише специфічні файли отримуються зі сховища через сервіс ExternalName.

Кроки реалізації

Наступні кроки можна виконати для досягнення цього:

  1. Створіть 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 # замініть на фактичне ім'я сховища
  1. Створіть 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
  1. Виконайте 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

Leave a Reply

Your email address will not be published. Required fields are marked *