内部开发者平台(或 IDP)是使开发团队能够更快、更轻松、更一致地交付应用程序的基础设施。Kubernetes 本身是一个功能强大的平台,但它引入了太多复杂性和功能,因此不能简单地将其作为 IDP 交给开发团队。若要期望他们能取得成功,非常重要的一点是要设置一些防护措施,使他们能够有效地使用 K8s,而不会增加与可靠性、成本效益和安全性相关的风险。

虽然 Kubernetes 本身并不适合作为 IDP,但它是构建 IDP 的坚实基础。Kubernetes 为平台工程师提供了许多工具,例如,它可以为开发人员构建 IDP、提供更简化的构建和运行应用程序的方式。因此需要考虑的问题是,如何构建一个既能为开发人员提供良好体验,又不会妨碍部署到生产环境的平台。通过使用策略和治理、基于角色的访问控制(RBAC)和默认网络策略应用安全措施,有一些很好的方法可以防止集群中发生错误。

Kubernetes 平台的构成

基于 Kubernetes 的 IDP 不仅包括 Kubernetes,还包括开发人员所需的工具和流程。作为 Kubernetes 的安全限制,IDP 还需要您希望在 Kubernetes 中建立的策略和治理。这种组合使您能够为开发人员提供一条 "黄金路径",让他们能够更快地部署应用程序。Kubernetes 平台由四个主要部分组成:

插件

插件是提供默认“开箱即用”功能所需的工具,可扩展 Kubernetes 的功能,包括 DNS、TLS、Ingress、日志记录、跟踪等。这些工具可以是开源项目也可以是来自供应商的软件。

创建治理

Kubernetes 治理是创建策略、程序和一组标准策略的过程,用于定义和实施 Kubernetes 平台中的最佳实践,以及资源管理、调度、升级和基于角色的访问控制。

启用部署(CI/CD)

这是应用程序从代码进入平台的方式。在 IDP 中,您为开发人员创建了一条 "黄金路径”,让他们能更轻松地将新应用程序和服务部署到平台中,同时保持高效安全

提供反馈

IDP 的一个重要组成部分是向开发团队提供及时反馈。平台的这一部分必须包括快速检测问题通知,并与他们已经使用的工具集成。同时还应在代码审查过程中为开发人员提供建议的修复选项。

治理和策略:三个阶段

当您考虑如何在 Kubernetes 中应用治理和策略时,这确实是一个过程。首先,您需要选择或创建必要的策略。接下来,您需要一种自动的方式来识别违反政策的行为,然后指导如何修复这些违反策略的行为。最后,需要能够自动阻止这些违规行为进入集群。

团队在开始部署 Kubernetes 的时候往往没有遇到什么初始问题,也就是说在这个阶段开发团队在内容、编码和交付应用程序和服务时没有什么明显的问题。但平台团队后来发现开发团队忽略了一些重要的安全措施来帮助维护安全并持续应用最佳实践。因为在开发者平台中,开发人员可以轻松地在需要时部署他们想要的内容。除非团队中有人返回并手动检查所有设置,否则在出现问题之前可能不会有任何意识。

可以使用开源策略引擎(如 Polaris 或 Open Policy Agent (OPA))在 Kubernetes 中自动应用策略。使用类似的解决方案,您可以确保您的配置与环境中的策略保持一致,帮助您保持一切顺利运行。

选择策略

在开始使用策略执行与成本效益、安全性和可靠性相关的 Kubernetes 最佳实践时,开发人员往往不知道从哪里开始,也不知道应该关注什么。最好的入门方法是确定什么对您来说最重要,这就是创建策略的方法。如果成本对你来说是最重要的,那么就把重点放在影响成本的策略上,如资源请求和限制。如果安全是你的首要关注点,那就处理以 root 身份运行的容器或生成网络策略。我们的建议是从小处着手,挑选一两个能实现目标的策略,然后全面实施这些策略。

识别、修复和阻止违规行为

接下来,需要找出当前集群中违反策略的地方,并开始逐一纠正这些问题。修复关键类别中的问题后,您就可以开始在访问时执行策略了。当开始执行策略并成功阻止违反策略的行为之后就可以放心了,因为这些问题不会再次弹出,你可以对要强制执行的下一组策略重复该过程。随之也就变得更加高效和安全了。

构建强大的 IDP

对于内部开发人员平台而言,应用 Kubernetes 治理和策略使您能够高效地管理资源,帮助控制成本,确保应用程序获得最佳运行所需的资源。它还能帮助您通过控制访问和实施最佳实践来确保安全性和合规性,并通过建立标准、自动化的应用部署和扩展流程来提高可靠性和弹性。稳健的 Kubernetes 治理和策略是构建安全、高效、可靠的内部开发人员平台的关键组成部分,可满足开发人员和整个组织的需求。

参考链接:

https://cloudnativenow.com/features/enable-a-great-kubernetes-developer-platform-experience/

如何基于 Kubernetes 实现优质开发者平台体验?的更多相关文章

  1. 涂鸦基于OAuth2在开发者平台上的探索与实践

    前言 开发授权(OAuth2)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资料(如照片.视频.联系人列表),而无需将用户名和密码提供给第三方应用. OAuth2允许用户提供一 ...

  2. 云无关、桌面端、基于Kubernetes的平台Otomi

    一.Otomi介绍 Otomi官网:https://otomi.io/ Otomi-core核心模块Github地址:https://github.com/redkubes/otomi-core Ot ...

  3. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  4. 白瑜庆:知乎基于Kubernetes的kafka平台的设计和实现

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 自我介绍 我是知乎的技术中台工程师,现在是负责知乎的存储相关组件.我的分享主要基于三个,一个是简单 ...

  5. 腾讯基于Kubernetes的企业级容器云平台GaiaStack (转)

    GaiaStack介绍 GaiaStack是腾讯基于Kubernetes打造的容器私有云平台.这里有几个关键词: 腾讯:GaiaStack可服务腾讯内部所有BG的业务: Kubernetes:Gaia ...

  6. 基于kubernetes自研容器管理平台的技术实践

    一.容器云的背景 伴随着微服务的架构的普及,结合开源的Dubbo和Spring Cloud等微服务框架,宜信内部很多业务线逐渐了从原来的单体架构逐渐转移到微服务架构.应用从有状态到无状态,具体来说将业 ...

  7. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-1 Jenkins的Master-Slave分布式构建 什么是Master-Slave分布式构建 Jenkins的Master-S ...

  8. 基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2

    基于Kubernetes/K8S构建Jenkins持续集成平台(上)-2 Kubernetes实现Master-Slave分布式构建方案 传统Jenkins的Master-Slave方案的缺陷 Mas ...

  9. 基于Kubernetes/K8S构建Jenkins持续集成平台(下)

    基于Kubernetes/K8S构建Jenkins持续集成平台(下) Jenkins-Master-Slave架构图回顾: 安装和配置NFS NFS简介 NFS(Network File System ...

  10. 基于kubernetes平台微服务的部署

    基于kubernetes平台微服务的部署 首先下载插件: kubernetes Continuous Deploy 然后去找 .kube/ 里的config 复制里面的内容 去添加凭据: 然后就是脚本 ...

随机推荐

  1. python学习之-------OS 文件夹和文件操作

    # OS模块 :查看一个文件夹下所有文件,这个文件夹有文件夹,不能用walk# -- coding: UTF-8 --import osimport sys#C:\Users\Administrato ...

  2. C++面试八股文:C++中指针、引用、解引用和取地址有什么不同?

    某日小二参加XXX科技公司的C++工程师开发岗位2面: 面试官:指针.引用.解引用和取地址是C++中的重要概念,请问它们在语法和语义上有所不同? 小二:指针是一个变量,它存储了一个内存地址. 小二:引 ...

  3. Python生成器深度解析:构建强大的数据处理管道

    前言 生成器是Python的一种核心特性,允许我们在请求新元素时再生成这些元素,而不是在开始时就生成所有元素.它在处理大规模数据集.实现节省内存的算法和构建复杂的迭代器模式等多种情况下都有着广泛的应用 ...

  4. (翻译)Rust中的设计模式(1-Use borrowed types for arguments)

    引言 设计模式 在开发程序中,我们必须解决许多问题.一个程序可以看作是一个问题的解决方案.它也可以被看作是许多不同问题的解决方案的集合.所有这些解决方案共同解决一个更大的问题. 在Rust中的设计模式 ...

  5. CKS 考试题整理 (09)-日志审计 log audit

    Task 在cluster中启用审计日志.为此,请启用日志后端,并确保: 日志存储在 /var/log/kubernetes/audit-logs.txt 日志文件能保留 10 天 最多保留 2 个旧 ...

  6. 2023-06-16:给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」。 所谓「表现良好的时间

    2023-06-16:给你一份工作时间表 hours,上面记录着某一位员工每天的工作小时数. 我们认为当员工一天中的工作小时数大于 8 小时的时候,那么这一天就是「劳累的一天」. 所谓「表现良好的时间 ...

  7. 花了一周时间,总算把mysql的加锁搞清楚了,再也不怕间隙锁和next-key了

    接触mysql都知道在mysql中有很多锁,共享锁(S).排他锁(X).间隙锁(gap).next-key,当然还有意向锁.表锁等.今天不讲别的,专门来看下innodb引擎下的锁是什么样子的. 现在有 ...

  8. go使用 github.com/influxdata/influxdb/client/v2 写数据到 influxdb

    转载请注明出处: 接入示例 使用 github.com/influxdata/influxdb/client/v2 依赖包向 InfluxDB 写入数据的示例代码: package main impo ...

  9. pixel 3xl 编译安卓与内核并烧入全流程(含安卓源码部分编译)

    pixel 3xl 编译安卓与内核并烧入全流程(含安卓源码部分编译) 目录 pixel 3xl 编译安卓与内核并烧入全流程(含安卓源码部分编译) 环境搭建 安卓源码下载 一.准备下载环境 1.安装Py ...

  10. 2023-07-06:RabbitMQ中的AMQP是什么?

    2023-07-06:RabbitMQ中的AMQP是什么? 答案2023-07-06: AMQP AMQP(Advanced Message Queuing Protocol)是一个应用层协议的开放标 ...