This commit is contained in:
GBA404 2024-11-02 01:42:32 +03:00
parent 7f766758c9
commit a5a7ecac60
5 changed files with 204 additions and 1 deletions

View File

@ -1,2 +1,2 @@
Редактирование конфиго (порты и тд)
kubectl edit svc traefik -n kube-system
kubectl edit svc PODNAME -n NAMESPACE

15
HELP/play.md Normal file
View File

@ -0,0 +1,15 @@
# homelab-k3s
cd /homelab_k3s/Terraform/
terraform apply --var-file=variables.tfvars --parallelism=1
cd ..
python3.12 -m venv ansible_env
source ansible_env/bin/activate
ansible-playbook -i inventory/my-cluster/hosts.ini site.yml -u root --private-key=/root/homelab-k3s/Terraform/key/id_rsa
scp root@192.168.0.109:/etc/rancher/k3s/k3s.yaml ~/.kube/config

188
HELP/Пример.MD Normal file
View File

@ -0,0 +1,188 @@
# Инструкция по установке 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.