Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie Kubernetes in PHP für die API-Containerisierung und automatisierte Bereitstellung

So verwenden Sie Kubernetes in PHP für die API-Containerisierung und automatisierte Bereitstellung

王林
王林Original
2023-06-17 16:40:51874Durchsuche

In der modernen Softwareentwicklung sind Containerisierung und automatische Bereitstellung zu einem unverzichtbaren Bestandteil geworden. Kubernetes ist heute eine der beliebtesten Container-Orchestrierungsplattformen und bietet eine flexible, skalierbare und verwaltbare Möglichkeit, Containeranwendungen zu verwalten. In diesem Artikel erfahren Sie, wie Sie Kubernetes für die API-Containerisierung und die automatisierte Bereitstellung in PHP-Anwendungen verwenden.

Schritt eins: Docker in PHP-Anwendungen verwenden

Bevor wir Kubernetes verwenden, müssen wir zunächst die PHP-Anwendung containerisieren. Docker ist eine der beliebtesten Containerisierungstechnologien auf dem Markt, daher werden wir Docker zum Containerisieren von PHP-Anwendungen verwenden.

Zuerst müssen wir eine Docker-Datei erstellen, um das Docker-Image der PHP-Anwendung zu definieren. Hier ist ein einfaches Dockerfile-Beispiel:

# 使用PHP 7.4作为基础镜像
FROM php:7.4-apache

# 将应用程序复制到容器中
COPY . /var/www/html/

# 安装PHP扩展
RUN docker-php-ext-install pdo_mysql

# 配置Apache
RUN a2enmod rewrite

# 暴露端口
EXPOSE 80

In diesem Dockerfile verwenden wir zunächst PHP 7.4 als Basis-Image und kopieren die Anwendung in den Container. Anschließend haben wir die pdo_mysql-Erweiterung installiert und das Rewrite-Modul von Apache aktiviert. Schließlich haben wir Port 80 des Containers freigelegt.

Als nächstes können wir das Docker-Image mit dem folgenden Befehl erstellen und ausführen:

# 构建镜像
docker build -t my-app .
# 运行容器
docker run -p 80:80 my-app

Dadurch wird das Docker-Image mit dem Namen my-app erstellt und es Port 80 des Host-Computers zugeordnet.

Schritt 2: Stellen Sie die PHP-Anwendung in Kubernetes bereit.

Sobald wir die PHP-Anwendung in einen Container umgewandelt haben, können wir sie im Kubernetes-Cluster bereitstellen. Hier ist ein Beispiel einer einfachen Kubernetes-Bereitstellungsdatei:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-registry/my-app:latest
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: my-registry-secret

In dieser Kubernetes-Bereitstellungsdatei definieren wir eine Bereitstellung namens „my-app-deployment“. Das Replikatfeld definiert die Anzahl der Pod-Replikate, die wir erstellen möchten, das Selektorfeld definiert den Label-Selektor, den wir verwenden möchten, und das Vorlagenfeld definiert die Pod-Vorlage, die wir verwenden möchten.

Im Containerfeld definieren wir den Container, der im Pod ausgeführt wird. Das Image-Feld gibt das Container-Image an, das wir verwenden möchten, und das Ports-Feld gibt die Ports an, die der Container verfügbar macht. Schließlich verwenden wir das Feld „imagePullSecrets“, um die Registrierungsanmeldeinformationen anzugeben, mit denen wir das Image aus der privaten Registrierung abrufen.

Als nächstes können wir die PHP-Anwendung im Kubernetes-Cluster mit dem folgenden Befehl bereitstellen:

# 创建Secret
kubectl create secret docker-registry my-registry-secret 
    --docker-server=my-registry 
    --docker-username=my-username 
    --docker-password=my-password 
    --docker-email=my-email
# 创建Deployment
kubectl apply -f my-app-deployment.yaml

Dadurch wird ein Secret namens „my-registry-secret“ erstellt, das die von uns verwendeten Registrierungsanmeldeinformationen enthält. Anschließend können wir den Befehl kubectl apply verwenden, um das gerade definierte Deployment im Cluster bereitzustellen.

Schritt drei: Automatisierte Bereitstellung

Ein Vorteil der Verwendung von Kubernetes für die automatisierte Bereitstellung besteht darin, dass wir bei der Aktualisierung des Codes nur das Docker-Image aktualisieren und die Bereitstellung erneut bereitstellen müssen. Hier ist ein einfaches Skript, mit dem automatisch eine neue Version eines Docker-Images erstellt und bereitgestellt werden kann:

#!/bin/bash
# 构建新镜像
docker build -t my-registry/my-app:latest .
# 推送镜像到镜像仓库
docker push my-registry/my-app:latest
# 在Kubernetes中更新Deployment
kubectl set image deployment/my-app-deployment my-app=my-registry/my-app:latest

In diesem Skript erstellen wir zunächst ein neues Docker-Image mit dem Docker-Build-Befehl und übertragen das Image dann in das Image-Repository mit dem Docker-Push-Befehl. Schließlich verwenden wir den Befehl kubectl set image, um das Image des My-App-Containers von My-App-Deployment zu aktualisieren.

Sie können jede CI/CD-Plattform wie Jenkins oder GitLab verwenden, um dieses Skript zu automatisieren.

Fazit

In diesem Artikel haben wir beschrieben, wie Sie Kubernetes für die API-Containerisierung und die automatisierte Bereitstellung in PHP-Anwendungen verwenden. Wir haben die PHP-Anwendung zunächst in einen Container verpackt und sie dann mithilfe von Kubernetes in einem Cluster bereitgestellt. Abschließend haben wir erläutert, wie Sie mithilfe von Skripts den Erstellungs- und Bereitstellungsprozess automatisieren. Kubernetes bietet uns eine flexible, skalierbare und zuverlässige Möglichkeit, Containeranwendungen zu verwalten, was unserem Softwareentwicklungs-Ökosystem viele Vorteile bringt.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Kubernetes in PHP für die API-Containerisierung und automatisierte Bereitstellung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn