前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TKE使用nginxingress部署php-fpm

TKE使用nginxingress部署php-fpm

原创
作者头像
williamji
发布2024-04-03 17:52:17
1100
发布2024-04-03 17:52:17

背景

本文主要聚焦于将 php-fpm 应用容器化并迁移部署到 TKE集群(使用nginxingress)

php-fpm容器化应用

参考: https://github.com/volume-ji/php-fpm-demo

demo里构建镜像是把项目public/index.php放到容器的/project/public/index.php, 相应的configmap里SCRIPT_FILENAME也是该文件路径

dockerfile目录里是构建php镜像的Dockerfile

k8s目录里是对应部署到k8s集群的yaml(包括deployment, service, ingress, configma)

tke集群

创建tke集群参考tke创建

kubectl连接集群参考连接集群

可以通过kubectl命令查看集群版本等,kubectl命令参考k8s文档kubectl

代码语言:shell
复制
kubectl version

部署nginxingress

控制台部署nginxingress

实际上tke控制台部署nginxingress也是使用的社区项目,只是集成到tke控制台

组件安装

"组件管理" -> "新建" -> "Nginxingress",然后点击"完成",等待组件安装成功

安装成功后,集群会新建deployment: kube-system/tke-ingress-nginx-controller-operator

代码语言:shell
复制
kubectl get deployment -n kube-system tke-ingress-nginx-controller-operator
NAME                                    READY   UP-TO-DATE   AVAILABLE   AGE
tke-ingress-nginx-controller-operator   1/1     1            1           3m49s

nginxingress实例创建

"服务与路由" -> "NginxIngress" -> "新增Nginx Ingress实例",根据页面引导创建公网或者内网类型的NginxIngress实例

实例创建好之后,集群主要创建如下资源(默认是deployment+HPA方式部署,也客户选择daemonset+节点池方式):

configmap: kube-system/<class>-ingress-nginx-controller

deployment: kube-system/<class>-ingress-nginx-controller

hpa: kube-system/<class>-ingress-nginx-controller

service: kube-system/<class>-ingress-nginx-controller

service: kube-system/<class>-ingress-nginx-controller-admission

开源部署nginxingress

开源nginxingress部署可以参考github: nginxingress

文档参考: nginxingress文档

部署php-fpm

参考: https://github.com/volume-ji/php-fpm-demo

k8s目录有php-fpm部署资源,包括deployment, service, ingress, configmap

部署注意点:

1. deployment里需要替换php-fpm镜像,镜像dockerfile参考dockerfile目录

2. deployment里需要替换镜像拉取秘钥,参考secret管理,注意使用Dockercfg类型

3. Ingress里annotations的kubernetes.io/ingress.class需要设置对应nginxingress实例名,也就是ingressclass名

4. configmap里SCRIPT_FILENAME路径要和Dockerfile构建的路径保持一致。

部署之后查看对应pod,service,ingress是否正常

代码语言:shell
复制
kubectl get po | grep php-fpm
php-fpm-7b44cc5cf4-b6kbs            1/1     Running            0          73m

kubectl get svc php-fpm
NAME      TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
php-fpm   ClusterIP   172.16.50.190   <none>        9000/TCP   101m

kubectl get ingress php-fpm
NAME     CLASS    HOSTS            ADDRESS          PORTS   AGE
php-fpm  <none>   www.phpfpm.com   134.175.235.37   80      85m

测试环境设置/etc/hosts(如果是自定义域名,可以解析子域名A记录到clb的公网IP),对应公网IP: 134.175.235.37设置域名为www.phpfpm.com。测试环境设置/etc/hosts之后访问域名,确实访问到index.php页面

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • php-fpm容器化应用
  • tke集群
  • 部署nginxingress
    • 控制台部署nginxingress
      • 组件安装
      • nginxingress实例创建
    • 开源部署nginxingress
    • 部署php-fpm
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档