В Kubernetes ресурс Ingress используется для управления внешним доступом к службам внутри кластера. Он действует как мощный шлюз API, обеспечивая балансировку нагрузки, завершение SSL и возможности маршрутизации. В этой статье блога мы рассмотрим различные методы создания ресурса Ingress, а также приведем примеры кода.
Метод 1: использование манифеста YAML
Наиболее распространенный подход к созданию ресурса Ingress – его определение в файле манифеста YAML. Вот пример:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: app1-service
port:
number: 8080
Метод 2. Использование Kubernetes API
Вы также можете создать ресурс Ingress программным путем с помощью Kubernetes API. Вот пример использования Python и библиотеки kubernetes:
from kubernetes import client, config
config.load_kube_config()
v1 = client.NetworkingV1Api()
ingress = client.V1Ingress(
api_version="networking.k8s.io/v1",
kind="Ingress",
metadata=client.V1ObjectMeta(name="my-ingress"),
spec=client.V1IngressSpec(
rules=[
client.V1IngressRule(
host="example.com",
http=client.V1HTTPIngressRuleValue(
paths=[
client.V1HTTPIngressPath(
path="/app1",
path_type="Prefix",
backend=client.V1IngressBackend(
service=client.V1IngressServiceBackend(
name="app1-service",
port=client.V1ServiceBackendPort(number=8080)
)
)
)
]
)
)
]
)
)
response = v1.create_namespaced_ingress(namespace="default", body=ingress)
print("Ingress created. Status: %s" % response.status)
Метод 3: использование диаграмм Helm
Если вы предпочитаете шаблонный подход, вы можете использовать диаграммы Helm для создания ресурсов Ingress. Helm позволяет определять повторно используемые шаблоны и значения. Вот пример:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /{{ .Values.ingress.path }}
pathType: Prefix
backend:
service:
name: {{ .Values.ingress.serviceName }}
port:
number: {{ .Values.ingress.servicePort }}
Метод 4. Использование сторонних контроллеров Ingress
Kubernetes предлагает различные сторонние контроллеры Ingress, такие как Nginx Ingress Controller или Traefik, которые предоставляют дополнительные функции и гибкость. Процесс создания Ingress-ресурсов может различаться в зависимости от выбранного контроллера. Подробные инструкции см. в их документации.
В этой статье мы рассмотрели несколько методов создания ресурсов Ingress в Kubernetes. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям, будь то использование манифестов YAML, Kubernetes API, диаграмм Helm или сторонних контроллеров Ingress. Используя эти методы, вы можете эффективно управлять внешним доступом к вашим сервисам в кластере Kubernetes.