都2023了!我不允许你还不了解AIGC!立即报名 了解详情
写点什么

Hashicorp 发布 Consul 服务网格与 Kubernetes 集成新特性

  • 2018-12-05
  • 本文字数:2836 字

    阅读完需:约 9 分钟

Hashicorp发布Consul服务网格与Kubernetes集成新特性

摘要: Hashicorp 发布了可以更好地集成 Consul 与 Kubernetes 的新特性。这些特性包括支持使用官方提供的 Helm Chart 在 Kubernetes 上安装 Consul、Kubernetes 服务与 Consul 自动同步、外部 Consul 代理自动加入 Kubernetes 集群、支持 Envoy 和注入器,使用户可以使用 Connect 保护 Pod。


Hashicorp 发布了可以更好地集成Consul(一个服务网格和KV存储)与Kubernetes的新特性。这些特性包括支持使用官方提供的 Helm Chart 在 Kubernetes 上安装 Consul、Kubernetes 服务与 Consul 自动同步、外部 Consul 代理自动加入 Kubernetes 集群、支持 Envoy 和注入器,使用户可以使用 Connect 保护 pod。这些新特性可以为 Kubernetes 集群之间的跨集群通信提供便利,或者用在异构工作负载和环境里。


作为集成的一部分,Hashicorp 将重点放在了增强而不是替换 Kubernetes 上。他们利用了核心的 Kubernetes 工作流组件,如服务、ConfigMaps 和 Secrets,在这些核心原语之上进行构建。这使得像 Consul 目录同步这样的特性可以将外部服务转换为一等的 Kubernetes 服务。


现在,Consul 有一个官方提供的Helm Chart,可以安装在 Kubernetes 中,使得完整的 Consul 设置在几分钟内就可以完成。这个设置可以是服务器集群,也可以是客户端代理,或者两者兼而有之。


在克隆并检出最新标记的版本后,你可以使用下面的命令安装 Chart:


$ helm install .
复制代码


这会安装一个包含三个节点的、完全自引导的服务器集群,每个 Kubernetes 节点上运行一个 Consul 代理。然后,你可通过从一个服务器 pod 转发端口 8500 来查看 Consul UI:


$ kubectl port-forward consul-server-0 8500:8500
复制代码


Helm Chart 是完全可配置的,允许禁用组件、更改镜像、暴露 UI 服务、配置资源和存储类。有关详细信息,请查看可配置选项的完整列表。通过调整配置,你可以部署一个仅限客户端的集群,如果你的 Consul 服务器运行在 Kubernetes 集群之外,那么这个集群会非常有用,配置示例如下所示:


global:  enabled: false
client: enabled: true join: - "provider=aws tag_key=... tag_value=..."
复制代码


Join 配置将使用云的 auto-join 特性来发现并加入先前已存在的 Consul 服务器代理。


Auto-join特性增强了,它可以利用 Kubernetes API 发现正在运行 Consul 代理的 pod。这代替了使用静态 IP 地址或 DNS 来实现加入。


Consul 将使用用于 kubectl 身份验证的标准 kubeconfig 文件进行 Kubernetes 身份验证。它会在标准位置搜索这个文件。连接之后,你可以命令 Consul 基于标签自动加入:


$ consul agent -retry-join 'provider=k8s label_selector="app=consul,component=server"'
复制代码


这个命令将要求代理从 Kubernetes 中查询带有标签 app=consul 和 component=server 的 pod。如果没有发现 pod,则 Consul 将定期重试此命令。这可以供 Kubernetes 集群之外的代理使用。


Kubernetes 服务现在已经自动同步到 Consul 目录。Consul 用户可以通过 Consul DNS 或 HTTP API 发现这些服务。它使用标准的 Kubernetes 工具来注册服务,这就是说,如果将服务移动到新的 pod 或者服务伸缩,那么 Consul 目录会保持最新。这还允许非 Kubernetes 工作负载通过 Consu 连接到 Kubernetes 服务。


目前,这个同步过程只包括 NodePort 服务、LoadBalancer 服务和具有外部 IP 集的服务。下面是一个标准 LoadBalancer 服务配置的示例:


apiVersion: v1kind: Servicemetadata:  name: consul-uispec:  ports:  - name: http    port: 80    targetPort: 8500  selector    app: consul    component: server    release: consul  type: LoadBalancer
复制代码


一旦运行,你就可以在 Kubernetes 之外查询服务:


# From outside of Kubernetes$ dig consul-ui.service.consul.
;; QUESTION SECTION:;consul-ui.service.consul. IN A
;; ANSWER SECTION:consul-ui.service.consul. 0 IN A 35.225.88.75
;; ADDITIONAL SECTION:consul-ui.service.consul. 0 IN TXT "external-source=kubernetes"
复制代码


为了可以在 Consul UI 中区分它们,外部注册的服务会有一个 Kubernetes 图标。


最后,Consul 服务可以注册成一等的 Kubernetes 服务。这使得 Kubernetes 用户可以通过 Kubernetes API 连接到它们。但是,这需要在 Kubernetes 中配置 Consul DNS。这个同步过程可以通过 Helm Chart 来运行:


syncCatalog:  enabled: true
复制代码


还有其他的选项可以用于更深层次的配置。这个功能也是开源的,是consult -k8s项目的一部分。现在,有了原生 Kubernetes 注入器,你可以使用Connect保护你的pod。Connect 借助自动 TLS 加密和基于身份的认证实现了安全的服务到服务通信。这样,运行 Envoy 的 Connect sidecar(一个 Connect 代理)就可以自动注入到 pod,实现 Kubernetes 配置自动化。如果 pod 有适当的注解,则 Envoy 将自动配置、启动,并能够通过 Connect 接受和建立连接。下面是一个为入站流量配置了 Connect 的 Redis 服务器示例:


apiVersion: apps/v1kind: Deploymentmetadata:  name: redisspec:  replicas: 1  selector:    matchLabels:      app: redis  template:    metadata:      labels:        app: redis      annotations:        "consul.hashicorp.com/connect-inject": "true"    spec:      containers:        - name: redis          image: "redis:4.0-alpine3.8"          args: [ "--port", "6379" ]          ports:            - containerPort: 6379              name: tcp
复制代码


然后,我们可以配置一个 Redis UI 通过 Connect 与 Redis 通信。该 UI 将被配置为与本地主机端口通信,从而通过代理进行连接。注入器还将向容器中注入任何必要的环境变量。


apiVersion: apps/v1kind: Deploymentmetadata:  name: redis-uispec:  replicas: 1  selector:    matchLabels:      app: redis-ui  template:    metadata:      labels:        app: redis-ui      annotations:        "consul.hashicorp.com/connect-inject": "true"        "consul.hashicorp.com/connect-service-upstreams": "redis:1234"    spec:      containers:      - name: redis-ui        image: rediscommander/redis-commander        env:        - name: REDIS_HOSTS          value: "local:127.0.0.1:1234"        - name: K8S_SIGTERM          value: "1"        ports:        - name: http          containerPort: 8081
复制代码


Kubernetes Connect 注入器可以使用 Helm Chart 运行。每个客户端代理都需要为 Envoy 代理启用 gRPC。


connectInject:  enabled: true
client: grpc: true
复制代码


这些新特性简化了在 Kubernetes 上运行 Consul 的过程。此外,Hashicorp 认为,借助自动加入和同步功能,可以简化在集成非 Kubernetes 工作负载的环境中的运行。除了这些新特性之外,Hashicorp 还在努力将 Terraform 和 Vault 与 Kubernetes 集成,并计划在未来几个月内发布。


查看英文原文:


https://www.infoq.com/news/2018/11/consul-kubernetes


2018-12-05 16:282174
用户头像

发布了 1008 篇内容, 共 358.8 次阅读, 收获喜欢 334 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

机器学习·笔记之:Gradient Descent For Linear Regression

Nydia

工业互联网平台:将为“补链”“优链”“强链”提供有力保障

浪潮云

工业互联网

💻 一文读懂两台计算机之间是如何通信的

飞天小牛肉

面试 计算机网络 2月春节不断更

python subprocess-更优雅的创建子进程

jeffery

Python

专访京东科技张亮:本土开源需形成吸纳开发者的靶心

京东科技开发者

开源

PowerApps画布应用编码规范和指南

Changwei™

低代码 企业应用 Power Platform PowerApps

Java 多线程上下文传递在复杂场景下的实践

vivo互联网技术

Java 架构 编程语言 多线程高并发

第二章作业二

LouisN

【初级】个人分享Vue前端开发教程笔记

我是哪吒

程序员 面试 Vue 大前端 2月春节不断更

为什么太过努力有时候也会造成问题

熊斌

学习方法 个人成长 28天写作

两个高频设计类面试题:如何设计HashMap和线程池

yes

面试 hashmap 线程池

如何理解平行宇宙

陈东泽 EuryChen

科普 物理 平行宇宙 平行世界

五种C语言非数值计算的常用经典排序算法

华为云开发者联盟

算法 记录 C语言 排序 非数值计算

Java之五种遍历Map集合的方式

华为云开发者联盟

Java 对象 Iterator 内容合集

与前端训练营的日子 --Week14

SamGo

学习

创业公司如何做技术品牌? | 视频号28天(25)

赵新龙

28天写作

人员培养,不是捷径的捷径(上)

一笑

管理 人才培养 28天写作

马克吐温关于拖延症的几个段子

Justin

心理学 工作效率 拖延症 28天写作

作业二

KYoKO

这一年,像踏码进货一样!

小傅哥

Java 小傅哥 技术成长 平台羊毛

分盘存储:实现数据库备集群备份文件分散存储

华为云开发者联盟

数据库 数据 容灾 集群 分盘存储

工具词典: MIT

lidaobing

MIT 28天写作 Slidepad Roam Research

写一个玄幻的序章——梦想种植「幻想短篇 24/28」

道伟

28天写作

Elasticsearch Document 增删改内部原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

任务悬赏系统软件开发

v16629866266

如何理解Linux系统SSH协议和原理

Changing Lin

Linux 2月春节不断更

博文视点算法书单|让算法学习不再难

博文视点Broadview

【Animate.css】CSS动画库

德育处主任

CSS css3 html/css 28天写作

WireGuard 教程:使用 DNS-SD 进行 NAT-to-NAT 穿透

米开朗基杨

wireguard

科普篇:新冠疫苗解读

石云升

28天写作 2月春节不断更 新冠疫苗

智能对联模型太难完成?华为云ModelArts助你实现!手把手教学

华为云开发者联盟

人工智能 modelarts mindspore Seq2Seq

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
Hashicorp发布Consul服务网格与Kubernetes集成新特性_软件工程_Matthew Campbell_InfoQ精选文章