Loading...
Loading...
Compare original and translation side by side
MCP Tools:,apply_k8s_manifest,get_k8s_resource,get_k8s_rollout_status,get_k8s_logsdescribe_k8s_resource
MCP工具:,apply_k8s_manifest,get_k8s_resource,get_k8s_rollout_status,get_k8s_logsdescribe_k8s_resource
undefinedundefined
**Best practices:**
- Use multi-stage builds to keep production images small
- Use distroless or minimal base images to reduce attack surface
- Run as non-root user
- Log to `stdout` and `stderr` for Cloud Logging collection
For applications where writing a Dockerfile is not preferred, you can use
[**Cloud Native Buildpacks**](https://buildpacks.io/) to automatically detect
the language and build a container image:
```bash
pack build <image> --builder gcr.io/buildpacks/builder:latest
**最佳实践:**
- 使用多阶段构建以缩小生产镜像体积
- 使用distroless或轻量级基础镜像以减少攻击面
- 以非root用户运行
- 将日志输出到`stdout`和`stderr`,以便Cloud Logging收集
对于不希望编写Dockerfile的应用,可使用[**Cloud Native Buildpacks**](https://buildpacks.io/)自动检测语言并构建容器镜像:
```bash
pack build <image> --builder gcr.io/buildpacks/builder:latestundefinedundefined
**Vulnerability scanning**: Enable automatic scanning in Artifact Registry to
detect issues in base images and dependencies.
```bash
**漏洞扫描**:在Artifact Registry中启用自动扫描,以检测基础镜像和依赖项中的问题。
```bashundefinedundefinedapiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG>
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
type: ClusterIPapiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG>
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
type: ClusterIPundefinedundefined
**kubectl fallback:**
```bash
kubectl apply -f manifests/
kubectl rollout status deployment/my-app
kubectl get pods -l app=my-app
**kubectl备选方案:**
```bash
kubectl apply -f manifests/
kubectl rollout status deployment/my-app
kubectl get pods -l app=my-appgke-scalinggke-observabilitygke-securitygke-reliabilitygke-scalinggke-observabilitygke-securitygke-reliability