面临以下问题:我需要在某些 Pod 上添加搜索域,以便能够与无头服务通信。Kubernetes 文档建议设置一个 dnsConfig 并设置其中的所有内容。这就是我所做的。此外,还有一个限制,即只能设置 6 个搜索域。清单的一部分:
spec:
hostname: search
dnsPolicy: ClusterFirst
dnsConfig:
searches:
- indexer.splunk.svc.cluster.local
containers:
- name: search
Run Code Online (Sandbox Code Playgroud)
不幸的是,它没有任何效果,并且目标 pod 上的 resolv.conf 文件不包含此搜索域:
search splunk.svc.cluster.local svc.cluster.local cluster.local us-east4-c.c.'project-id'.internal c.'project-id'.internal google.internal
nameserver 10.39.240.10
options ndots:5
Run Code Online (Sandbox Code Playgroud)
快速查看此配置后,我发现当前指定了 6 个搜索域,这可能就是未添加新搜索域的原因。您可以手动添加,一切都会正常,但这不是我想要实现的目标。
您有什么想法如何绕过这个限制吗?
PS 将 dnsPolicy 设置为 None 也不是一个选项,因为设置预启动挂钩来添加我的搜索区域。
---
# Search-head deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: search
namespace: splunk
labels:
app: splunk
spec:
replicas: 1
selector:
matchLabels:
app: splunk
template:
metadata:
labels:
app: splunk
spec:
hostname: search …Run Code Online (Sandbox Code Playgroud) google-cloud-platform kubernetes google-kubernetes-engine kubernetes-pod
我正在使用 kubernetes/ingress-nginx。任务是使用 nginx 入口从客户端证书中提取 CN 字段。我搜索了一段时间,找到了解决方案:
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "";
~CN=(?<CN>[^/,\"]+) $CN;
}
Run Code Online (Sandbox Code Playgroud)
但我无法将此代码改编为 nginx 入口。这就是我目前拥有的代码,但它不起作用。
nginx.ingress.kubernetes.io/http-snippets: |
map $ssl_client_s_dn $ssl_client_s_dn_cn {
default "";
~CN=(?<CN>[^/,\"]+) $CN;
}
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Remote-User $ssl_client_s_dn_cn;
Run Code Online (Sandbox Code Playgroud)
可能有人遇到过它并且知道如何正确调整它,因为我没有想法。
如果您知道更优雅的方法,请在这里分享您的知识。
提前致谢。