4.2 KiB
4.2 KiB
Инструкция по установке Planka в K3s с использованием Traefik и MetalLB
1. Установка MetalLB
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml
2. Настройка пула IP-адресов для MetalLB
Создайте файл metallb-config.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
Примените конфигурацию:
kubectl apply -f metallb-config.yaml
3. Создание пространства имен
kubectl create namespace planka
4. Развертывание PostgreSQL
Создайте файл postgres.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
Примените манифест:
kubectl apply -f postgres.yaml
5. Создание секрета с учетными данными администратора
Создайте файл planka-admin-secret.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=
Примените секрет:
kubectl apply -f planka-admin-secret.yaml
6. Развертывание Planka
Создайте файл planka.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
Примените манифест:
kubectl apply -f planka.yaml
7. Настройка Ingress для доступа через Traefik
Создайте файл ingress.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
Примените манифест:
kubectl apply -f ingress.yaml
8. Настройка DNS
Убедитесь, что ваш домен planka.your-domain.com указывает на IP-адрес, выделенный MetalLB.
Готово! Теперь Planka установлена и доступна через ваш домен в кластере K3s.