《Istio官方文档》Kubernetes快速开始
Kubernetes快速开始
在Kubernetes群集中安装和配置Istio时,可以参考如下快速入门说明。
先决条件
以下说明要求您有权访问启用了RBAC(基于角色的访问控制)的Kubernetes 1.7.3或更新的群集。你还需要安装1.7.3或更新版本。如果您希望启用自动注射支架,您需要打开群集中的Kubernetes alpha功能。
注意:如果您安装了Istio 0.1.x,请在安装新版本之前彻底卸载它(包括启用Istio的所有应用程序窗口的Istio支架)。
- 安装或升级Kubernetes CLI kubectl以匹配群集支持的版本(1.7或更高版本以支持CRD)。
- 根据您的Kubernetes提供者:
- 要在本地安装Istio,请安装最新版本的Minikube(版本0.22.1或更高版本)。
- Google Kubernetes引擎
- 检索kubectl的凭证(用要使用的集群的名称以及集群所在的区域替换):
gcloud container clusters get-credentials <cluster-name> --zone <zone> --project <project-name>
- 将集群管理员权限授予当前用户(需要管理员权限才能为Istio创建必要的RBAC规则):
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value core/account)
- 检索kubectl的凭证(用要使用的集群的名称以及集群所在的区域替换):
- IBM云容器服务
- 检索kubectl的凭证(用要使用的集群的名称替换):
$(bx cs cluster-config <cluster-name>|grep "export KUBECONFIG")
- 检索kubectl的凭证(用要使用的集群的名称替换):
- IBM Cloud Private 2.1或更高版本
- 根据此处的步骤配置kubectl CLI以了解如何访问IBM Cloud Private Cluster。
- Openshift Origin版本3.7或更高版本
- 默认情况下,Openshift不允许以UID 0运行容器。为Istio的服务帐户启用使用UID 0的容器以及Prometheus和Grafana插件:
oc adm policy add-scc-to-user anyuid -z istio-ingress-service-account -n istio-system oc adm policy add-scc-to-user anyuid -z istio-grafana-service-account -n istio-system oc adm policy add-scc-to-user anyuid -z istio-prometheus-service-account -n istio-system
- 运行应用程序窗口的服务帐户需要有特权的安全上下文约束而作为支架注入的一部分。
oc adm policy add-scc-to-user privileged -z default -n <target-namespace>
- 默认情况下,Openshift不允许以UID 0运行容器。为Istio的服务帐户启用使用UID 0的容器以及Prometheus和Grafana插件:
安装步骤
从0.2版本开始,Istio安装在自己的istio-system命名空间中,可以管理所有其他命名空间的微服务。
- 转至Istio发布页面下载与您的操作系统相对应的安装文件。如果您使用的是MacOS或Linux系统,则还可以运行以下命令自动下载并提取最新版本:
curl -L https://git.io/getLatestIstio | sh -
- 提取安装文件并将目录更改为文件位置。安装目录包含:
- install/目录下的Kubernetes的安装文件.yaml
- samples/目录中的示例应用程序
- bin/目录中的istioctl客户端二进制文件。istioctl在手动注入Envoy作为附属代理并创建路由规则和策略时使用。
- istio.VERSION配置文件
- 将目录更改为istio包。例如,如果软件包是istio-0.5.0
cd istio-0.5.0
- 将istioctl客户端添加到您的PATH。例如,在MacOS或Linux系统上运行以下命令:
export PATH=$PWD/bin:$PATH
- 安装Istio的核心组件。选择下面两个互斥选项之一:
a)安装Istio,但是在sidecars之间不启用相互TLS验证。为现有应用程序的集群选择此选项,使用Istio sidecar的服务需要能够与其他非Istio Kubernetes服务以及使用活动性和准备就绪探测器,无头服务或StatefulSets的应用程序通信。
kubectl apply -f install/kubernetes/istio.yaml
或者是
b)安装Istio并启用侧柜之间的相互TLS认证:
kubectl apply -f install/kubernetes/istio-auth.yaml
这两个选项都会创建istio-system名称空间以及所需的RBAC权限,并部署Istio-Pilot,Istio-Mixer,Istio-Ingress和Istio-CA(证书颁发机构)。
- 可选:如果您的群集启用了Kubernetes alpha功能,并且希望启用sidecar的自动注入,请安装Istio-Initializer:
kubectl apply -f install/kubernetes/istio-initializer.yaml
验证安装
- 请确保以下Kubernetes服务部署:istio-pilot,istio-mixer,istio-ingress。
kubectl get svc -n istio-system
注意:如果您的集群中不支持在外部负载平衡(例如,minikube)的环境中运行,该EXTERNAL-IP的istio-ingress会产生<pending>。您必须使用服务NodePort访问应用程序,或使用端口转发。
- 确保相应Kubernetes窗口已经部署并且所有的容器都运行起来:istio-pilot-,istio-mixer-,istio-ingress-,istio-ca-,和可选的istio-initializer-*。
kubectl get pods -n istio-system
部署您的应用程序
您现在可以部署您自己的应用程序,或像BookInfo一样安装提供的示例应用程序中的一个。注意:应用程序必须使用HTTP / 1.1或HTTP / 2.0协议来处理所有HTTP流量,因为HTTP / 1.0不受支持。
如果您启动了Istio-Initializer,如上所示,您可以直接使用kubectl create。Istio-Initializer会自动将Envoy容器注入到您的应用程序窗口中:
kubectl create -f <your-app-spec>.yaml
如果您没有安装Istio-Initializer,则必须使用istioctl kube-inject在应用程序窗口中手动注入Envoy容器,然后再部署它们:
kubectl create -f <(istioctl kube-inject -f <your-app-spec>.yaml)
卸载
- 卸载Istio初始化程序:如果您安装了启用初始化程序的Istio,请将其卸载:
kubectl delete -f install/kubernetes/istio- initializer.yaml
- 卸载Istio核心组件。对于0.4.0版本,卸载将删除RBAC权限,istio-system命名空间以及其下的所有资源。忽略不存在的资源的错误是安全的,因为它们可能已被分层删除。a)如果您在禁用了相互TLS身份验证的情况下安装了Istio:
kubectl delete -f install/kubernetes/istio.yaml
要么
b)如果您在启用了相互TLS身份验证的情况下安装了Istio:
kubectl delete -f install/kubernetes/istio-auth.yaml
下一步是什么
- 请参阅BookInfo应用程序示例。
- 了解如何测试Istio相互TLS身份验证。
原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Istio官方文档》Kubernetes快速开始
暂无评论