k8s #1
@@ -297,6 +297,128 @@ http://localhost:8081
|
||||
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
|
||||
```
|
||||
|
||||
## Кроссплатформенность
|
||||
|
||||
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
|
||||
|
||||
1. **Порты:** Port-forward создается автоматически при создании кластера - не нужно делать это вручную
|
||||
@@ -476,6 +631,7 @@ kind_clusters:
|
||||
6. **Удаление:** Используйте `make k8s destroy` - он автоматически очистит port-forward
|
||||
7. **Helm:** Используйте официальные Helm charts из проверенных репозиториев
|
||||
8. **Изоляция:** Каждый preset может иметь свой уникальный кластер с разными настройками
|
||||
9. **Ingress vs ClusterIP:** Используйте Ingress для доступа по доменным именам, ClusterIP + port-forward для прямого доступа к сервисам
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
|
||||
Reference in New Issue
Block a user