作者选择了技术多样性基金来接受捐赠,作为Write for DOnations计划的一部分。
介绍
Laravel是当今最流行的开源 PHP 应用程序框架之一。它通常与MySQL数据库一起部署,但可以配置为使用各种后端数据存储选项。Laravel 以利用 PHP 的许多现代特性和广泛的包生态系统而自豪。
Kubernetes是一个容器编排平台,可以托管在DigitalOcean Kubernetes 集群上,以便在生产中设置和运行容器时进行大部分管理工作。Helm是一个 Kubernetes 包管理器,它使在 Kubernetes 上配置和安装服务和 Pod 变得更容易。
在本指南中,您将创建一个 Laravel PHP 应用程序,将您的应用程序构建到 Docker 映像中,并使用LAMP Helm chart将该映像部署到 DigitalOcean Kubernetes 集群。接下来,您将设置 Ingress Controller 以将 SSL 和自定义域名添加到您的应用程序。完成后,您将有一个工作的 Laravel 应用程序连接到在 Kubernetes 集群上运行的 MySQL 数据库。
先决条件
- Docker 安装在您将访问集群的机器上。您可以在此处找到有关为大多数 Linux 发行版安装 Docker 的详细说明,也可以在Docker 的网站上找到其他操作系统的详细说明。
- Docker Hub 上的一个帐户,用于存储您将在本教程中创建的 Docker 映像。
- 一个 DigitalOcean Kubernetes 1.17+ 集群,您的连接配置设置为
kubectl
默认值。要了解如何在 DigitalOcean 上创建 Kubernetes 集群,请参阅Kubernetes 快速入门。要了解如何连接到集群,请参阅如何连接到 DigitalOcean Kubernetes 集群。 - 安装在本地机器上的 Helm 3 包管理器。完成第一步并添加如何使用 Helm 3 包管理器教程在 Kubernetes 集群上安装软件的
stable
第二步中的存储库。 - 具有可用 A 记录的完全注册域名。本教程将
your_domain
贯穿始终。你可以购买一个域名Namecheap,免费获得一个在Freenom,或使用你选择的域名注册商。此时不要担心将您的域的 A 记录与 IP 相关联。到达第 5 步并且 Ingress 控制器就位后,您将连接your_domain
到正确的 IP。
第 1 步——创建一个新的 Laravel 应用程序
在这一步中,您将使用 Docker 创建一个新的 Laravel 7 应用程序,但您应该能够对使用 MySQL 作为后备数据库的现有 Laravel 应用程序执行相同的过程。您构建的新应用程序将验证 Laravel 是否已连接到数据库并显示数据库名称。
首先,移动到您的主目录,然后使用composer
Docker 容器创建一个新的 Laravel 应用程序:
- cd ~
- docker run --rm -v $(pwd):/app composer create-project --prefer-dist laravel/laravel laravel-kubernetes
一旦容器完成并安装了所有 Composer 包,您应该会在当前名为laravel-kubernetes/
. 导航到该文件夹:
- cd ~/laravel-kubernetes
您将从此处执行本教程的其余命令。
此应用程序的目的是测试您的数据库连接并在您的浏览器中显示其名称。为了测试数据库连接,./resources/views/welcome.blade.php
在文本编辑器中打开文件:
- nano ./resources/views/welcome.blade.php
找到该部分<div class="links">...</div>
并将其内容替换为以下内容:
...
<div class="links">
<strong>Database Connected: </strong>
@php
try {
DB::connection()->getPDO();
echo DB::connection()->getDatabaseName();
} catch (\Exception $e) {
echo 'None';
}
@endphp
</div>
...
保存并关闭文件。
这就是您需要对本教程的默认 Laravel 应用程序进行的所有自定义。完成后,这个简短的 PHP 片段将测试您的数据库连接并在您的 Web 浏览器的 Laravel 启动屏幕上显示数据库的名称。
在下一步中,您将使用Docker构建一个包含此 Laravel 应用程序和Docker Compose的映像,以测试它是否在本地运行并连接到 MySQL 数据库。
第 2 步——容器化你的 Laravel 应用程序
现在您已经创建了一个新的 Laravel 应用程序,您需要将代码构建到 Docker 镜像中,然后使用 Docker Compose 测试该镜像。虽然本教程的目标是将您的应用程序部署到 Kubernetes 集群,但 Docker Compose 是一种在云中运行之前在本地测试 Docker 镜像和配置的便捷方法。这种快速反馈循环对于进行和测试小的更改非常有用。
首先,使用nano
或您喜欢的文本编辑器,在 Laravel 应用程序的根目录中创建一个名为 的文件Dockerfile
:
- nano ./Dockerfile
添加以下内容。Docker 将使用此文件将您的代码构建到映像中:
FROM php:7.4-apache
# Install packages
RUN apt-get update && apt-get install -y \
git \
zip \
curl \
sudo \
unzip \
libicu-dev \
libbz2-dev \
libpng-dev \
libjpeg-dev \
libmcrypt-dev \
libreadline-dev \
libfreetype6-dev \
g++
# Apache configuration
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN a2enmod rewrite headers
# Common PHP Extensions
RUN docker-php-ext-install \
bz2 \
intl \
iconv \
bcmath \
opcache \
calendar \
pdo_mysql
# Ensure PHP logs are captured by the container
ENV LOG_CHANNEL=stderr
# Set a volume mount point for your code
VOLUME /var/www/html
# Copy code and run composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY . /var/www/tmp
RUN cd /var/www/tmp && composer install --no-dev
# Ensure the entrypoint file can be run
RUN chmod +x /var/www/tmp/docker-entrypoint.sh
ENTRYPOINT ["/var/www/tmp/docker-entrypoint.sh"]
# The default apache run command
CMD ["apache2-foreground"]
保存并关闭文件。
这个 Dockerfile 从Docker Hub 上的PHP 7.4 Apache Docker Image开始,然后安装 Laravel 应用程序通常需要的几个 Linux 包。接下来,它创建 Apache 配置文件并启用标头重写。Dockerfile 安装了几个常用的 PHP 扩展并添加了一个环境变量,以确保 Laravel 的日志通过stderr
. 这将允许您通过跟踪 Docker Compose 或 Kubernetes 日志来查看 Laravel 日志。
最后,Dockerfile 将 Laravel 应用程序中的所有代码复制到/var/www/tmp
并安装 Composer 依赖项。然后设置一个ENTRYPOINT
,但您需要创建该文件,我们接下来将执行该操作。
在项目的根目录下,创建一个名为docker-entrypoint.sh
. 当您的容器在本地或 Kubernetes 集群中运行时,此文件将运行,并将您的 Laravel 应用程序代码从/var/www/tmp
目录复制到/var/www/html
Apache 能够为其提供服务的位置。
- nano ./docker-entrypoint.sh
现在添加以下脚本:
#!/bin/bash
cp -R /var/www/tmp/. /var/www/html/
chown -R www-data:www-data /var/www/html
exec "$@"
最后一行,exec "$@"
指示 shell 运行接下来作为输入参数传入的任何命令。这很重要,因为您希望Dockerapache2-foreground
在此脚本执行后继续运行Apache 运行命令 ( )。保存并关闭文件。
接下来,.dockerignore
在您的应用程序的根目录中创建一个文件。此文件将确保在构建 Docker 映像时不会被不应复制到其中的包或环境文件污染:
- nano ./.dockerignore
.env
/vendor
保存并关闭文件。
在使用 Docker Compose 在本地运行应用程序之前,您需要创建的最后一个文件是docker-compose.yml
文件。但是在配置这个 YAML 文件的过程中,你需要输入APP_KEY
Laravel 在安装过程中生成的。发现这种通过打开和搜索./.env
文件,或通过运行以下cat
和grep
命令:
- cat .env | grep ^APP_KEY
你会看到这样的输出:
OutputAPP_KEY=base64:0EHhVpgg ... UjGE=
将您的密钥复制到剪贴板。请务必包含base64:
前缀。现在docker-compose.yml
在应用程序的根目录中创建文件:
- nano ./docker-compose.yml
在这里,我们将包含 Laravel 应用程序的 PHP 映像以及一个用于运行数据库的 MySQL 容器。添加以下内容:
version: '3.5'
services:
php:
image: your_docker_hub_username/laravel-kubernetes:latest
restart: always
ports:
- 8000:80
environment:
- APP_KEY="your_laravel_app_key"
- APP_ENV=local
- APP_DEBUG=true
- DB_PORT=3306
- DB_HOST=mysql
- DB_DATABASE
- DB_USERNAME
- DB_PASSWORD
mysql:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASSWORD}
使用APP_KEY
您复制到剪贴板的your_laravel_app_key
变量作为变量,并使用您的 Docker Hub 用户名作为your_docker_hub_username
变量。保存并关闭文件。
您将使用docker build
. 第二个镜像是Docker Hub 上提供的官方MySQL Docker 镜像。两者都需要多个环境变量,您将在运行容器时包含这些变量。
要构建包含 Laravel 应用程序的 Docker 映像,请运行以下命令。确保your_docker_hub_username
在将存储此图像的 Docker Hub替换为您的用户名或团队的用户名:
- docker build -t your_docker_hub_username/laravel-kubernetes:latest .
接下来,您可以使用 Docker Compose 使用所需的数据库凭据运行两个容器:
- DB_ROOT_PASSWORD=rootpassword DB_DATABASE=local_db DB_USERNAME=admin DB_PASSWORD=password docker-compose up -d
如果您愿意,可以修改此处使用的四个环境变量 ( DB_ROOT_PASSWORD
, DB_DATABASE
, DB_USERNAME
, DB_PASSWORD
),但由于您只是在本地测试应用程序,因此您不必担心保护它们。
MySQL 数据库初始化和容器准备就绪可能需要长达 30 秒的时间。完成后,您可以在您的机器上查看您的 Laravel 应用程序localhost:8000
。
您的 PHP 应用程序将连接到您的 MySQL 数据库。连接成功后,Laravel 标志下方会出现“Database Connected: local_db”字样。
现在您已经使用 Docker Compose 在本地测试了您的 Docker 镜像,您可以通过运行docker-compose down
以下命令来关闭容器:
- docker-compose down
在下一部分中,您将 Docker 映像推送到 Docker Hub,以便您的 Helm 图表可以使用它来将您的应用程序部署到您的 Kubernetes 集群。
第 3 步——将你的 Docker 镜像推送到 Docker Hub
您将用于将代码部署到 Kubernetes 的 LAMP Helm Chart 要求您的代码在容器注册表中可用。虽然您可以将映像推送到私有或自托管注册表,但出于本教程的目的,您将在 Docker Hub 上使用公开可用且免费的 Docker 注册表。
使用 Web 浏览器访问您在Docker Hub上的帐户,然后创建一个名为laravel-kubernetes
.
接下来,如果您尚未从本地计算机连接到 Docker Hub,则需要登录到 Docker Hub。您可以通过命令行执行此操作:
- docker login -u your_docker_hub_username
出现提示时输入您的登录凭据。这通常只需要在每台机器上执行一次,因为 Docker 会将您的凭据保存到~/.docker/config.json
您的主目录中。
最后,将你的镜像推送到 Docker Hub:
- docker push your_docker_hub_username/laravel-kubernetes:latest
根据您的连接
速度,上传您的应用程序可能需要几分钟时间,但是一旦 Docker 完成,您将在终端中看到最终摘要哈希和图像大小。它看起来像这样:
Outputlatest: digest: sha256:df4bdeda91484c8c26a989b13b8f27ab14d93ab2e676e3c396714cb3811c4086 size: 4918
现在您的 Laravel 应用程序已容器化并且您已将映像推送到 Docker Hub,您可以在 Helm Chart 或 Kubernetes 部署中使用该映像。在下一步中,您将根据 LAMP Helm Chart 设置自定义值并将其部署到您的 DigitalOcean Kubernetes 集群。
第 4 步 – 使用 LAMP Helm Chart 配置和部署应用程序
Helm 提供了许多Charts来帮助您使用预设的工具组合来设置 Kubernetes 应用程序。虽然您可以编写自己的Kubernetes 服务文件来完成类似的部署,但您将在本节中看到使用 Helm Chart 需要的配置要少得多。
首先,您需要一个目录来存储所有 Helm 配置文件。在 Laravel 项目的根目录中创建一个名为 的新目录helm/
:
- mkdir ./helm
在该helm/
目录中,您将创建两个新文件:values.yml
和secrets.yml
. 首先创建并打开values.yml
:
- nano ./helm/values.yml
该values.yml
文件将包含非秘密配置选项,这些选项将覆盖 LAMP Helm 图表中的默认值。添加以下配置,确保替换your_docker_hub_username
为您自己的用户名:
php:
repository: "your_docker_hub_username/laravel-kubernetes"
tag: "latest"
fpmEnabled: false
envVars:
- name: APP_ENV
value: production
- name: APP_DEBUG
value: false
- name: DB_PORT
value: 3306
- name: DB_HOST
value: localhost
保存并关闭文件。
现在创建一个secrets.yml
文件:
- nano ./helm/secrets.yml
secrets.yml
不会被签入版本控制。它将包含敏感的配置信息,例如您的数据库密码和 Laravel 应用程序密钥。添加以下配置,根据需要进行调整以适合您的凭据:
mysql:
rootPassword: "your_database_root_password"
user: your_database_user
password: "your_database_password"
database: your_database_name
php:
envVars:
- name: APP_KEY
value: "your_laravel_app_key"
- name: DB_DATABASE
value: your_database_name
- name: DB_USERNAME
value: your_database_user
- name: DB_PASSWORD
value: "your_database_password"
确保为您的生产数据库使用强用户名和密码组合,并使用与your_laravel_app_key
上面相同的组合,或者打开一个新的终端窗口并通过运行以下命令来生成一个新的。然后你可以复制 Laravel 在你的.env
文件中设置的新值:
- docker run --rm -v $(pwd):/app php:cli php /app/artisan key:generate
保存并关闭secrets.yml
。
接下来,为了防止您的secrets.yml
文件被构建到 Docker 镜像或保存到版本控制,请确保将以下行添加到您的.dockerignore
和.gitignore
文件中。打开并附/helm/secrets.yml
加到每个文件,或运行以下命令以添加两者:
- echo '/helm/secrets.yml' >> ./.dockerignore && echo '/helm/secrets.yml' >> ./.gitignore
现在您已经为应用程序和 Docker 映像创建了 Helm 配置文件,您可以将此 Helm 图表安装为 Kubernetes 集群上的新版本。从应用程序的根目录安装图表:
- helm install laravel-kubernetes -f helm/values.yml -f helm/secrets.yml stable/lamp
你会看到这样的输出:
OutputNAME: laravel-kubernetes
LAST DEPLOYED: Mon May 18 13:21:20 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
您的应用程序将需要一两分钟才能可用,但您可以运行此命令来监控集群中的 Kubernetes 服务:
- kubectl get services -w
查找您的应用程序的名称:
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
laravel-kubernetes-lamp LoadBalancer your_cluster_ip your_external_ip 80:32175/TCP,3306:32243/TCP
当您的新laravel-kubernetes-lamp
服务在 下显示 IP 地址时EXTERNAL-IP
,您可以访问your_external_ip
以查看在您的 Kubernetes 集群上运行的应用程序。您的应用程序将连接到您的数据库,您将在 Laravel 徽标下方看到数据库的名称,就像您在 Docker Compose 上本地运行应用程序时所做的那样。
在不安全的 IP 地址上运行 Web 应用程序可能可以用于概念验证,但如果没有 SSL 证书和自定义域名,您的网站就无法投入生产。在下一步中进行设置之前,请通过命令行卸载您的版本:
- helm delete laravel-kubernetes
在下一步中,您将扩展第一个 Helm 配置,以向 Laravel 应用程序添加 Ingress 控制器、SSL 证书和自定义域。
第 5 步 – 将入口控制器和 SSL 添加到您的 Kubernetes 集群
在 Kubernetes 中,入口控制器负责将应用程序的服务暴露给互联网。在上一步中,LAMP Helm 图表创建了一个 DigitalOcean 负载均衡器并通过负载均衡器的 IP 地址直接公开您的应用程序。
您可以直接在负载均衡器上终止 SSL 和您的域名,但是因为您在 Kubernetes 中工作,所以在同一个地方管理它们可能更方便。有关 Ingress Controller 的更多信息以及有关以下步骤的详细信息,请阅读如何使用 Helm 在 DigitalOcean Kubernetes 上设置 Nginx Ingress。
LAMP Helm chart 包含一个用于支持 Ingress 的配置选项。打开你的helm/values.yml
文件:
- nano ./helm/values.yml
现在添加以下几行:
...
# Use Ingress Controller
service:
type: ClusterIP
HTTPPort: 80
ingress:
enabled: true
domain: your_domain
这会指示您的部署不要安装负载均衡器,而是将应用程序暴露给 Kubernetes 集群的端口 80,入口控制器将在该端口将其暴露给 Internet。保存并关闭values.yml
。
现在运行helm install
您之前运行的命令,让您的 Laravel 应用程序再次运行。确保从应用程序的根目录运行命令:
- helm install laravel-kubernetes -f helm/values.yml -f helm/secrets.yml stable/lamp
接下来,nginx-ingress
使用 Kubernetes 维护的Nginx 入口控制器在 Kubernetes 集群上安装控制器:
- helm install nginx-ingress stable/nginx-ingress --set controller.publishService.enabled=true
安装后,您将看到如下输出:
OutputNAME: nginx-ingress
LAST DEPLOYED: Mon May 18 13:28:34 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
您还需要一个 Ingress Resource 来公开您的 Laravel 应用程序的部署。在您的应用程序的根目录中创建一个名为的新文件ingress.yml
:
- nano ./ingress.yml
此文件定义应用程序的主机、SSL 证书管理器以及后端服务和端口名称。添加以下配置,将your_domain替换为您选择的域:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: laravel-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- your_domain
secretName: laravel-kubernetes-tls
rules:
- host: your_domain
http:
paths:
- backend:
serviceName: laravel-kubernetes-lamp
servicePort: 80
保存并关闭文件。
接下来,您应该安装Cert-Manager并创建一个颁发者,允许您使用Let’s Encrypt创建生产 SSL 证书。Cert-Manager 需要自定义资源定义,您可以使用命令行从Cert-Manager 存储库中应用这些定义:
- kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml
这将创建许多将显示在命令行中的 Kubernetes 资源:
Outputcustomresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io create
Cert-Manager 还需要一个命名空间来将它隔离在您的 Kubernetes 集群中:
- kubectl create namespace cert-manager
你会看到这个输出:
Outputnamespace/cert-manager created
由于 Jetstack 的 Cert-Manager 不是 Kubernetes 维护的图表之一,因此您还需要添加Jetstack Helm 存储库。运行以下命令使其在 Helm 中可用:
- helm repo add jetstack https://charts.jetstack.io
添加成功将输出以下内容:
Output"jetstack" has been added to your repositories
现在您已准备好将 Cert-Manager 安装到cert-manager
Kubernetes 集群上的命名空间中:
- helm install cert-manager --version v0.15.0 --namespace cert-manager jetstack/cert-manager
完成后,您将看到如下所示的部署摘要:
OutputNAME: cert-manager
LAST DEPLOYED: Mon May 18 13:32:08 2020
NAMESPACE: cert-manager
STATUS: deployed
REVISION: 1
您需要添加到 Laravel 应用程序根目录的最后一个文件是production_issuer.yml
Kubernetes 配置文件。创建文件:
- nano ./production_issuer.yml
现在添加以下内容:
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# Email address used for ACME registration
email: your_email_address
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Name of a secret used to store the ACME account private key
name: letsencrypt-prod-private-key
# Add a single challenge solver, HTTP01 using nginx
solvers:
- http01:
ingress:
class: nginx
保存并关闭文件。
Let’s Encrypt 会发送your_email_address
任何重要通知和到期警告,因此请务必添加一个您将定期检查的地址。保存此文件并为 Kubernetes 集群中的 Ingress 资源和生产发行者创建一个新资源:
- kubectl create -f ingress.yml
- kubectl create -f production_issuer.yml
最后,更新您域名的 DNS 记录,将 A 记录指向您的负载均衡器的 IP 地址。要查找 Ingress Controller 的 IP 地址,请输入:
- kubectl get service nginx-ingress-controller
OutputNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer your_cluster_ip your_external_ip 80:30187/TCP,443:31468/TCP 6m10s
将该your_external_ip
地址用作 DNS A 记录的 IP 地址。更新 DNS 记录的过程因您管理域名和 DNS 托管的位置而异,但如果您使用的是 DigitalOcean,则可以参考我们关于如何管理 DNS 记录的指南。
一旦您的 DNS 记录更新并生成您的 SSL 证书,您的应用程序将可用,your_domain
并且 SSL 将被启用。
虽然您的 PHP 应用程序和数据库已经连接,但您仍然需要运行数据库迁移。在最后一步中,您将看到如何在 Kubernetes pod 上运行Artisan 命令来执行数据库迁移和其他常见维护任务。
第 6 步 – 运行远程命令
当您的 Laravel 应用程序正在运行并连接到 Kubernetes 中的 MySQL 数据库时,您应该在新的 Laravel 安装上运行几个常见的操作。您应该执行的一项常见任务是数据库迁移。
在 Laravel 应用程序上运行 Artisan 命令之前,您需要知道运行 Laravel 应用程序容器的pod的名称。使用命令行,您可以查看 Kubernetes 集群中的所有 pod:
- kubectl get pods
你会看到这样的输出:
OutputNAME READY STATUS RESTARTS AGE
laravel-kubernetes-lamp-77fb989b46-wczgb 2/2 Running 0 16m
为您的laravel-kubernetes-lamp-...
部署选择 pod 。确保在输出中使用名称,而不是上面列出的名称。现在你可以运行kubectl exec
它了。例如,使用该artisan migrate
命令运行数据库迁移。您将添加--force
标志,因为您正在生产中运行 pod:
- kubectl exec laravel-kubernetes-lamp-77fb989b46-wczgb -- php artisan migrate --force
此命令将产生一个输出:
OutputMigration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.16 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.05 seconds)
您现在已经成功地将 Laravel 7 和 MySQL 部署到 Kubernetes 并执行了一项基本的数据库维护任务。
结论
在本教程中,您学习了如何容器化 Laravel PHP 应用程序,将其连接到 MySQL 数据库,将包含代码的 Docker 映像推送到 Docker Hub,然后使用 Helm 图表将该映像部署到 DigitalOcean Kubernetes 集群。最后,您添加了 SSL 和自定义域名,并了解了如何在正在运行的 Pod 上运行命令行工具。
与传统 LAMP 堆栈托管相比,Kubernetes 和 Helm 为您提供了许多优势:可扩展性、无需直接登录服务器即可换出服务的能力、执行滚动升级的工具以及对托管环境的控制。也就是说,最初容器化和配置应用程序的复杂性使得入门障碍非常高。以本指南为起点,将 Laravel 部署到 Kubernetes 变得更加容易。从这里你可以考虑更多地了解Laravel的强大功能,或者向Kubernetes添加监控工具,如 Linkerd,你可以使用我们的指南或使用DigitalOcean 1-Click手动安装。