diff --git a/METALLIB.md b/HELP/METALLIB.md similarity index 100% rename from METALLIB.md rename to HELP/METALLIB.md diff --git a/Traefik.MD b/HELP/Traefik.md similarity index 61% rename from Traefik.MD rename to HELP/Traefik.md index f6f2fd7f..452b2dcf 100644 --- a/Traefik.MD +++ b/HELP/Traefik.md @@ -1,2 +1,2 @@ Редактирование конфиго (порты и тд) -kubectl edit svc traefik -n kube-system +kubectl edit svc PODNAME -n NAMESPACE diff --git a/HELP/play.md b/HELP/play.md new file mode 100644 index 00000000..b52c5033 --- /dev/null +++ b/HELP/play.md @@ -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 diff --git a/Полезное.MD b/HELP/Полезное.md similarity index 100% rename from Полезное.MD rename to HELP/Полезное.md diff --git a/HELP/Пример.MD b/HELP/Пример.MD new file mode 100644 index 00000000..314ffb43 --- /dev/null +++ b/HELP/Пример.MD @@ -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. \ No newline at end of file