随着容器化技术走向主流,许多人正在发现容器技术的新应用和用例。Jan Pazdziora 是红帽公司的高级首席软件工程师,当他想容器化 FreeIPA 时,他遇到了传统 Docker 的局限性。这促使他创建了 Docker-freeipa 开源项目。
Jan 将在今年的 欧洲 LinuxCon 上就该项目发表演讲。Jan 在开源领域拥有丰富的经验,我们进行了富有成效的讨论,主题涵盖了 Docker 的复杂用例、开源软件的整体情况以及 Perl 的未来。
您的演讲主题“容器中的复杂应用”既引人入胜又有些令人困惑,因为我们通常不期望 Docker 以这种方式使用。您能详细介绍一下吗?
在探索容器技术以及将其用于并行安装 FreeIPA 以进行测试和其他目的的可能性时,我当然尝试“按书本行事”,并将各个部分正确地隔离到单独的容器中。然而,该服务器由多个互连的组件组成,配置了许多操作系统级别的组件和库。例如,Kerberos 配置用于验证各个部分之间的通信,因此所有部分都需要访问它。我需要将许多配置目录和文件绑定挂载到许多容器中,这对于普通的 Docker 来说很容易出错。
此外,配置程序 ipa-server-install 用于设置所有组件,通过使设置一致且易于从管理员的角度实现,在 FreeIPA 项目的整体价值中发挥着重要作用。它假设所有部件都在单台机器上配置和运行。我们可以等到容器化工作得到重构以支持在多台主机上安装,使用 Docker 工具重写逻辑,或者直接使用配置工具并调整容器内的环境。由于设置工具在启用各个服务和重启它们时大量使用 systemctl 调用,因此在容器中使用 systemd 是最初的计划。
最终,我们使用了一个自定义的 systemctl 来模拟我们需要的服务所需的 systemd 功能。这使我们能够最大限度地控制,同时保持解决方案的精简。
您如何看待容器化的现状?在容器被视为任务关键型和企业就绪之前,还需要做些什么?
这取决于用例。对于某些用例,容器已经存在,组织和公司正在使用它们。对于某些部署,可能需要额外的管道来让构建解决方案的人员能够轻松灵活地控制容器和主机环境的组合,以实现安全设置。重要的是要记住,容器实际上是多种不同的技术,并非所有技术都可以在特定的部署中使用。
您可以拥有容器化的应用程序,它仅使用 cgroups 来设置资源限制,使用文件系统命名空间来使用特定的库或 JVM 版本,并且可能使用 SELinux 进行容器隔离,但不需要 UID 或 PID 命名空间。与虚拟机不同,容器的边界可以更灵活,有时会变得模糊。
Docker-freeipa 的工作实际上是使容器企业就绪工作的一部分——将身份管理引入容器化环境——而不仅仅是服务器端能够在容器中运行 FreeIPA。该项目还包含带有系统安全服务守护进程 (SSSD) 的客户端分支,我们正在积极探索在容器中消费外部身份和身份验证的方法。
Docker 安全性是一个巨大的问题。为了弥补 Docker 中的安全漏洞,还需要做些什么?
我认为一些问题源于人们将 Linux 容器技术和 Docker 容器视为功能上等同于虚拟机,只是占用空间更小,而不是增强型的 chroot 环境。他们随意运行基于从各种来源下载的随机镜像的进程,这是由于他们认为易于使用造成的,这需要通过教育和提高意识来解决,并通过工具使其更加明显地了解正在下载和运行的内容以及方式。要深入了解 Docker 的安全方面,Dan Walsh 更具资格,因为他积极参与 Docker 的内部工作。
正如您所说,Docker 的传统方法是将每个组件部署在独立的容器中并将它们链接在一起。随着应用程序变得越来越复杂,这正在成为一种限制,而这正是您试图通过 Docker-freeipa 解决的问题。您认为是否存在“Docker 编排服务”的空间,它可以捆绑微型容器并创建超级容器?
如果一个应用程序由四个容器组成,并且您需要所有容器都运行才能为用户提供一些价值,那么人们将寻找方法来描述容器之间的关系,通过比 Docker run 命令的 --link 和 -v 选项更持久的方式。Docker Compose、Kubernetes Pod 或类似项目可能是答案。
编排本身是否应该作为容器运行,或者只是文件中的定义和某些守护进程的运行时状态,我不敢妄加推测。
您在身份管理领域拥有丰富的经验。传统上由专有产品主导的开源解决方案,例如 OpenAM 和 OpenIDM,一直在缓慢地产生影响。开源身份管理是否已准备好投入生产?您是否有关于开源 IM 如何部署的示例?
身份管理软件有不同的级别。人们通常会混淆它们,因为这是一个复杂的领域。OpenAM 和 OpenIDM 更多的是基础设施和云之上的 Web 应用程序级技术。我不评论这些技术及其企业就绪程度。最好听取那些与这些项目密切合作的人的意见。
底层的基础设施和云需要平台级身份管理功能。在 Windows 的情况下,这传统上是通过 Active Directory 和整个相关集成组件产品产品生态系统来解决的。在开源世界中,FreeIPA 可以通过跨林 Kerberos 信任与 Active Directory 很好地集成,从而承担起这一角色。它绝对可以投入生产,并且已部署在多个生产环境中。红帽在红帽企业 Linux 中提供了一个受支持的版本,称为 身份管理 (IdM)。在过去的几年里,我们已经看到 Fedora、红帽企业 Linux 和 CentOS 平台上的生产部署稳步增长。
组织使用它们来集中管理对 Linux 机器和在其上运行的服务的访问,有时用于数万用户。安装在主机上的客户端 SSSD 然后使用 PAM(可插拔身份验证模块)和其他本地机制来执行策略。通常,经过身份验证的用户来自 Active Directory 域,IdM 解决方案桥接了这两个世界,使企业可以自由地使用最适合该任务的技术来部署其基础设施的各个部分。
您也是 CPAN 的贡献者。Perl 以其低门槛吸引了许多程序员,并被理所当然地称为“互联网的胶带”。关于 Perl 不再相关且正在消亡的语言的说法很多。作为长期的倡导者,您对 Perl 的未来有何看法?
借助云服务以及容器化,解决方案可以并且有望创建为各种组件的组合,这些组件能够使用一些开放协议或格式来处理和交换数据。虽然我不希望再次看到像 CGI 时代那样随处可见 Perl,但用 Perl 5(或 6?)编写的组件可以在未来几十年内生存并提供价值。
不时有使用该语言的新项目启动,并且很高兴不时在人们的 git 仓库中看到旧的友好代码。也许下一个巨大的社交网络现在正在用 Perl 开发。
您能谈谈您在红帽的角色吗?作为您的正式工作的一部分,您有多少时间花在其他开源项目贡献上?
在红帽,我负责将身份管理技术集成到我们的产品中。这使我们的客户能够使用来自外部身份管理系统(如 IdM 或 Active Directory)的用户,或者通过使用 SAML 或其他协议的联合身份验证来自外部组织的用户,通过单点登录、中央访问控制或类似的预期可能性来使用这些产品。另一部分是复杂系统的安全性,我们尝试避免将密码用于各种系统和数据库帐户,并寻找使用更易于维护的机制的方法——GSS-API 和 Kerberos 或 SSL 证书。
由于红帽的理念是“上游优先”,并且我们的产品是开源的,因此我们显然首先尝试在上游项目中启用这些功能。我可能在其他开源项目中没有大量的贡献,因为我最近专注于布道、启用和帮助其他人做出这些贡献,而不是自己提交拉取请求。但我的磁盘上有超过 80 个项目的 git 克隆和 svn 检出,我每天都在使用它们。
系列
本文是都柏林 LinuxCon 的 欧洲 LinuxCon 系列 的一部分。欧洲 LinuxCon 是开发人员、系统管理员、架构师和各级技术人才聚集在一起,在一个屋檐下进行教育、协作和解决问题,以进一步发展 Linux 平台的场所。欧洲 LinuxCon 将于 2015 年 10 月 5 日至 7 日在爱尔兰都柏林举行.
2 条评论