Настройка внешнего доступа к поду в кластере
Stackland позволяет пользователям запускать собственные приложения в кластере и создавать внешний доступ к ним. В этом руководстве мы разберем пример создания внешнего доступа к HTML-странице в кластере.
Перед началом работы
-
Если проект еще не создан, создайте его:
kubectl create namespace <название проекта>. -
Выберите ссылку для внешнего доступа. Например,
test.<домен кластера>.При необходимости получить домен кластера можно с помощью команды
kubectl get platformenvironments main -o jsonpath='{.status.clusterDomain}'.
Как создать внешний доступ
Шаг 1. Создайте Ingress
-
Создайте файл ресурса
Ingress. Например, с помощью командыtouch ingress.yaml. -
Откройте файл и вставьте конфигурацию ниже:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: cert-manager.io/cluster-issuer: stackland-default name: test-stackland-ingress namespace: <название проекта> spec: ingressClassName: stackland-default rules: - host: <внешняя ссылка> http: paths: - backend: service: name: test-stackland-service port: number: 5556 path: / pathType: Prefix tls: - hosts: - <внешняя ссылка> secretName: test-stackland-tls -
Подставьте в параметр:
metadata.namespace— название проекта.spec.rules[0].host— ссылку для внешнего доступа.spec.tls[0].hosts[0]— ссылку для внешнего доступа.
-
Примените манифест:
kubectl apply -f ingress.yaml.
Шаг 2. Создайте HTML-страницу
-
Создайте файл ресурса
ConfigMap. Например, с помощью командыtouch configmap.yaml. -
Откройте файл и вставьте конфигурацию ниже:
apiVersion: v1 data: index.html: "<!DOCTYPE html>\n<html>\n<head>\n <title>Тест Stackland</title>\n <meta charSet=\"UTF-8\"/>\n</head>\n<body>\n <h1>Тест внешнего доступа к Stackland</h1>\n <p>Эта страница используется для тестирования внешнего доступа к сервису Stackland</p>\n</body>\n</html>\n" kind: ConfigMap metadata: name: test-stackland-html namespace: <название проекта> -
Подставьте в параметр
metadata.namespaceназвание проекта. -
Примените манифест:
kubectl apply -f configmap.yaml.
Шаг 3. Создайте Deployment для HTML-страницы
-
Создайте файл ресурса
Deployment. Например, с помощью командыtouch deployment.yaml. -
Откройте файл и вставьте конфигурацию ниже:
apiVersion: apps/v1 kind: Deployment metadata: name: test-stackland namespace: <название проекта> spec: replicas: 1 selector: matchLabels: app: test-stackland-service template: metadata: labels: app: test-stackland-service spec: containers: - image: nginx:alpine name: nginx ports: - containerPort: 80 volumeMounts: - mountPath: /usr/share/nginx/html name: html volumes: - configMap: name: test-stackland-html name: html -
Подставьте в параметр
metadata.namespaceназвание проекта. -
Примените манифест:
kubectl apply -f deployment.yaml.
Шаг 4. Создайте Service для HTML-страницы
-
Создайте файл ресурса
Service. Например, с помощью командыtouch service.yaml. -
Откройте файл и вставьте конфигурацию ниже:
apiVersion: v1 kind: Service metadata: name: test-stackland-service namespace: <название проекта> spec: ports: - port: 5556 targetPort: 80 selector: app: test-stackland-service -
Подставьте в параметр
metadata.namespaceназвание проекта. -
Примените манифест:
kubectl apply -f service.yaml.
Шаг 5. Проверьте работу доступа
Откройте в браузере выбранную ссылку для внешнего доступа. Вы должны увидеть тестовую HTML-страницу.