本文主要聚焦于将 php-fpm 应用容器化并迁移部署到 TKE集群(使用nginxingress)
参考: 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创建
kubectl连接集群参考连接集群
可以通过kubectl命令查看集群版本等,kubectl命令参考k8s文档kubectl
kubectl version
实际上tke控制台部署nginxingress也是使用的社区项目,只是集成到tke控制台
"组件管理" -> "新建" -> "Nginxingress",然后点击"完成",等待组件安装成功
安装成功后,集群会新建deployment: kube-system/tke-ingress-nginx-controller-operator
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" -> "新增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部署可以参考github: nginxingress
文档参考: nginxingress文档
参考: 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是否正常
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 删除。