每次我希望公开新的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 patch在ports下追加另一个端口定义。
- 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所需的更复杂的更新。
感谢您给予的任何帮助。谢谢
发布于 2021-04-23 18:04:21
正如David在评论中提到的,最好将每个更改保持在版本控制之下。
但是如果你真的需要这样做,下面是命令:
kubectl patch ds -n ingress nginx-ingress-microk8s-controller --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value":{"containerPort":1234,"name":"my-port-1234","hostPort":1234,"protocol":"TCP"}}]'k8s文档:update-api-object-kubectl-patch中介绍了补丁命令,rfc6902中介绍了json类型补丁的详细信息。
发布于 2021-04-23 05:30:54
尝试执行以下命令:
kubectl patch ds/name --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/ports/1", "value":{"containerPort":8888,"name":"http"}}]'https://stackoverflow.com/questions/67216042
复制相似问题