问题:- 我已经在Kubernetes集群上部署了一个应用程序。应用程序通过连接到客户端域中可用的ldap服务器来使用Active Directory身份验证。从已部署的应用程序(在Kubernetes中),我无法连接到ldap服务器。获取与连接有关的错误。
积分:
1),我在Kubernetes日志中没有看到任何特定的错误。它正在下面给出的asp.net核心代码的else循环内。
2) GKE不在Alias IP模式下运行
3) LDAP服务器不在GCP上。在客户域中。
4):在Kubernetes集群中,我使用的是容器优化的OS,因此无法使用ping来从节点ping LDAP主机。
问题:- 我是否需要在GCP的防火墙规则中添加ldap服务器,还是需要更改任何设置?
应用程序背景:- 应用程序由Angular中开发的前端和asp.net核心中的后端Web api组成。我已经为前端(角度部分)和后端(web api asp.net核心)创建了docker镜像。两个docker镜像都部署在Kubernetes集群中。在登录API响应中,我得到ldap服务器连接相关的错误。在下面给出的代码中,它进入了catch块。
注意:-我已经在GCP服务器(位于客户端域中)上部署了相同的应用程序(没有docker映像),在那里连接ldap服务器时没有出现任何错误。
从侧面检查我做了什么:- 从Kubernetes集群的节点上,我尝试使用ldap服务器执行curl命令。但出现了诸如“ libcurl中不支持或禁用协议“ ldap”的协议”之类的错误。
以下是与ldap服务器连接有关的asp.net Web API核心代码:-
bool isValid = true;
int ldapPort = LdapConnection.DEFAULT_PORT;
System.String ldapHost = _ldapConSettings.Value.ldapHost;
System.String loginDN = (_ldapConSettings.Value.domainName + @"\" + userName);
System.String pass = password;
System.String objectDN = String.Format(_ldapConSettings.Value.objectDN, userName);
System.String name = parameters.UserName;
LdapConnection conn = new LdapConnection();
conn.Connect(ldapHost, ldapPort);
// Authenticate to the server
//conn.Bind(loginDN, pass);
if (!string.IsNullOrEmpty(loginDN))
{
try
{
conn.Bind(loginDN, pass);
isValid = true;
}
catch (Exception ex)
{
isValid = false;
return Json(new ResponseData { Code = "104", Message = "Unable to eastablish connection with active directory.." + ' ' + ex.Message.ToString(), Data = null });
}
}