cat > setup.sh <<'EOF' #!/bin/bash set -e cat > db-secret.yaml <<'E1' apiVersion: v1 kind: Secret metadata: name: mysql-secret type: Opaque stringData: MYSQL_DATABASE: wordpress MYSQL_USER: wpuser MYSQL_PASSWORD: wppass MYSQL_ROOT_PASSWORD: rootpass E1 cat > app-config.yaml <<'E2' apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_PORT: "30080" E2 cat > mysql-pv.yaml <<'E3' apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv spec: capacity: storage: 2Gi accessModes: - ReadWriteOnce hostPath: path: /data/mysql E3 cat > mysql-pvc.yaml <<'E4' apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi E4 cat > mysql.yaml <<'E5' apiVersion: v1 kind: Service metadata: name: mysql spec: clusterIP: None selector: app: mysql ports: - port: 3306 --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: serviceName: mysql replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 envFrom: - secretRef: name: mysql-secret ports: - containerPort: 3306 volumeMounts: - name: mysql-storage mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-storage spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 2Gi E5 cat > wordpress.yaml <<'E6' apiVersion: apps/v1 kind: Deployment metadata: name: wordpress spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - name: wordpress image: wordpress:php8.2-apache env: - name: WORDPRESS_DB_HOST value: mysql:3306 - name: WORDPRESS_DB_NAME valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_DATABASE - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_USER - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: MYSQL_PASSWORD ports: - containerPort: 80 E6 cat > wordpress-service.yaml <<'E7' apiVersion: v1 kind: Service metadata: name: wordpress spec: type: NodePort selector: app: wordpress ports: - port: 80 targetPort: 80 nodePort: 30080 E7 cat > run.sh <<'E8' #!/bin/bash set -e kubectl apply -f db-secret.yaml kubectl apply -f app-config.yaml minikube ssh -- "sudo mkdir -p /data/mysql && sudo chmod 777 /data/mysql" kubectl apply -f mysql-pv.yaml kubectl apply -f mysql-pvc.yaml kubectl apply -f mysql.yaml kubectl rollout status statefulset/mysql --timeout=180s kubectl apply -f wordpress.yaml kubectl apply -f wordpress-service.yaml echo echo "Приложение доступно по адресу:" minikube service wordpress --url E8 chmod +x run.sh echo "Файлы созданы" EOF