diff --git a/k8s/README.md b/k8s/README.md new file mode 100644 index 0000000..121a8f2 --- /dev/null +++ b/k8s/README.md @@ -0,0 +1,43 @@ +# violin-cv K8s 部署 + +## 一键部署 + +```bash +kubectl apply -f namespace.yaml +kubectl apply -f deployment.yaml +kubectl apply -f service.yaml +kubectl apply -f ingress.yaml +``` + +## 验证 + +```bash +# 看 pod 启动 +kubectl get pods -n drone -l app=violin-cv + +# 看 service / ingress +kubectl get svc,ing -n drone -l app=violin-cv + +# 测访问 +curl -I http://cv.violin-work.online/ +``` + +## 文件说明 + +| 文件 | 作用 | +|------|------| +| `namespace.yaml` | K8s namespace(**不会真正创建**,因为 drone namespace 已存在;保留是声明依赖) | +| `deployment.yaml` | 1 个 nginx 容器跑 HTML,replicas=1,资源极省 | +| `service.yaml` | ClusterIP,端口 80 | +| `ingress.yaml` | `cv.violin-work.online` → service:80(TLS 暂时不配,用 cert-manager 后再说) | + +## 镜像 + +由 `.drone.yml` 自动 push 到 `ccr.ccs.tencentyun.com/violin/violin-cv:latest` + +## 域名 + +`cv.violin-work.online` 需要: +1. 你的 DNS 把这个域名解析到 K8s ingress 公网 IP +2. 集群已装 nginx-ingress-controller +3. (可选)cert-manager 给 `cv.violin-work.online` 申请证书 diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml new file mode 100644 index 0000000..0e73c3c --- /dev/null +++ b/k8s/deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: violin-cv + namespace: violin + labels: + app: violin-cv +spec: + replicas: 1 + selector: + matchLabels: + app: violin-cv + template: + metadata: + labels: + app: violin-cv + spec: + containers: + - name: cv + image: ccr.ccs.tencentyun.com/violin/violin-cv:latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 80 + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + cpu: 200m + memory: 128Mi diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml new file mode 100644 index 0000000..3fb5edc --- /dev/null +++ b/k8s/ingress.yaml @@ -0,0 +1,26 @@ +kind: Ingress +apiVersion: networking.k8s.io/v1 +metadata: + name: violin-ingress + namespace: violin + creationTimestamp: "2026-06-29T15:36:21Z" + annotations: + kubesphere.io/creator: akadmin + traefik.ingress.kubernetes.io/router.entrypoints: websecure +spec: + ingressClassName: traefik + tls: + - hosts: + - cv.violin-home.cn + secretName: violin-tls + rules: + - host: cv.violin-home.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: violin-cv + port: + number: 80 diff --git a/k8s/service.yaml b/k8s/service.yaml new file mode 100644 index 0000000..5191f4d --- /dev/null +++ b/k8s/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: violin-cv + namespace: violin +spec: + type: ClusterIP + selector: + app: violin-cv + ports: + - name: http + port: 80 + targetPort: http diff --git a/src/pages/index.html b/src/pages/index.html index f5b0d28..72321fb 100644 --- a/src/pages/index.html +++ b/src/pages/index.html @@ -1,27 +1,38 @@ + Portfolio - + + -
-
-
+
+
+
- - + + - -
-
-
-
- - Open to work -
-

你好,我是
王明

-

全栈工程师,专注 Kubernetes、云原生架构与分布式系统。热爱把复杂的东西拆干净、再装回去。

- -
-
-
- SCROLL -
-
-
- - -
-
-
- -

关于我

-
-
-
-

毕业于某 985 高校计算机系,过去 6 年一直在跟分布式系统和云原生打交道。

-

从 K8s 集群维护、CI/CD 流水线搭建,到微服务拆分、Service Mesh 落地,踩过的坑比文档多。但也因此对可靠性、可观测性、自动化这些东西有了执念。

-

相信好的基础设施是沉默的——越少需要人操心,越说明做对了。

-
-
-
- 6+ - 年经验 + +
+
+
+
+ + Open to work
-
- 50+ - 生产集群 -
-
- 10k+ - Pod 日常 -
-
- 99.9% - SLA 记录 -
-
-
-
-
- - -
-
-
- -

技术栈

-
-
-
-
-
Kubernetes
-
集群管理、Operator 开发、HPA/VPA、自动扩缩容、集群联邦
-
-
-
-
🐳
-
Docker / Containerd
-
镜像构建优化、多阶段构建、Harbor 私有仓库、安全扫描
-
-
-
-
-
Go
-
Kubernetes 客户端开发、CLI 工具、微服务编写、性能调优
-
-
-
-
🔀
-
CI/CD
-
ArgoCD、GitLab CI、Jenkins、FluxCD GitOps 流水线
-
-
-
-
📊
-
可观测性
-
Prometheus + Grafana 监控体系、Jaeger 链路追踪、Loki 日志
-
-
-
-
☁️
-
公有云 / IaC
-
AWS / GCP / 阿里云,Terraform / Pulumi 基础设施代码化
-
-
-
-
-
- - -
-
-
- -

工作经历

-
-
-
-
2022 — 至今
-
高级 DevOps / 云原生工程师
-
某科技公司 · 基础设施部
-
负责公司 K8s 集群(50+节点)运维与优化,推进 GitOps 落地,搭建全链路可观测体系,SLA 达 99.95%。主导容器安全加固项目,漏洞响应时间从 24h 降至 2h。
-
- Kubernetes - ArgoCD - Prometheus - AWS - Go -
-
-
-
2020 — 2022
-
后端开发工程师
-
某互联网公司 · 平台技术部
-
负责订单系统微服务化改造(单体 → 12 个服务),引入 gRPC + Istio 服务网格,QPS 从 200 提升至 3000+,P99 延迟降低 60%。
-
- Go - gRPC - Istio - MySQL - Redis -
-
-
-
2018 — 2020
-
运维开发工程师
-
某传统企业 · IT 部
-
从零搭建 CI/CD 流水线,引入 Docker 容器化部署,部署频率从每月 1 次提升到每天 5+ 次,故障率降低 70%。
-
- Jenkins - Docker - Ansible - Shell -
-
-
-
-
- - -
-
-
- -

精选项目

-
-
-
-
-
- -
-
K8s Operator 样板
-
生产级 K8s Operator 骨架,支持 CRD 自动生成、Webhook 验证、指标暴露、健康检查,配套完整单元测试与 CI 模板。
-
- Go - Kubebuilder - Controller-Runtime -
-
-
-
-
🔀
- -
-
GitOps 一键部署平台
-
基于 ArgoCD + ApplicationSet 的 GitOps 管理平台,支持多集群批量部署、回滚、差异化对比,Web UI 自研。
-
- ArgoCD - React - Go - PostgreSQL -
-
-
-
-
📊
- -
-
可观测性仪表盘模板
-
开箱即用的 Prometheus + Grafana + Loki 监控模板,预置 K8s 工作负载、Istio 流量、数据库、业务指标的看板。
-
- Prometheus - Grafana - Loki - Jsonnet -
-
-
-
-
- -
-
K8s 成本分析 CLI
-
命令行工具,自动采集集群资源使用情况,生成成本报告,识别闲置资源与优化建议,支持导出 CSV / JSON。
-
- Go - K8s API - Click -
-
-
-
-
- - -
-
-
- -

联系方式

-
- -
+
+ SCROLL +
+
+ - - + +
+
+
+ +

关于我

+
+
+
+

毕业于某 985 高校计算机系,过去 6 年一直在跟分布式系统和云原生打交道。

+

从 K8s 集群维护、CI/CD 流水线搭建,到微服务拆分、Service Mesh 落地,踩过的坑比文档多。但也因此对可靠性、可观测性、自动化这些东西有了执念。

+

相信好的基础设施是沉默的——越少需要人操心,越说明做对了。

+
+
+
+ 8+ + 年经验 +
+
+ 50+ + 生产集群 +
+
+ 10k+ + Pod 日常 +
+
+ 99.9% + SLA 记录 +
+
+
+
+
- + + // Timeline item observer + const tlObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + } + }); + }, { threshold: 0.2 }); + document.querySelectorAll('.timeline-item').forEach(el => tlObserver.observe(el)); + + \ No newline at end of file