Conduit 0.4.0:流量都去哪了?

本周早些时候我们发布了 Conduit v0.4.0,这一版本在基于 Prometheus 的遥测系统方面,有了很大进步;同时还给微服务的除错提供了新的工具。

安装后的一分钟里,Conduit 给每个 Kubernetes 部署都提供了一个预配置的 Grafana Dashboard。这些 Dashboard 不只是成功率、请求量以及每服务延迟等常见指标,他还将每个指标按照依赖关系进行了分解。这样你就可以在不修改应用的情况下,轻松地回答“这个服务的流量是从哪里来的?”或者 “Foo 调用 Bar 的成功率如何”之类的问题了。

conduit-dashboard-deploy/web

摸索:Istio 路由规则 Alpha v3

Istio 近期的版本中出现了一个新的 API 组:networking.istio.io/v1alpha3,应该会替代现有的config.istio.io/v1alpha2 API。新的 API 不管是结构上还是功能上、以及命名上,都有很大差异。这里使用一些简单例子,体验一下 Alpha 3 带来的变化。

注意:正常情况下 istioctl 和 kubectl 都可以用来操作这些对象,但是 kubectl 缺乏验证功能,因此调试阶段使用 istioctl 会更方便一些。

Kubernetes 中用 Sidecar 为应用添加 Oauth 功能

Tags: 

Kubernetes 的 Pod 中可以同时运行共享网络栈的多个容器,使得 Sidecar 这种服务协作方式更加易于实施。这里我们就使用 Sidecar 方式,将 Keycloak 集成到 httpbin 服务上去,为没有认证的 httpbin 服务添加认证功能。

概要

Keycloak(链接 1) 是 JBoss 的一个认证服务软件,使用代理的方式,为其他应用提供认证能力,除了本文说到的 Oauth 之外,还提供二次认证、LDAP 等丰富的相关功能。

在 Kubernetes 上部署 Keycloak 服务,对其进行初始化,建立用户和认证系统,然后将 Keycloak-Proxy 和 Httpbin 集成在同一个 Pod 中进行部署运行,测试集成效果。

集成后的访问路径如图所示: Keycloak flow

Kubeadm 离线安装器 1.10

项目地址:https://github.com/fleeto/kubeadm-offline-installer

更新内容

  • 升级到了 Kubernetes 1.10。
  • 使用 CoreDNS 代替了原来的 KubeDNS。
  • 升级 Calico 网络插件为 3.0.4 版。

仅在 centos 7 minimal 测试通过。

Kubernetes 1.10 的秘宝

Tags: 

Kubernetes 发布了 1.10 版本。这是各位贡献者和发布团队的的又一次胜利。

在 Jetstack,无论是为客户服务的 K8S 项目、或是为各级别的用户提供 K8S 培训,又或者向 K8S 社区贡献我们开发的代码,都有着同样的目的,就是将 Kubernetes 推向巅峰。我们一直在跟进这一杰出项目,并保持对其开发过程密切关注。

官方博客(注 1)中介绍了 1.10 版本中的关键特性,按照以往惯例,我们请我们的工程师分享一下他们在新版本中发现的令人激动、期待的新功能。

设备插件

Matt Turner

Redhat 提供 Istio 在线交互式教学

Redhat 新近为用户提供了 Istio 的交互式学习工具,基于 Openshift 和最新的 Istio 0.6,试用了一下,主要有三个方面让我非常满意:

  1. 无需注册即可使用。
  2. 不受国内网络限制。
  3. 精心调校的示例应用和相关规则。

以上优点让这一工具的运行非常流畅,能够完整、直观并快速的为用户提供一个对于 Istio 的第一印象。下面用著名的老大难问题——断路器的课程,来看看这一教学工具的好处。

首先进入系列教程的首页。页面上排布了一系列的 Service Mesh 相关教程,分别是一个直通教程,外加八个 Workshop 环节,这里我们用第七个,也就是断路器的 Workshop 来看看这一教程的使用过程。

启动服务

进入首页之后,点击醒目的红色按钮,进入场景。会看到三栏式的页面:

Kubernetes 1.10 Beta

Tags: 

Kubernetes 社区发布了 Kubernetes 1.10 的第一个 Beta 版本,因此用户现在就可以对 1.10 中的部分新功能进行试用,在官方发布正式版本之前,可以向发布团队提交试用反馈。这次发布预计是在 2018 年 3 月 21 日,其中包含了超过一打的 Alpha 功能以及不止两打的更加成熟的特性。

Kubernetes 1.10 的众多特性中,需要强调的是:生产就绪的 Kubelet TLS Bootstrap 功能、API 聚合以及详细的存储指标。

本文提到的一些功能可能让人觉得面熟,这是因为他们在之前的版本就已经出现,随着功能的逐步成熟,我们会为他定义不同的阶段:

限制到一个应用的流量

可以创建网络策略,来允许来自某些 Pod 的流量通过。

用例

  • 只有选定范围内的服务才能够访问指定服务。
  • 只有允许的服务才能够访问数据库

Diagram of LIMIT traffic to an application policy

示例

假设你的应用是一个 REST API 服务器,使用标签app=bookstorerole=api进行标识:

kubectl run apiserver --image=nginx --labels app=bookstore,role=api --expose --port 80

把下面的网络策略保存为api-allow.yaml,这个策略只允许符合标签app=bookstore条件的Pod发出的流量:

拦截到一个应用的所有流量

这一策略使用 Pod 选择器来进行 Pod 选择,会拦截所有的目标为某应用的 Pod 的流量。

用例

  • 非常普遍:如果以白名单的方式来使用网络策略,首先要使用这一策略来进行拦截。
  • 想要运行一个不被任何其他 Pod 访问的 Pod。
  • 需要暂时性的进行来自其他 Pod 的流量的隔离。

Diagram for DENY all traffic to an application policy

示例

使用app=web标签运行一个 Nginx Pod,并暴露其 80 端口:

kubectl run web --image=nginx --labels app=web --expose --port 80

创建一个临时 Pod,在这一 Pod 中访问web服务:

创建集群

多数 Kubernetes 安装方法都没有提供网络策略的支持,因此需要手工安装 Weave Net 或者 Calico 这样的网络策略支持工具。

Google Kubernetes Engine (GKE) 让用户可以在不进行手工安装的情况下轻松的获得网络策略支持,这是因为 GKE 已经选择 Calico 作为网络支持组件了(这个特性在 Kubernetes 1.8 中处于 Beta 阶段)。

下面的命令会在 GKE 中创建名为np,并支持网络策略功能的集群:

页面