【发布时间】:2021-07-16 20:10:22
【问题描述】:
每次我希望公开新的 TCP 端口时,我都需要修补我的 nginx-ingress 守护程序集。我查看了文档,但无法理解执行补丁的正确 kubectl 补丁语法。 yaml 的摘录如下:
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
name: nginx-ingress-microk8s
template:
metadata:
creationTimestamp: null
labels:
name: nginx-ingress-microk8s
spec:
containers:
- args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf
- --default-backend-service=ingress/custom-default-backend
- --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf
- --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf
- --ingress-class=public
- ' '
- --publish-status-address=127.0.0.1
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: k8s.gcr.io/ingress-nginx/controller:v0.44.0
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- /wait-shutdown
livenessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 10254
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
name: nginx-ingress-microk8s
ports:
- containerPort: 80
hostPort: 80
name: http
protocol: TCP
- containerPort: 443
hostPort: 443
name: https
protocol: TCP
- containerPort: 10254
hostPort: 10254
name: health
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: 10254
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
resources: {}
我想使用 kubectl 补丁在端口下附加另一个端口定义,即
- containerPort: 1234
hostPort: 1234
name: my-port-1234
protocol: TCP
使用以下方法修补配置映射很简单:
kubectl patch configmap nginx-ingress-tcp-microk8s-conf -n ingress --type merge -p '{"data":{"1234":"namespace1/api-connect:1234"}}'
但我不明白如何修改命令以应对 Daemonset 所需的更复杂的更新。
感谢您提供的任何帮助。谢谢
【问题讨论】:
-
我通常建议编辑原始 YAML,将其提交到源代码管理,然后使用
kubectl apply -f将其发送到集群中。这既可以为您提供已安装内容的持久记录,又可以避免必须找出kubectl patch的特殊语法。
标签: kubernetes kubectl nginx-ingress