Невозможно заменить pod на php в телеприсутствии [закрыто]
Суть в том, что мне нужно заменить pod на php-код в кластере kubernetes на docker-контейнер с использованием телеприсутствия, этот pod содержит 2 контейнера: php и nginx. Я все делаю по инструкции ( https://www.telepresence.io/tutorials/php), но кажется, что кубернетес не видит мой контейнер.
Я запускаю кластер локально на minikube версии 1.16.0, kubernetes версии 1.20.0. Я использую службу NodePort для доступа к приложению. После замены модуля я получаю ошибку 404.
Вот как я нахожу внешний адрес: addr = kubectl get nodes -o jsonpath = '{$ .items [*]. Status.addresses [?(@. Type == "InternalIP")]. Address}'
Целевой адрес браузера: addr +:30000
Команда Spoof: Telepresence --swap-deployment telepresence-php --docker-run --rm -v$(pwd) / web: / var / www / html telepresence-dev
Настройки модуля Kubernetes php + nginx:
apiVersion: apps/v1
kind: Deployment
metadata:
name: telepresence-php
spec:
replicas: 1
selector:
matchLabels:
svc: telepresence-php
template:
metadata:
labels:
svc: telepresence-php
spec:
containers:
- name: telepresence-php
image: mavellol/telepresence-php
ports:
- containerPort: 9000
volumeMounts:
- name: shared-files
mountPath: /var/www/html
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "cp -r /app/. /var/www/html"]
- name: telepresence-nginx
image: mavellol/telepresence-nginx
ports:
- containerPort: 80
volumeMounts:
- name: shared-files
mountPath: /var/www/html
volumes:
- name: shared-files
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: telepresence-np
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30000
selector:
svc: telepresence-php
Настройки Kubernetes mysql pod
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: telepresence-db
spec:
replicas: 1
selector:
matchLabels:
svc: telepresence-db
template:
metadata:
labels:
svc: telepresence-db
spec:
containers:
- name: telepresence-db
image: mavellol/telepresence-db
ports:
- name: db-port
containerPort: 3306
volumes:
- name: telepresence-mysql-data
persistentVolumeClaim:
claimName: telepresence-mysql-pvc
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: telepresence-mysql
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /tmp/telepresence-mysql
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: telepresence-mysql-pvc
spec:
resources:
requests:
storage: 1Gi
accessModes:
- ReadWriteOnce
storageClassName: ""
---
apiVersion: v1
kind: Service
metadata:
name: telepresence-db
spec:
ports:
- name: db-port
port: 3306
targetPort: db-port
selector:
svc: telepresence-db
docker контейнер, на который я заменяю pod + nginx.
FROM nanoninja/php-fpm:latest
RUN apt-get update && apt-get install nginx -y
ADD ./etc/nginx/default.conf /etc/nginx/conf.d/default.conf
RUN rm /etc/nginx/sites-enabled/default
CMD nginx && php-fpm
Настройки Nginx default.conf:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
set $virtualdir "";
set $realdir "";
if ($request_uri ~ ^/([^/]*)/.*$ ) {
set $virtualdir /$1;
}
if (-d "$document_root$virtualdir") {
set $realdir "${virtualdir}";
}
location / {
try_files $uri $uri/ $realdir/index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass localhost:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Помогите если не сложно. Демо-проект находится здесь https://github.com/Mavellol/kuber-nginx-php-mysql