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

软件及方向

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

问题

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

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

期待

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
自由与温暖是遥不可及的梦想
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

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

2年前 评论

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

2年前 评论

可以去掉 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
2年前 评论

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