### apps 应用部署方法 ```shell kubectl apply -f apps/xxx -R ``` 举例: ```shell kubectl apply -f apps/infra/data/redis -R ``` 你可以一次性将所有的应用部署到k8s集群中 但是此处建议分开部署 每个文件夹单独执行 以保证不会出现错误与性能问题 注意!! 在部署前你需要替换yaml中的YOU_SHOULD_MODIFY_THIS_ 开头的字段 替换为自己的值 这些值的来源部分是自己生成的、部分是需要你自己去申请的 比如说你需要去华为云申请一个access key id和secret key 还有一个bucket name 这些值需要你自己去申请 ### 应用说明 ./kube文件夹下的请全部执行 此文件架内部为集群优化相关内容 例如dns延迟优化 (patch-affinity.yaml 按需 仅在你想让k3s自带的system服务使用特定节点时使用 比如保留核心服务停留在高可用节点上) - infra-net: 网络相关的应用 - nginx: 负载均衡服务 替换集群默认的ingress(traefik) - crowdsec: 安全防护服务 - tailscale: 集群内网加速服务 如果对集群内网加速没有需求 可以不安装 - infra-data: 数据存储相关的应用 - redis: redis服务 - postgresql-ha: postgresql服务 - cloudnative: postgresql服务 操作符版本 推荐 - infra-devops: devops相关的应用 - gitea: git托管服务 - cert-manager: 证书管理服务 - reflector: 密钥同步服务 - velero: 备份服务 - infra-monitor: 监控相关的应用 - prometheus: 监控服务 - loki: 日志服务 - apps: 其他应用 个人应用部分 - whoami: 测试服务 ### 调试集群内服务方法 运行此命令 ```shell kubectl run -i --tty --rm --restart=Never \ --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": {"kubernetes.io/hostname": "homea"}}}' \ --image=nicolaka/netshoot:latest \ debug -- sh ``` ### 密钥相关 可以将helm部署中使用到的密钥放到k8s的secret中 然后使用reflector将secret中的密钥同步到其他namespace中 ```shell kubectl -n infra-devops create secret generic s3-devcm-hw \ --from-literal=ACCESS_KEY_ID=xxxxx \ --from-literal=ACCESS_SECRET_KEY=xxxxx kubectl -n infra-devops annotate secret s3-devcm-hw \ reflector.v1.k8s.emberstack.com/reflection-allowed=true \ reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces=infra-data \ reflector.v1.k8s.emberstack.com/reflection-auto-enabled=true \ reflector.v1.k8s.emberstack.com/reflection-auto-namespace=infra-data --overwrite ```