k8s-helm
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKubernetes & Helm Patterns
Kubernetes & Helm 模式
Helm Chart Structure
Helm Chart 结构
helm/orca-facade/
├── Chart.yaml
├── values.yaml
├── values-dev.yaml
├── values-prod.yaml
├── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── hpa.yaml
│ └── serviceaccount.yaml
└── charts/ # Dependencieshelm/orca-facade/
├── Chart.yaml
├── values.yaml
├── values-dev.yaml
├── values-prod.yaml
├── templates/
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── configmap.yaml
│ ├── secret.yaml
│ ├── hpa.yaml
│ └── serviceaccount.yaml
└── charts/ # 依赖项Chart.yaml
Chart.yaml
yaml
apiVersion: v2
name: orca-facade
description: Orca Facade API Service
type: application
version: 1.0.0
appVersion: "1.0.0"
dependencies:
- name: postgresql
version: "12.x.x"
repository: "https://charts.bitnami.com/bitnami"
condition: postgresql.enabledyaml
apiVersion: v2
name: orca-facade
description: Orca Facade API Service
type: application
version: 1.0.0
appVersion: "1.0.0"
dependencies:
- name: postgresql
version: "12.x.x"
repository: "https://charts.bitnami.com/bitnami"
condition: postgresql.enabledvalues.yaml
values.yaml
yaml
undefinedyaml
undefinedImage configuration
镜像配置
image:
repository: registry.example.com/orca-facade
tag: latest
pullPolicy: IfNotPresent
image:
repository: registry.example.com/orca-facade
tag: latest
pullPolicy: IfNotPresent
Replica configuration
副本配置
replicaCount: 2
replicaCount: 2
Resource limits
资源限制
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
Service configuration
服务配置
service:
type: ClusterIP
port: 80
targetPort: 8080
grpcPort: 8081
service:
type: ClusterIP
port: 80
targetPort: 8080
grpcPort: 8081
Ingress
Ingress配置
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: orca.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: orca-tls
hosts:
- orca.example.com
ingress:
enabled: true
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: orca.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: orca-tls
hosts:
- orca.example.com
Environment variables
环境变量
env:
SPRING_PROFILES_ACTIVE: k8s
SERVER_PORT: "8080"
env:
SPRING_PROFILES_ACTIVE: k8s
SERVER_PORT: "8080"
Secrets (reference external secrets)
密钥(引用外部密钥)
secrets:
DATABASE_URL:
secretName: orca-db-credentials
key: url
JWT_SECRET:
secretName: orca-jwt
key: secret
secrets:
DATABASE_URL:
secretName: orca-db-credentials
key: url
JWT_SECRET:
secretName: orca-jwt
key: secret
Health checks
健康检查
health:
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
health:
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
Autoscaling
自动扩缩容
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
PostgreSQL subchart
PostgreSQL 子Chart
postgresql:
enabled: false # Use external database
undefinedpostgresql:
enabled: false # 使用外部数据库
undefinedDeployment Template
部署模板
yaml
undefinedyaml
undefinedtemplates/deployment.yaml
templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "orca-facade.selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
labels:
{{- include "orca-facade.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ include "orca-facade.serviceAccountName" . }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.targetPort }}
protocol: TCP
- name: grpc
containerPort: {{ .Values.service.grpcPort }}
protocol: TCP
env:
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }}
{{- range $key, $secret := .Values.secrets }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: {{ $secret.secretName }}
key: {{ $secret.key }}
{{- end }}
{{- with .Values.health.livenessProbe }}
livenessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.health.readinessProbe }}
readinessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
undefinedapiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "orca-facade.selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
labels:
{{- include "orca-facade.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ include "orca-facade.serviceAccountName" . }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.targetPort }}
protocol: TCP
- name: grpc
containerPort: {{ .Values.service.grpcPort }}
protocol: TCP
env:
{{- range $key, $value := .Values.env }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }}
{{- range $key, $secret := .Values.secrets }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: {{ $secret.secretName }}
key: {{ $secret.key }}
{{- end }}
{{- with .Values.health.livenessProbe }}
livenessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.health.readinessProbe }}
readinessProbe:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
undefinedService Template
服务模板
yaml
undefinedyaml
undefinedtemplates/service.yaml
templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
- port: {{ .Values.service.grpcPort }}
targetPort: grpc
protocol: TCP
name: grpc
selector:
{{- include "orca-facade.selectorLabels" . | nindent 4 }}
undefinedapiVersion: v1
kind: Service
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
- port: {{ .Values.service.grpcPort }}
targetPort: grpc
protocol: TCP
name: grpc
selector:
{{- include "orca-facade.selectorLabels" . | nindent 4 }}
undefinedConfigMap Template
ConfigMap 模板
yaml
undefinedyaml
undefinedtemplates/configmap.yaml
templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "orca-facade.fullname" . }}-config
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
data:
application.yaml: |
spring:
profiles:
active: k8s
server:
port: {{ .Values.service.targetPort }}
management:
endpoints:
web:
exposure:
include: health,info,prometheus
undefinedapiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "orca-facade.fullname" . }}-config
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
data:
application.yaml: |
spring:
profiles:
active: k8s
server:
port: {{ .Values.service.targetPort }}
management:
endpoints:
web:
exposure:
include: health,info,prometheus
undefinedHelper Templates
辅助模板
yaml
undefinedyaml
undefinedtemplates/_helpers.tpl
templates/_helpers.tpl
{{- define "orca-facade.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- define "orca-facade.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- define "orca-facade.labels" -}}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app.kubernetes.io/name: {{ include "orca-facade.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{- define "orca-facade.selectorLabels" -}}
app.kubernetes.io/name: {{ include "orca-facade.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
undefined{{- define "orca-facade.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- define "orca-facade.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- define "orca-facade.labels" -}}
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app.kubernetes.io/name: {{ include "orca-facade.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{- define "orca-facade.selectorLabels" -}}
app.kubernetes.io/name: {{ include "orca-facade.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
undefinedHorizontalPodAutoscaler
HorizontalPodAutoscaler 模板
yaml
undefinedyaml
undefinedtemplates/hpa.yaml
templates/hpa.yaml
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "orca-facade.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
undefined{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "orca-facade.fullname" . }}
labels:
{{- include "orca-facade.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "orca-facade.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
undefinedHelm Commands
Helm 命令
bash
undefinedbash
undefinedInstall/Upgrade
安装/升级
helm upgrade --install orca-facade ./helm/orca-facade
-f ./helm/orca-facade/values-prod.yaml
--namespace orca
--create-namespace
-f ./helm/orca-facade/values-prod.yaml
--namespace orca
--create-namespace
helm upgrade --install orca-facade ./helm/orca-facade
-f ./helm/orca-facade/values-prod.yaml
--namespace orca
--create-namespace
-f ./helm/orca-facade/values-prod.yaml
--namespace orca
--create-namespace
Dry run
试运行
helm upgrade --install orca-facade ./helm/orca-facade
--dry-run --debug
--dry-run --debug
helm upgrade --install orca-facade ./helm/orca-facade
--dry-run --debug
--dry-run --debug
Template only (see generated YAML)
仅生成模板(查看生成的YAML)
helm template orca-facade ./helm/orca-facade -f values-prod.yaml
helm template orca-facade ./helm/orca-facade -f values-prod.yaml
Lint chart
检查Chart语法
helm lint ./helm/orca-facade
helm lint ./helm/orca-facade
Rollback
回滚
helm rollback orca-facade 1 --namespace orca
helm rollback orca-facade 1 --namespace orca
History
历史记录
helm history orca-facade --namespace orca
helm history orca-facade --namespace orca
Uninstall
卸载
helm uninstall orca-facade --namespace orca
undefinedhelm uninstall orca-facade --namespace orca
undefinedkubectl Commands
kubectl 命令
bash
undefinedbash
undefinedGet pods
获取Pod
kubectl get pods -n orca -l app.kubernetes.io/name=orca-facade
kubectl get pods -n orca -l app.kubernetes.io/name=orca-facade
Logs
查看日志
kubectl logs -n orca -l app.kubernetes.io/name=orca-facade --tail=100 -f
kubectl logs -n orca -l app.kubernetes.io/name=orca-facade --tail=100 -f
Describe deployment
查看部署详情
kubectl describe deployment orca-facade -n orca
kubectl describe deployment orca-facade -n orca
Port forward for local testing
端口转发用于本地测试
kubectl port-forward -n orca svc/orca-facade 8080:80
kubectl port-forward -n orca svc/orca-facade 8080:80
Exec into pod
进入Pod内部
kubectl exec -it -n orca deployment/orca-facade -- /bin/sh
kubectl exec -it -n orca deployment/orca-facade -- /bin/sh
Apply manually
手动应用配置
kubectl apply -f k8s/configmap.yaml -n orca
undefinedkubectl apply -f k8s/configmap.yaml -n orca
undefined