CNCF 近期动向

线上版 KubeCon 确认举办时间

上周,CNCF 宣布将于 2020 年 7 月 30 日- 8 月 1 日举办为期三天的线上技术峰会,共同探讨云原生计算的未来和方向,这也是 CNCF 第一次举办 KubeCon 规模的线上技术峰会。

受新冠疫情影响,今年 3 月,CNCF 曾宣布上海场的 KubeCon + CloudNativeCon +开源峰会取消(《刚刚,CNCF 宣布 2020 年中国 KubeCon 取消》)。消息发布后,已经购票的参会者、演讲嘉宾和赞助商纷纷表示理解,但又为此感到惋惜。在开源社区志愿者不断的努力下,首届“Cloud Native + Open Source Virtual Summit China 2020”正式上线。

本次峰会将重点围绕云原生和微服务等时下热门技术领域展开,囊括应用程序+开发、服务网络、无服务、定制+扩展、CI/CD、机器学习+数据、存储、安全+身份+策略等重大议题,以洞察云原生未来的发展趋势,为广大的开源精英答疑解惑。

目前峰会仍在筹备阶段,感兴趣的读者可以关注:cncf.lfasiallc.cn

2020 上半年 CNCF 云原生调查

上周,CNCF 正式开启新一轮云原生调研,目标是获取 Kubernetes、CNCF 项目和云原生技术(包括服务网格、无服务器和存储)的当前状态。这也是 CNCF 第 8 次对基础设施软件市场进行评估。

本次调研将重点围绕以下维度:

  • CNCF 托管项目在生产中的使用情况;
  • 不断变化的应用程序开发前景;
  • 企业如何管理软件开发周期;
  • 云原生在生产中的好处;
  • 使用和部署容器的挑战。

本次调研的最终报告会于今年 6 月在 GitHub 上公开发布,欢迎大家积极参与:https://www.surveymonkey.com/r/GG26PL5

Istio v1.6 正式发布

上周 Istio v1.6 正式发布。和社区今年早些时候制定的路线图一致,这次的新版本继续朝着更简单、更顺畅的安装体验迈进!

  • 简化:Istio 在上一版本中引入了一个新模块 Istiod,它通过组合多个服务的功能来减少 Istio 安装的组件数量。在最新版本中,Istio 已将功能完全转移到 Istiod 中,这使开发者无需再单独部署 Citadel、sidecar injector 和 Galley;
  • 生命周期:在 Istio v1.6 中,命令行工具 istioctl 可提供更好的诊断信息以及更简单的安装命令,甚至还可以把状态显示为彩色。Istio 的升级机制也得到了改善,现在支持 Istio 控制平面本身的 canary。新版本新增 istioctl upgrade 命令,可以在集群中执行就地升级;
  • 观察分布式应用程序:新版本包含以下亮点:更多的可配置性、更好的控制跟踪采样率的能力,以及更新的 Grafana 仪表板;
  • 虚拟机支持:新版本推出的 WorkloadEntry 资源可以帮助开发者更轻松地将非 Kubernetes 工作负载添加到服务网格中(例如 VM);
  • 网络:新版本改进了对 secrets 的处理,在默认情况下启用了 Gateway SDS,以获得更安全的体验。另外,新版本还增加了对 Kubernetes Service API 的实验性支持。

https://istio.io/news/releases/1.6.x/announcing-1.6/

业界:我们需要 K8s 多云部署 API

近期,越来越多企业开始关注 Kubernetes Cluster API 项目的开发,并期待着这个项目能发展成为用于容器基础架构的声明性多云部署标准。

在月前举办的一场在线分享中,德国一家 IT 公司分享了自己的云原生体验。2017 年,该公司创建了自己的 Kubernetes 部署 API,它使用了 RESTful API 连接到每个工作负载集群中的 Kubernetes Operators,最终实现了公有云中 200 多个集群的自动化管理。

尽管如此,该公司发现由于 Kubernetes 和云基础架构的不断变化,系统不太容易维护:

管理额外的 REST API 很麻烦,必须一直学习新的东西。我们也不得不经常重组 API,有时我们甚至没有足够的资源和知识来规划长期的架构决策。当然,最痛苦的莫过于在不同云之间切换,因为很多工具并不通用。

事实上,这样的问题并不鲜见。随着企业部署的扩展和成熟,越来越多企业开始需要控制和自动化多云环境中的多个 Kubernetes 集群。对于很多企业,多个集群是必需的,因为它们能确保应用的可移植性,但这样也会带来复杂性挑战。

经过数年尝试和试错,2019 年 3 月,上述公司开始把 Cluster API 作为替代方案。该项目旨在将声明式 Kubernetes 风格的 API 用于集群的创建、配置和管理,它允许开发者通过熟悉的 kubectl 命令行界面进行管理,而不必学习使用单独的 RESTful API。

虽然该项目仍处于早期 Alpha 阶段,目前该公司已经正在逐步过渡到 Cluster API,以确保其 Kubernetes 环境的稳定性。很多想要采用标准方法进行 Kubernetes 多云部署的企业 IT 专业人员表示:Cluster API 还需要为用于生产环境做好准备,但它给了我们希望。

五个让 K8s 变得更好的开源项目

开源项目为 Kubernetes 带来了许多附加功能,例如性能监控、开发工具、无服务器功能以及 CI/CD 工作流。以下是五个广泛使用的项目:

Prometheus

Prometheus 最初是在 SoundCloud 上构建的一个开源系统监视和警报工具包。它建立于时间序列数据模型之上,除了监视单个系统之外,它还可以监视面向动态服务的体系结构。

Operator framework

operator framework 给开发者提供了 webhook 和 controller 的框架,帮助屏蔽了一些通用的底层细节,开发者不再需要去实现消息通知触发、失败重新入队等,只需关注被管理应用的运维逻辑实现。

Knative

Knative是一个开源软件层,旨在帮助云服务供应商及企业平台运营商为任何云环境中的开发人员提供无服务器体验,它为开发人员提供了一个框架,可通过处理大多数无服务器应用程序所需的事件基础结构来构建现代应用程序。

Tekton

Tekton 是一个功能强大且灵活的 Kubernetes 原生框架,用于创建 CI/CD 系统。通过抽象出底层实现细节,允许开发者跨多云环境或本地系统进行构建、测试与部署。

Kubeflow

Kubeflow 是 2017 年由 Google、IBM、才云科技、Cisco 等公司发起的开源和免费的机器学习平台。该平台基于容器和 Kubernetes 构建,旨在为数据科学家、机器学习工程师、系统运维人员提供面向机器学习业务的敏捷部署、开发、训练、发布和管理平台。

Kubernetes 部署:6 个安全最佳实践

1.将安全性纳入软件开发周期的所有阶段

在 CI/CD 管道中尽早引入容器安全自动化至关重要(理想的情况是从第一天开始)。在软件开发的整个过程中今早使用自动化工具可以帮助开发人员安全地创建和更新 Kubernetes 部署,让开发进度更敏捷可控,同时可以迅速检测到任何漏洞、恶意攻击或其他未经授权的行为。

2.不要迷信手动干预

缓慢的手动调试安全流程会阻碍 Kubernetes pipeline 的开发进展,Kubernetes 和容器环境是动态变化的,需要提供实时的安全响应,因此只采用手动干预确保确保 Kubernetes 环境的安全性是不切实际的方法。

3.考虑使用 GitOps

GitOps 是一种云原生、以 Kubernetes 为中心的 CI/CD 方法。它兼顾速度和安全性,能确保确保集群状态和代码管理状态是持续同步的,非常适合多租户 Kubernetes 环境。

4.不要手动管理集群

有时候手动修复 bug、手动更改部署确实很方便,尤其是修改诸如环境变量或容器镜像/标签之类的事情。但是这个过程会导致技术债务,导致其他技术人员的混乱甚至停机,因此从安全性和可靠性的角度来看,这种做法并不可取。

5.谨慎配置

Kubernetes 有许多丰富的功能来提高安全性和可靠性。让它们发挥作用的一个前提是正确配置,并时刻进行管理。如果配置不当,这很容易产生一些安全威胁。以下是一些注意点:

  • 除非有特殊必要,否则不要配置特权容器;
  • 确保适当的日志记录;
  • 基于 Kubernetes 网络策略和适当的 CNI 组件为租户提供网络隔离;
  • 考虑采用一种服务网格技术(例如 Istio);
  • 管理员还应该集成一个存储系统,该存储系统不仅为 Kubernetes 提供加密卷,还能为持久卷访问提供身份验证和授权。

6.不要依靠默认配置

默认配置并未针对集群安全状况进行优化,至少它没有针对底层开放源代码项目进行过优化,所以盲目采用默认设置会使集群更容易受到攻击。

本周 K8s 开源项目推荐

rback

  • github.com/team-soteria/rback
  • 这是一个简单的“Kubernetes 中的 RBAC”可视化工具,它可以查询 Kubernetes 集群所有与 RBAC 有关的信息,并生成相应关系图。

kubectl-images

  • github.com/chenjiandongx/kubectl-images
  • 这是一个 kubectl 插件,可以显示集群中使用的容器镜像。

dagda

  • github.com/eliasgranderubio/dagda
  • 这是用于对 Docker 镜像/容器中的已知漏洞、木马、病毒、恶意软件和其他恶意威胁进行静态分析的工具。

helm-diff

  • github.com/databus23/helm-diff
  • 这是一个 Helm 插件,通过显示差异说明 Helm 升级将发生的变化。

kubie

  • github.com/sbstp/kubie
  • 它是 kubectx、kubens 的替代品,能在使每个 shell 彼此独立的情况下进行上下文切换、命名空间切换和快速修改。它还支持拆分配置文件,这意味着它可以从多个文件加载 Kubernetes 上下文。

kubecost

  • github.com/kubecost/cost-model
  • 该模型能使开发团队了解 Kubernetes 当前和历史的支出和资源分配。

原文请点击:https://mp.weixin.qq.com/s/jgeck2U1ogWBIua2ALc4sw