k8s #1
@@ -297,6 +297,128 @@ http://localhost:8081
|
|||||||
https://localhost:8443
|
https://localhost:8443
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Доступ к приложениям
|
||||||
|
|
||||||
|
### Доступ через Ingress
|
||||||
|
|
||||||
|
Если ваше приложение использует Ingress с доменным именем:
|
||||||
|
|
||||||
|
1. **Создайте манифест с Ingress:**
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# my-app-ingress.yaml
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: my-app-ingress
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: my-app.local
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: my-app-service
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Примените манифест:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make k8s manifest apply kubernetes my-app-ingress.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Добавьте домен в hosts файл:**
|
||||||
|
|
||||||
|
**macOS/Linux:**
|
||||||
|
```bash
|
||||||
|
echo "127.0.0.1 my-app.local" | sudo tee -a /etc/hosts
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Откройте приложение через Ingress порт:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# HTTP через Ingress
|
||||||
|
curl http://my-app.local:8081
|
||||||
|
# или в браузере
|
||||||
|
open http://my-app.local:8081
|
||||||
|
|
||||||
|
# HTTPS через Ingress
|
||||||
|
curl -k https://my-app.local:8443
|
||||||
|
```
|
||||||
|
|
||||||
|
**Важно:** Используйте порт Ingress (8081 для HTTP, 8443 для HTTPS) вместе с доменным именем!
|
||||||
|
|
||||||
|
### Доступ через ClusterIP (port-forward)
|
||||||
|
|
||||||
|
Если ваше приложение имеет сервис с типом ClusterIP:
|
||||||
|
|
||||||
|
1. **Установите приложение (например, через Helm):**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make k8s helm apply kubernetes my-app bitnami/nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Узнайте имя сервиса:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Откройте shell в контейнере
|
||||||
|
make k8s shell kubernetes
|
||||||
|
|
||||||
|
# Посмотрите сервисы
|
||||||
|
kubectl get svc -A
|
||||||
|
|
||||||
|
# Выход из контейнера
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Создайте port-forward вручную:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Экспортируйте kubeconfig
|
||||||
|
export KUBECONFIG=$(pwd)/kubeconfig
|
||||||
|
|
||||||
|
# Создайте port-forward
|
||||||
|
# Синтаксис: kubectl port-forward -n <namespace> svc/<service-name> <local-port>:<service-port>
|
||||||
|
kubectl port-forward -n default svc/my-app-service 8080:80
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Откройте приложение:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Доступно на localhost:8080
|
||||||
|
curl http://localhost:8080
|
||||||
|
open http://localhost:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
**Примечание:** Port-forward запустится в фоне. Для остановки нажмите `Ctrl+C` или найдите процесс и завершите его:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Найти процесс port-forward
|
||||||
|
ps aux | grep "kubectl port-forward"
|
||||||
|
|
||||||
|
# Завершить процесс (замените PID)
|
||||||
|
kill <PID>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Автоматический port-forward для пользовательских приложений
|
||||||
|
|
||||||
|
Если вы хотите, чтобы port-forward создавался автоматически, добавьте порт в пресет:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# molecule/presets/k8s/kubernetes.yml
|
||||||
|
addon_ports:
|
||||||
|
# ... существующие порты аддонов
|
||||||
|
my_app: 8080 # Ваш порт
|
||||||
|
```
|
||||||
|
|
||||||
|
Затем в коде `scripts/portforward.py` добавьте логику для этих портов. Однако, это требует знания имени сервиса и namespace заранее.
|
||||||
|
|
||||||
|
**Рекомендация:** Для пользовательских приложений используйте ручной port-forward или Ingress.
|
||||||
|
|
||||||
## Примеры использования
|
## Примеры использования
|
||||||
|
|
||||||
### Создание и настройка кластера
|
### Создание и настройка кластера
|
||||||
@@ -466,6 +588,39 @@ kind_clusters:
|
|||||||
metrics_server: 4443 # Port-forward для Metrics Server
|
metrics_server: 4443 # Port-forward для Metrics Server
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Кроссплатформенность
|
||||||
|
|
||||||
|
Port-forward работает одинаково на **macOS** и **Linux**:
|
||||||
|
|
||||||
|
### macOS
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка установки
|
||||||
|
python3 --version
|
||||||
|
kubectl version --client
|
||||||
|
|
||||||
|
# Работа с port-forward
|
||||||
|
make k8s portforward create
|
||||||
|
make k8s portforward list
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка установки
|
||||||
|
python3 --version
|
||||||
|
kubectl version --client
|
||||||
|
|
||||||
|
# Работа с port-forward (то же самое!)
|
||||||
|
make k8s portforward create
|
||||||
|
make k8s portforward list
|
||||||
|
```
|
||||||
|
|
||||||
|
**Важно:** Port-forward работает идентично на обеих платформах, так как использует стандартные утилиты:
|
||||||
|
- `kubectl` (кроссплатформенный)
|
||||||
|
- Python 3 (кроссплатформенный)
|
||||||
|
- `kubectl port-forward` команда (кроссплатформенная)
|
||||||
|
|
||||||
## Best Practices
|
## Best Practices
|
||||||
|
|
||||||
1. **Порты:** Port-forward создается автоматически при создании кластера - не нужно делать это вручную
|
1. **Порты:** Port-forward создается автоматически при создании кластера - не нужно делать это вручную
|
||||||
@@ -476,6 +631,7 @@ kind_clusters:
|
|||||||
6. **Удаление:** Используйте `make k8s destroy` - он автоматически очистит port-forward
|
6. **Удаление:** Используйте `make k8s destroy` - он автоматически очистит port-forward
|
||||||
7. **Helm:** Используйте официальные Helm charts из проверенных репозиториев
|
7. **Helm:** Используйте официальные Helm charts из проверенных репозиториев
|
||||||
8. **Изоляция:** Каждый preset может иметь свой уникальный кластер с разными настройками
|
8. **Изоляция:** Каждый preset может иметь свой уникальный кластер с разными настройками
|
||||||
|
9. **Ingress vs ClusterIP:** Используйте Ingress для доступа по доменным именам, ClusterIP + port-forward для прямого доступа к сервисам
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user