homelab-k3s/HELP/Пример.MD
2024-11-02 01:42:32 +03:00

188 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инструкция по установке Planka в K3s с использованием Traefik и MetalLB
## 1. Установка MetalLB
```bash
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
```
## 2. Настройка пула IP-адресов для MetalLB
Создайте файл `metallb-config.yaml`:
```yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: planka-pool
namespace: metallb-system
spec:
addresses:
- 192.168.1.240-192.168.1.250
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: planka-advertisement
namespace: metallb-system
spec:
ipAddressPools:
- planka-pool
```
Примените конфигурацию:
```bash
kubectl apply -f metallb-config.yaml
```
## 3. Создание пространства имен
```bash
kubectl create namespace planka
```
## 4. Развертывание PostgreSQL
Создайте файл `postgres.yaml`:
```yaml
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: planka
spec:
ports:
- port: 5432
selector:
app: postgres
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: planka
spec:
containers:
- name: postgres
image: postgres:13
env:
- name: POSTGRES_DB
value: planka
- name: POSTGRES_USER
value: plankauser
- name: POSTGRES_PASSWORD
value: plankapassword
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: planka
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
```
Примените манифест:
```bash
kubectl apply -f postgres.yaml
```
## 5. Создание секрета с учетными данными администратора
Создайте файл `planka-admin-secret.yaml`:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: planka-admin-secret
namespace: planka
type: Opaque
data:
DEFAULT_ADMIN_EMAIL: YWRtaW5AZXhhbXBsZS5jb20=
DEFAULT_ADMIN_PASSWORD: WW91clNlY3VyZVBhc3N3b3Jk
DEFAULT_ADMIN_NAME: QWRtaW4=
DEFAULT_ADMIN_USERNAME: YWRtaW4=
```
Примените секрет:
```bash
kubectl apply -f planka-admin-secret.yaml
```
## 6. Развертывание Planka
Создайте файл `planka.yaml`:
```yaml
apiVersion: v1
kind: Service
metadata:
name: planka
namespace: planka
annotations:
metallb.universe.tf/address-pool: planka-pool
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 1337
selector:
app: planka
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: planka
namespace: planka
spec:
containers:
- name: planka
image: meltyshev/planka:latest
env:
- name: DATABASE_URL
value: postgres://plankauser:plankapassword@postgres.planka.svc.cluster.local:5432/planka
- name: SECRET_KEY
value: your-secret-key
envFrom:
- secretRef:
name: planka-admin-secret
ports:
- containerPort: 1337
```
Примените манифест:
```bash
kubectl apply -f planka.yaml
```
## 7. Настройка Ingress для доступа через Traefik
Создайте файл `ingress.yaml`:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: planka-ingress
namespace: planka
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
rules:
- host: planka.your-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: planka
port:
number: 80
```
Примените манифест:
```bash
kubectl apply -f ingress.yaml
```
## 8. Настройка DNS
Убедитесь, что ваш домен `planka.your-domain.com` указывает на IP-адрес, выделенный MetalLB.
**Готово!** Теперь Planka установлена и доступна через ваш домен в кластере K3s.