|
| 1 | +# account-service |
| 2 | + |
| 3 | +## 说明 |
| 4 | +sealos run 镜像时会在目标节点执行 Kubefile,本镜像通过 Helm 安装/升级 account-service Deployment。 |
| 5 | + |
| 6 | +## 必填参数 |
| 7 | + |
| 8 | +**无** |
| 9 | + |
| 10 | +## 如何运行 |
| 11 | + |
| 12 | +```shell |
| 13 | +# 最简配置 |
| 14 | +sealos run labring/account-service:latest |
| 15 | + |
| 16 | +# 自定义命名空间 |
| 17 | +sealos run labring/account-service:latest \ |
| 18 | + --env RELEASE_NAMESPACE=my-account-system |
| 19 | + |
| 20 | +# 自定义镜像 |
| 21 | +sealos run labring/account-service:latest \ |
| 22 | + --env HELM_OPTS="--set image=ghcr.io/labring/sealos-account-service:v1.0.0" |
| 23 | + |
| 24 | +# 自定义副本数 |
| 25 | +sealos run labring/account-service:latest \ |
| 26 | + --env HELM_OPTS="--set replicaCount=3" |
| 27 | +``` |
| 28 | + |
| 29 | +## 可选参数 |
| 30 | + |
| 31 | +- RELEASE_NAMESPACE: Helm 安装命名空间,默认 `account-system` |
| 32 | +- RELEASE_NAME: Helm release 名称,默认 `account-service` |
| 33 | +- HELM_OPTS: 透传 Helm 参数(例如 `--set replicaCount=3 --set image.tag=latest`) |
| 34 | +- CHART_PATH: Helm chart 路径,默认 `./charts/account-service` |
| 35 | + |
| 36 | +## Helm Chart 可配置参数 |
| 37 | + |
| 38 | +可通过 `HELM_OPTS` 传递以下参数: |
| 39 | + |
| 40 | +### 基础配置 |
| 41 | + |
| 42 | +- `replicaCount`: 副本数,默认 `1` |
| 43 | +- `image`: 容器镜像,默认 `ghcr.io/labring/sealos-account-service:latest` |
| 44 | +- `imagePullPolicy`: 镜像拉取策略,默认 `Always` |
| 45 | +- `imagePullSecrets`: 镜像拉取密钥,默认 `[]` |
| 46 | + |
| 47 | +### 服务配置 |
| 48 | + |
| 49 | +- `service.type`: 服务类型,默认 `ClusterIP` |
| 50 | +- `service.port`: 服务端口,默认 `2333` |
| 51 | + |
| 52 | +### 资源配置 |
| 53 | + |
| 54 | +- `resources.limits.cpu`: CPU 限制,默认 `500m` |
| 55 | +- `resources.limits.memory`: 内存限制,默认 `256Mi` |
| 56 | +- `resources.requests.cpu`: CPU 请求,默认 `50m` |
| 57 | +- `resources.requests.memory`: 内存请求,默认 `25Mi` |
| 58 | + |
| 59 | +### 健康检查 |
| 60 | + |
| 61 | +- `livenessProbe.httpGet.path`: 存活探针路径,默认 `/health` |
| 62 | +- `livenessProbe.httpGet.port`: 存活探针端口,默认 `2333` |
| 63 | +- `livenessProbe.initialDelaySeconds`: 存活探针初始延迟,默认 `3` |
| 64 | +- `livenessProbe.periodSeconds`: 存活探针周期,默认 `10` |
| 65 | +- `readinessProbe.httpGet.path`: 就绪探针路径,默认 `/health` |
| 66 | +- `readinessProbe.httpGet.port`: 就绪探针端口,默认 `2333` |
| 67 | +- `readinessProbe.initialDelaySeconds`: 就绪探针初始延迟,默认 `3` |
| 68 | +- `readinessProbe.periodSeconds`: 就绪探针周期,默认 `5` |
| 69 | +- `readinessProbe.failureThreshold`: 就绪探针失败阈值,默认 `6` |
| 70 | + |
| 71 | +### 调度配置 |
| 72 | + |
| 73 | +- `nodeSelector`: 节点选择器,默认 `{}` |
| 74 | +- `tolerations`: 容忍度配置,默认 `[]` |
| 75 | +- `affinity`: 亲和性配置,默认 `{}` |
| 76 | + |
| 77 | +### 自动伸缩 |
| 78 | + |
| 79 | +- `autoscaling.enabled`: 是否启用自动伸缩,默认 `false` |
| 80 | +- `autoscaling.minReplicas`: 最小副本数,默认 `1` |
| 81 | +- `autoscaling.maxReplicas`: 最大副本数,默认 `1` |
| 82 | +- `autoscaling.targetCPUUtilizationPercentage`: 目标 CPU 利用率,默认 `80` |
| 83 | + |
| 84 | +### 其他配置 |
| 85 | + |
| 86 | +- `serviceAccountName`: 服务账户名称,默认 `account-controller-manager` |
| 87 | +- `envConfigMapName`: 环境 ConfigMap 名称,默认 `account-manager-env` |
| 88 | +- `paymentSecretName`: 支付密钥名称,默认 `payment-secret` |
| 89 | +- `regionInfoConfigMapName`: 区域信息 ConfigMap 名称,默认 `region-info` |
| 90 | +- `nameOverride`: 名称覆盖,默认 `""` |
| 91 | +- `fullnameOverride`: 完全限定名称覆盖,默认 `account-service` |
| 92 | + |
| 93 | +## 示例 |
| 94 | + |
| 95 | +```shell |
| 96 | +# 1. 最简配置 |
| 97 | +sealos run labring/account-service:latest |
| 98 | + |
| 99 | +# 2. 自定义命名空间 |
| 100 | +sealos run labring/account-service:latest \ |
| 101 | + --env RELEASE_NAMESPACE=my-account-system |
| 102 | + |
| 103 | +# 3. 自定义镜像和标签 |
| 104 | +sealos run labring/account-service:latest \ |
| 105 | + --env HELM_OPTS="--set image=ghcr.io/labring/sealos-account-service:v1.0.0" |
| 106 | + |
| 107 | +# 4. 自定义副本数和资源限制 |
| 108 | +sealos run labring/account-service:latest \ |
| 109 | + --env HELM_OPTS="--set replicaCount=3 --set resources.limits.cpu=1000m --set resources.limits.memory=512Mi" |
| 110 | + |
| 111 | +# 5. 自定义服务端口 |
| 112 | +sealos run labring/account-service:latest \ |
| 113 | + --env HELM_OPTS="--set service.port=8080" |
| 114 | + |
| 115 | +# 6. 配置节点选择器 |
| 116 | +sealos run labring/account-service:latest \ |
| 117 | + --env HELM_OPTS="--set nodeSelector.node-role.kubernetes.io/worker=" |
| 118 | + |
| 119 | +# 7. 启用自动伸缩 |
| 120 | +sealos run labring/account-service:latest \ |
| 121 | + --env HELM_OPTS="--set autoscaling.enabled=true --set autoscaling.minReplicas=2 --set autoscaling.maxReplicas=5" |
| 122 | + |
| 123 | +# 8. 完整配置示例 |
| 124 | +sealos run labring/account-service:latest \ |
| 125 | + --env RELEASE_NAMESPACE=production-account \ |
| 126 | + --env HELM_OPTS="--set replicaCount=3 \ |
| 127 | + --set image=ghcr.io/labring/sealos-account-service:v1.0.0 \ |
| 128 | + --set resources.limits.cpu=1000m \ |
| 129 | + --set resources.limits.memory=512Mi \ |
| 130 | + --set resources.requests.cpu=100m \ |
| 131 | + --set resources.requests.memory=50Mi \ |
| 132 | + --set livenessProbe.initialDelaySeconds=10 \ |
| 133 | + --set readinessProbe.initialDelaySeconds=10" |
| 134 | +``` |
| 135 | + |
| 136 | +## 架构说明 |
| 137 | + |
| 138 | +### 组件说明 |
| 139 | + |
| 140 | +- **Deployment**: account-service 的无状态应用部署 |
| 141 | +- **Service**: 提供集群内部服务发现 |
| 142 | +- **ConfigMap**: 存储配置信息(region-info、account-manager-env) |
| 143 | +- **Secret**: 存储敏感信息(payment-secret) |
| 144 | + |
| 145 | +### 服务账户 |
| 146 | + |
| 147 | +使用现有的 `account-controller-manager` service account,与 account-controller 共享权限。 |
| 148 | + |
| 149 | +### 依赖组件 |
| 150 | + |
| 151 | +- **account-controller**: 提供 account-manager-env ConfigMap 和 service account |
| 152 | +- **payment-secret**: 支付配置密钥(可选) |
| 153 | + |
| 154 | +## 部署流程 |
| 155 | + |
| 156 | +1. **Adopt 现有资源**: 如果是从旧版本 manifest 部署迁移,会将现有资源标记为 Helm 管理 |
| 157 | +2. **创建命名空间**: 如果命名空间不存在,Helm 会自动创建(通过 `--create-namespace` 参数) |
| 158 | +3. **安装/升级 Helm Release**: 使用 Helm chart 部署或更新应用 |
| 159 | + |
| 160 | +## 故障排查 |
| 161 | + |
| 162 | +### 检查 Pod 状态 |
| 163 | + |
| 164 | +```shell |
| 165 | +kubectl get pods -n account-system |
| 166 | +kubectl describe pod -n account-system -l app=account-service |
| 167 | +``` |
| 168 | + |
| 169 | +### 查看日志 |
| 170 | + |
| 171 | +```shell |
| 172 | +kubectl logs -n account-system deployment/account-service |
| 173 | +kubectl logs -n account-system deployment/account-service --tail=100 -f |
| 174 | +``` |
| 175 | + |
| 176 | +### 检查 Helm Release |
| 177 | + |
| 178 | +```shell |
| 179 | +helm status account-service -n account-system |
| 180 | +helm get all account-service -n account-system |
| 181 | +``` |
| 182 | + |
| 183 | +### 检查配置 |
| 184 | + |
| 185 | +```shell |
| 186 | +# 查看 ConfigMap |
| 187 | +kubectl get configmap account-manager-env -n account-system -o yaml |
| 188 | +kubectl get configmap region-info -n account-system -o yaml |
| 189 | + |
| 190 | +# 查看 Secret |
| 191 | +kubectl get secret payment-secret -n account-system -o yaml |
| 192 | +``` |
| 193 | + |
| 194 | +### 重启服务 |
| 195 | + |
| 196 | +```shell |
| 197 | +kubectl rollout restart deployment/account-service -n account-system |
| 198 | +``` |
| 199 | + |
| 200 | +### 卸载 |
| 201 | + |
| 202 | +```shell |
| 203 | +helm uninstall account-service -n account-system |
| 204 | +``` |
| 205 | + |
| 206 | +## 从旧版本迁移 |
| 207 | + |
| 208 | +如果之前使用 manifest 部署(`manifests/deploy.yaml`),entrypoint 脚本会自动: |
| 209 | + |
| 210 | +1. Adopt 现有的 Deployment、Service、ConfigMap 资源 |
| 211 | +2. 为资源添加 Helm 管理标签 |
| 212 | +3. 使用 Helm 接管这些资源 |
| 213 | + |
| 214 | +无需手动删除旧资源,直接运行新的 sealos run 命令即可。 |
| 215 | + |
| 216 | +## 与 account-controller 的区别 |
| 217 | + |
| 218 | +| 特性 | account-service | account-controller | |
| 219 | +|------|-----------------|-------------------| |
| 220 | +| 类型 | 无状态服务(HTTP API) | Kubernetes 控制器 | |
| 221 | +| Webhook | 无 | 有(validating webhook) | |
| 222 | +| RBAC | 复用 controller 的 SA | 独立的完整 RBAC | |
| 223 | +| Metrics | 无 | 有(可选启用) | |
| 224 | +| Certificates | 无 | 需要 cert-manager 证书 | |
| 225 | +| 功能 | 提供 Account API 服务 | 管理 Account CRD 和计费逻辑 | |
| 226 | + |
| 227 | +## 开发指南 |
| 228 | + |
| 229 | +### 本地测试 |
| 230 | + |
| 231 | +```shell |
| 232 | +# 模板渲染测试 |
| 233 | +helm template account-service ./charts/account-service |
| 234 | + |
| 235 | +# 干跑安装 |
| 236 | +helm install account-service ./charts/account-service --dry-run --debug |
| 237 | + |
| 238 | +# Lint 检查 |
| 239 | +helm lint ./charts/account-service |
| 240 | +``` |
| 241 | + |
| 242 | +### 构建镜像 |
| 243 | + |
| 244 | +```shell |
| 245 | +# 在 deploy 目录下执行 |
| 246 | +cd service/account/deploy |
| 247 | +sealos build -t labring/account-service:latest . |
| 248 | +``` |
| 249 | + |
| 250 | +### 本地运行测试 |
| 251 | + |
| 252 | +```shell |
| 253 | +# 直接运行 entrypoint 脚本(需要 kubectl 访问权限) |
| 254 | +bash account-service-entrypoint.sh |
| 255 | +``` |
| 256 | + |
| 257 | +## 贡献指南 |
| 258 | + |
| 259 | +修改 Chart 时请注意: |
| 260 | + |
| 261 | +1. 更新 `Chart.yaml` 中的版本号 |
| 262 | +2. 在 README.md 中记录新增的配置参数 |
| 263 | +3. 使用 `helm template` 和 `helm lint` 验证模板 |
| 264 | +4. 测试升级流程:从旧版本升级到新版本 |
0 commit comments