求助 各位大佬 k8s, docker, nginx, laravel

软件及方向

php/nginx
laravel
需要使用 docker 打成容器
使用 k8s 进行编排

问题

现在的问题
k8s 如何 使用 nginx 与自己发布的项目进行关联
怎么挂域名
有点小卡克

还有就是 定时任务 消息队列 分布式事务 等问题待解决

期待

服务器运维大佬、架构师大佬

本作品采用《CC 协议》,转载必须注明作者和本文链接
自由与温暖是遥不可及的梦想
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

好像是利用ingress网关使其能够通过特定域名或 IP 访问

1年前 评论

定时任务cronJob
消息队列用deployment dockerfile最后写 CMD php artisan queue:work
分布式事务了解一下dtm框架 github.com/dtm-labs/dtm
想省事就用xa,或者自己写,需要了解tcc,xa,saga常见分布式事务
分布式事务其实可以不考虑,都开本地事务最简单k8s用作弹性伸缩工具就行,不要强行微服务

1年前 评论

可以去掉 nginx,server 和 schedule 直接用 laravels 扩展

  1. Dockerfile

    FROM eiixy/laravels
    RUN mkdir -p "/var/www"
    COPY ./ /var/www/
    WORKDIR /var/www
    RUN /usr/bin/composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
    RUN /usr/bin/composer i --no-dev
    CMD ["php", "/var/www/bin/laravels", "start"]
  2. ConfigMap

    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: php-env
    namespace: ${NAMESPACE}
    data:
    KEY: "${APP_KEY}"
    # ...
  3. Deployment

    apiVersion: apps/v1
    kind: Deployment
    metadata:
    labels:
     app: php-example
    name: php-example
    namespace: ${NAMESPACE}
    spec:
    replicas: 1
    selector:
     matchLabels:
       app: php-example
    template:
     metadata:
       labels:
         app: php-example
     spec:
       containers:
         - image: ${IMAGE}
           imagePullPolicy: IfNotPresent
           name: server
           command: ["php", "/var/www/bin/laravels", "start"]
           envFrom:
             - configMapRef:
                 name: php-env
         - image: ${IMAGE}
           imagePullPolicy: IfNotPresent
           name: queue
           command: ["php", "/var/www/artisan", "queue:work"]
           envFrom:
             - configMapRef:
                 name: php-env
  4. Service

    apiVersion: v1
    kind: Service
    metadata:
    labels:
     app: php-example-srv
    name: php-example-srv
    namespace: ${NAMESPACE}
    spec:
    ports:
     - name: http
       port: 80
       protocol: TCP
       targetPort: 5200
    selector:
     app: php-example
    type: ClusterIP
  5. Ingress

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: ${NAMESPACE}
    spec:
    rules:
     - host: ${HOST}
       http:
         paths:
           - path: /
             pathType: Prefix
             backend:
               service:
                 name: php-example-srv
                 port:
                   number: 80
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!