从kubernetes的观点来看,OpenShift容器平台(OCP)上的测试等同于OpenShift源代码上的测试吗?

从kubernetes的观点来看,OpenShift容器平台(OCP)上的测试等同于OpenShift源代码上的测试吗?,kubernetes,openshift,redhat,Kubernetes,Openshift,Redhat,这些应用程序被编程为使用kubernetes API 从kubernetes的角度来看,我们是否应该假设openshift容器平台与openshift origin(和kubernetes)的所有标准相匹配 背景 提供的云本地应用程序的兼容性测试可以包括一个大型矩阵。看起来,作为一个基准,如果OCP是一个纯kubernetes发行版,带有附加组件,那么针对它进行测试就很简单,只要您只使用核心kubernetes特性 或者,如果在OCP上提供支持的应用程序意味着您必须测试OCP,那么对我来说,这意

这些应用程序被编程为使用kubernetes API

从kubernetes的角度来看,我们是否应该假设openshift容器平台与openshift origin(和kubernetes)的所有标准相匹配

背景

提供的云本地应用程序的兼容性测试可以包括一个大型矩阵。看起来,作为一个基准,如果OCP是一个纯kubernetes发行版,带有附加组件,那么针对它进行测试就很简单,只要您只使用核心kubernetes特性


或者,如果在OCP上提供支持的应用程序意味着您必须测试OCP,那么对我来说,这意味着(1)应用程序使用OCP功能,或者(2)应用程序使用kube功能,这可能在OCP中无法正常工作,这应该被视为一个bug。

在实践中,您应该能够考虑OpenShift容器平台(OCP)与OKD(以前称为原点)相同。这是因为它实际上是相同的软件和设置

在将这两种情况与普通的库伯内特进行比较时,有几件事需要记住

Kubernetes的OpenShift发行版被设置为一个多租户系统,在普通用户和管理员之间有明确的区别。这意味着RBAC的设置使得普通用户只能在开箱即用的情况下进行操作。例如,普通用户不能创建影响整个集群的任意资源。他们也不能运行仅在以
root
身份运行时才起作用的映像,因为它们在没有此类权限的默认服务帐户下运行。该默认服务也无法访问RESTAPI。普通用户没有权限运行诸如
root
之类的映像。作为项目管理员的用户可以允许应用程序使用REST API,但它通过REST API所能做的将仅限于它所运行的项目/命名空间

因此,如果您在Kubernetes上开发一个应用程序,您期望您拥有完全的管理权限,并且可以创建您想要的任何资源,或者假设没有RBAC/SCC来限制您的操作,那么在运行它时可能会遇到问题

这并不意味着你不能让它工作,它只是意味着你需要采取额外的步骤,以便你或你的应用程序被授予额外的特权去做它需要的事情

这是人们遇到问题的主要领域,这是因为OpenShift的设置更加安全,以适应许多用户的多租户环境,甚至可以分离不同的应用程序,使它们不会相互干扰

接下来值得一提的是入口。当库伯内特斯第一次出现时,它没有进入的概念。为了填补这个漏洞,OpenShift实现了路由的概念。Ingress只是在很久以后才出现,它是OpenShift中使用Routes所做工作的一部分。这就是说,有些事情你可以用路线做,但我相信你仍然不能用入口做

无论如何,很明显,如果您使用Routes,它只在OpenShift上工作,因为普通的Kubernetes集群只有入口。如果使用入口,则需要使用OpenShift 3.10或更高版本。在3.10中,有一个入口到路由对象的自动映射,因此我认为入口应该可以工作,即使OpenShift实际上使用路由及其haproxy路由器设置在封底下实现入口

显然还有其他不同之处。OpenShift拥有DeploymentConfig,因为Kubernetes最初从未进行过部署。同样,您可以使用DeploymentConfig执行部署无法执行的操作,但支持Kubernetes中的部署对象。DeploymentConfig的一个区别是它如何与OpenShift中的ImageStream对象一起工作,而这在Kubernetes中是不存在的。坚持使用Deployment/StatefulSet/DaemonSet,不要使用OpenShift对象,这些对象是在Kubernetes没有这些功能时创建的,应该没问题

请注意,OpenShift对某些资源类型采取保守的方法,因此默认情况下可能不会启用它们。这适用于仍然被视为阿尔法的事物,或者处于非常早期的发展阶段,并且可能发生变化的事物。即使使用普通的Kubernetes,也应该避免仍在开发中的东西

综上所述,对于核心Kubernetes位,OpenShift与针对Kubernetes的CNCF测试的一致性得到验证。所以,使用它所涵盖的内容,你应该会没事的


实际上,您应该能够将OpenShift容器平台(OCP)视为与OKD(以前称为Origin)相同。这是因为它实际上是相同的软件和设置

在将这两种情况与普通的库伯内特进行比较时,有几件事需要记住

Kubernetes的OpenShift发行版被设置为一个多租户系统,在普通用户和管理员之间有明确的区别。这意味着RBAC的设置使得普通用户只能在开箱即用的情况下进行操作。例如,普通用户不能创建影响整个集群的任意资源。他们也不能运行仅在以
root
身份运行时才起作用的映像,因为它们在没有此类权限的默认服务帐户下运行。该默认服务也无法访问RESTAPI。普通用户没有权限运行诸如
root
之类的映像。作为项目管理员的用户可以允许应用程序使用REST API,但它通过REST API所能做的将仅限于它所运行的项目/命名空间

因此,如果您在Kubernetes上开发一个应用程序,您期望您拥有完全的管理权限,并且可以创建您想要的任何资源,或者假设没有RBAC/SCC限制您的操作,那么在获取它时可能会遇到问题