Istio分步指南(二):Istio 入门

Istio分步指南(二):Istio 入门

原文地址 https://medium.com/faun/istio-step-by-step-part-02-getting-started-with-istio-c24ed8137741

cover

嗨!欢迎来到我的 Istio 分步教程系列。通过本教程,我将告诉您如何在 Kubernetes 环境中安装 Istio。 (Linux OS)

请注意,

新版本已经过时了。但这适用于 1.0 版本。如果您使用的是 1.4 或更高版本,请参阅我的 Tutorial 10-在 Minikube 中安装 Istio 1.4

首先,根据您的操作系统下载相应的安装文件。如果您使用的是 Linux OS,则可以运行以下命令。

1
curl -L https://git.io/getLatestIstio | sh -

接下来,将 bin 路径添加到本地变量 PATH(如在控制台中一样)。

然后 cd 到 Istio 软件包目录

1
cd istio-1.0.2

到目前为止,您已经下载了 Istio 并成功将 bin 路径设置为环境变量。让我们看下一部分。

我希望您已经安装了 minikube VM,并且该 VM 正在本地计算机上运行(您可以参考此视频以获取帮助)

第一步,您必须通过 kubectl apply 安装 Istio 的自定义资源

1
kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml

(由于我已经在笔记本电脑中安装了 Istio,它显示的文件未更改)

接下来,您必须安装 Istio 的核心组件。有 4 个选项可供选择:

  • 无需在 sidecar 之间进行相互 TLS 身份验证
  • 在 sidecar 之间具有相互 TLS 身份验证
  • 使用 Helm 渲染 Kubernetes 配置文件并使用kubectl进行部署
  • 使用 Helm 和 Tiller 来管理 Istio 部署

Istio 支持两种身份验证,即 Transport authenticationOrigin authentication

Transport authentication 也称为“服务到服务的身份验证”。此方法验证建立连接的直接客户端。相互 TLS 是用于传输身份验证的完整堆栈解决方案。您可以轻松打开此功能,而无需更改服务代码。

Origin authentication 也称为最终用户身份验证,它验证发出请求的原始客户端是否为最终用户。 Istio 通过 JSON Web 令牌(JWT)验证和 AuthO,Firebase Auth,Google Auth…等实现请求级身份验证。

相互 TLS 或相互传输层安全性是指双方同时进行身份验证。在 Istio 中,服务到服务的通信是通过客户端和服务器端 envoy 代理进行的。为使客户端调用服务器,需要完成以下步骤。

  1. Istio 将来自客户端的出站流量重新路由到客户端的本地 Sidecar Envoy。

  2. 然后,客户端 Envoy 与服务器端 Envoy 开始相互 TLS 握手。在握手期间,客户端 Envoy 还会进行安全的命名检查,以验证服务器证书中提供的服务帐户是否有权运行目标服务。(安全命名信息包含服务器身份的 N 到 N 映射,这些映射以证书形式编码到发现服务或 DNS 引用的服务名称)

  3. 接下来,客户端 Envoy 和服务器端 Envoy 建立双向 TLS 连接,Istio 将流量从客户端 Envoy 转发到服务器端 Envoy。

  4. 最后,在授权后,服务器端 Envoy 通过本地 TCP 连接将流量转发到服务器服务。

现在,让我们回到安装部分。

选项 01 - 建议将其与具有现有应用程序的群集以及具有 Istio sidecar 的服务需要能够与其他非 Istio Kubernetes 服务进行通信的应用程序一起使用。

1
kubectl apply -f install/kubernetes/istio-demo.yaml

选项 02 - 此选项仅适用于

该选项适用于新的 Kubernetes 集群,在该集群中,新部署的工作负载可确保安装了 Istio sidecars。

1
kubectl apply -f install/kubernetes/istio-demo-auth.yaml

在本教程中,我选择选项 02。然后,您必须验证安装是否成功。

首先,您必须确保是否部署了以下 Kubernetes 服务。

  • istio-pilot
  • istio-ingressgateway
  • istio-policy
  • istio-telemetry
  • prometheus
  • istio-galley
  • istio-sidecar-injector (这是可选的)

运行命令

1
kubectl get svc -n istio-system

如果 istio-ingressgatewayExternal-IP 为 pending,则表示您的群集正在不支持外部负载均衡器(例如 minikube)的环境中运行。因此,您将需要服务 NodePort 或端口转发来访问它。

接下来,确保部署了相应的 Kubernetes Pod,并且所有容器都已启动并正在运行。

  • istio-pilot-*
  • istio-ingressgateway-*
  • istio-egressgateway-*
  • istio-policy-*
  • istio-telemetry-*
  • istio-citadel-*
  • prometheus-*
  • istio-galley-*
  • istio-sidecar-injector-* (可选)

运行命令

1
kubectl get pods -n istio-system

至此,您已经完成了安装部分,现在可以部署应用程序了。

如果要卸载 Istio 核心组件,可以根据安装 Istio 的方式使用以下相应命令。

  • 如果您使用 istio-demo.yaml 安装了 Istio((没有在小车之间进行相互 TLS 身份验证的 Istio):

    $ kubectl delete -f install/kubernetes/istio-demo.yaml

  • 如果您使用 istio-demo-auth.yaml 安装了 Istio((在小车之间具有相互 TLS 身份验证的 Istio):

    $ kubectl delete -f install/kubernetes/istio-demo-auth.yaml

这是我的视频教程链接

以上就是本教程的全部内容。希望你会喜欢,欢迎您的评论,您的反馈意见对我非常重要,对此我深表谢意。下一章我们将讲解有关如何在 Istio 中部署应用程序,咱们下一篇见。

Rating: