Files
geo/deploy/k3s/official-placeholder.yaml
2026-06-13 14:36:58 +08:00

498 lines
13 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: official-placeholder-html
labels:
app.kubernetes.io/name: official-placeholder
data:
index.html: |
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="省心推,面向企业增长团队的智能内容与获客运营工具。">
<title>省心推 - 智能内容与获客运营</title>
<style>
:root {
color-scheme: light;
--ink: #111827;
--muted: #697386;
--line: #d8dee8;
--paper: #ffffff;
--soft: #f5f7fb;
--accent: #126d5a;
--accent-dark: #0a4238;
--warm: #b28b51;
}
html,
body {
margin: 0;
min-height: 100%;
background: var(--paper);
}
body {
min-height: 100vh;
position: relative;
color: var(--ink);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
"Microsoft YaHei", sans-serif;
overflow-x: hidden;
}
a {
color: inherit;
}
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
background:
linear-gradient(90deg, rgba(17, 24, 39, 0.045) 1px, transparent 1px),
linear-gradient(180deg, rgba(17, 24, 39, 0.035) 1px, transparent 1px),
radial-gradient(circle at 78% 14%, rgba(18, 109, 90, 0.12), transparent 28%),
radial-gradient(circle at 18% 78%, rgba(178, 139, 81, 0.12), transparent 30%);
background-size: 72px 72px, 72px 72px, auto, auto;
}
.page {
min-height: 100vh;
display: grid;
grid-template-rows: auto 1fr auto;
position: relative;
}
header,
main,
footer {
width: min(1100px, calc(100% - 40px));
margin: 0 auto;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 26px 0 18px;
border-bottom: 1px solid var(--line);
}
.brand {
display: flex;
align-items: baseline;
gap: 12px;
}
.brand strong {
font-size: 24px;
letter-spacing: 0;
}
.brand span,
.phone-label {
color: var(--muted);
font-size: 14px;
}
.phone {
display: inline-flex;
align-items: center;
min-height: 38px;
padding: 0 14px;
border: 1px solid rgba(18, 109, 90, 0.28);
border-radius: 6px;
background: rgba(255, 255, 255, 0.78);
color: var(--accent-dark);
font-weight: 700;
text-decoration: none;
}
main {
display: grid;
grid-template-columns: minmax(0, 1fr) 340px;
gap: 64px;
align-items: center;
padding: 70px 0 54px;
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 10px;
margin: 0 0 22px;
color: var(--accent);
font-size: 13px;
font-weight: 700;
letter-spacing: 0.08em;
}
.eyebrow::before {
content: "";
width: 38px;
height: 1px;
background: var(--accent);
}
h1 {
margin: 0;
max-width: 760px;
font-size: 64px;
line-height: 1.04;
letter-spacing: 0;
}
.lead {
max-width: 680px;
margin: 26px 0 0;
color: var(--muted);
font-size: 19px;
line-height: 1.85;
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 14px;
margin-top: 36px;
}
.primary {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 48px;
padding: 0 20px;
border-radius: 6px;
background: var(--ink);
color: #fff;
font-weight: 700;
text-decoration: none;
}
.status {
display: inline-flex;
align-items: center;
min-height: 48px;
color: var(--muted);
font-size: 15px;
}
.panel {
position: relative;
overflow: hidden;
border: 1px solid rgba(216, 222, 232, 0.92);
border-radius: 8px;
background: rgba(255, 255, 255, 0.82);
padding: 26px;
box-shadow: 0 24px 60px rgba(17, 24, 39, 0.08);
}
.panel::before {
content: "";
position: absolute;
top: 0;
right: 0;
left: 0;
height: 3px;
background: linear-gradient(90deg, var(--accent), var(--warm));
}
.panel-title {
margin: 0;
color: var(--muted);
font-size: 13px;
font-weight: 700;
letter-spacing: 0.08em;
}
.launch {
margin: 18px 0 0;
font-size: 38px;
line-height: 1.15;
font-weight: 800;
}
.panel-copy {
margin: 18px 0 0;
color: var(--muted);
font-size: 15px;
line-height: 1.8;
}
.feature-list {
display: grid;
gap: 12px;
margin: 24px 0 0;
padding: 0;
list-style: none;
}
.feature-list li {
display: flex;
align-items: center;
gap: 10px;
color: var(--muted);
font-size: 15px;
}
.feature-list li::before {
content: "";
width: 7px;
height: 7px;
border-radius: 50%;
background: var(--accent);
}
footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 22px 0;
border-top: 1px solid var(--line);
color: var(--muted);
font-size: 13px;
text-align: center;
}
footer a {
color: inherit;
text-decoration: none;
}
@media (max-width: 860px) {
main {
grid-template-columns: 1fr;
gap: 30px;
padding-top: 40px;
}
h1 {
font-size: 42px;
}
.lead {
font-size: 17px;
}
header {
align-items: flex-start;
flex-direction: column;
}
footer {
justify-content: center;
}
}
@media (max-width: 560px) {
header,
main,
footer {
width: min(100% - 28px, 1120px);
}
h1 {
font-size: 36px;
}
}
</style>
</head>
<body>
<div class="page">
<header>
<div class="brand">
<strong>省心推</strong>
<span>智能内容与获客运营</span>
</div>
<a class="phone" href="tel:17788409108">17788409108</a>
</header>
<main>
<section>
<p class="eyebrow">MODERN GROWTH PLATFORM</p>
<h1>智能内容运营,让获客增长更省心。</h1>
<p class="lead">
省心推将为企业提供智能内容、品牌曝光与获客运营能力。
从内容策划到发布协同,帮助团队更高效地触达客户、沉淀线索。
</p>
<div class="actions">
<a class="primary" href="tel:17788409108">联系 17788409108</a>
<span class="status">企业内容增长服务</span>
</div>
</section>
<aside class="panel">
<p class="panel-title">PRODUCT FOCUS</p>
<p class="launch">内容运营<br>获客增长</p>
<p class="panel-copy">
面向企业营销与运营场景,整合智能生成、渠道协同和线索跟进能力。
</p>
<ul class="feature-list">
<li>智能内容运营</li>
<li>品牌曝光管理</li>
<li>企业获客增长</li>
</ul>
</aside>
</main>
<footer>
<span>© 2026 省心推</span>
<span class="phone-label">咨询电话:17788409108</span>
<a href="https://beian.miit.gov.cn/" rel="noopener noreferrer">皖ICP备2026013039号-2</a>
</footer>
</div>
</body>
</html>
default.conf: |
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
add_header Cache-Control "no-store, no-cache, must-revalidate" always;
try_files $uri /index.html;
}
}
---
apiVersion: v1
kind: Service
metadata:
name: official-placeholder
labels:
app.kubernetes.io/name: official-placeholder
spec:
selector:
app.kubernetes.io/name: official-placeholder
ports:
- name: http
port: 80
targetPort: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: official-placeholder
labels:
app.kubernetes.io/name: official-placeholder
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: official-placeholder
template:
metadata:
labels:
app.kubernetes.io/name: official-placeholder
spec:
containers:
- name: nginx
image: docker.io/geo-rankly/frontend:bb2ad3f6
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 3
periodSeconds: 10
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: 10m
memory: 16Mi
limits:
cpu: 100m
memory: 64Mi
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html/index.html
subPath: index.html
readOnly: true
- name: html
mountPath: /etc/nginx/http.d/default.conf
subPath: default.conf
readOnly: true
volumes:
- name: html
configMap:
name: official-placeholder-html
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: official-placeholder
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
ingressClassName: traefik
rules:
- host: shengxintui.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: official-placeholder
port:
number: 80
- host: www.shengxintui.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: official-placeholder
port:
number: 80
tls:
- hosts:
- shengxintui.com
- www.shengxintui.com
secretName: official-placeholder-tls
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: official-placeholder-http
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
ingressClassName: traefik
rules:
- host: shengxintui.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: official-placeholder
port:
number: 80
- host: www.shengxintui.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: official-placeholder
port:
number: 80