Невозможно заменить 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

0 ответов

Другие вопросы по тегам