在Google Kubernetes Engine(GKE)中使用Google Cloud Deployment Manager安装和运行Istio的快速入门说明。
这种快速启动用来创建一个新的GKE集群,安装Istio然后部署BookInfo的示例应用程序。它使用Deployment Manager自动执行,在Istio on Kubernetes设置指南中有详细介绍。
注:默认安装将创建一个GKE alpha群集,允许自动支架注入。由于它是一个alpha群集,它不支持自动节点或主升级,将在30天后自动删除。
先决条件
此示例需要启用具备结算功能且有效的Google云端平台项目。如果您不是现有的GCP用户,则可以注册300美元的免费试用信用。
确保为您的项目启用了Google Container Engine API(也可以通过导航栏中的导航到“APIs&Services” – >“Dashboard”找到)。如果您没有看到“启用API”,则可以通过单击“启用此API”按钮来启用API。
您必须安装和配置gcloud命令行工具并包含kubectl组件(gcloud components install kubectl)。如果你不想在自己的机器上安装gcloud客户端,可以使用gcloud通过谷歌云脚本执行相同的任务。
警告:您必须将您的默认计算服务帐户设置为包括:
要设置此项,请导航到云控制台的IAM部分,并以以下形式 [email protected] 查找默认的GCE / GKE服务帐户:默认情况下,它应该具有编辑者角色。然后在该帐户的角色下拉列表中找到Kubernetes引擎组,然后选择角色Kubernetes引擎管理员。您的帐户的角色列表将更改为多个。
roles/container.admin (Kubernetes引擎管理员)
Editor (默认情况下)
建立
启动部署管理器
一旦启用了帐户和项目,请单击以下链接打开“部署管理器”。
我们建议您保留默认设置,因为本教程的其余部分将介绍如何访问已安装的功能。默认情况下,工具创建具有指定设置的GKE alpha 集群,然后安装Istio 控制面版,BookInfo示例应用程序,Grafana与Prometheus,ServiceGraph,和Zipkin。你会发现更多关于如何访问下面的所有这些。
Istio GKE部署管理
点击部署:
GKE-Istio启动器
等到Istio完全部署。请注意,这可能需要五分钟。
Bootstrap gcloud
完成部署后,在已安装gcloud的工作站上执行以下操作:
对刚刚创建的集群执行bootstrap kubectl,并确认集群正在运行,istio已启用
gcloud container clusters list NAME ZONE MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS istio-cluster us-central1-a 1.7.8-gke.0 ALPHA (29 days left) 130.211.216.64 n1-standard-2 1.7.8-gke.0 3 RUNNING
在这种情况下,群集名称是 istio-cluster
现在获取此群集的证书
gcloud container clusters get-credentials istio-cluster --zone=us-central1-a
验证安装
验证Istio安装在它自己的命名空间中
kubectl get deployments,ing -n istio-system
kubectl get deployments,ing
记下分配给BookInfo产品页面的IP和端口。(在上面的例子中,它为:35.202.120.89:80。
您还可以使用云控制台上的* Kubernetes引擎 – >工作负载部分查看安装: GKE-工作负载
访问BookInfo示例
为BookInfo的外部IP地址设置一个环境变量:
kubectl get ingress -o wide export GATEWAY_URL=35.202.120.89
现在与它通信:
for i in {1..100}; do curl -o /dev/null -s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage; done
验证已安装的Istio插件
一旦您确认了Istio控制面板和示例应用程序正在运行,请尝试访问已安装的Istio插件。
如果您使用云端Shell而不是安装的gcloud客户端,则可以使用其Web预览功能进行端口转发和代理。例如,要从Cloud Shell访问Grafana,请将kubectl端口映射从3000:3000更改为8080:3000。您可以通过8080到8084范围内的Web Preview代理同时预览其他四个控制台。
Grafana
建立一个通往Grafana的隧道:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &
然后
http://localhost:3000/dashboard/db/istio-dashboard
您应该会看到您之前发送请求的一些统计信息。
Grafana
有关使用Grafana的更多详细信息,请参阅关于Grafana插件。
Prometheus与Grafana一起安装。您可以使用控制台查看Istio和应用程序指标,如下所示:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &
查看控制台:
http://localhost:9090/graph
有关更多详细信息,请参阅关于Prometheus附加组件。
ServiceGraph
建立到ServiceGraph的隧道:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 &
您应该看到BookInfo服务拓扑在
http://localhost:8088/dotviz
有关更多详细信息,请参阅关于ServiceGraph附加组件。
建立一个隧道到Zipkin:
kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=zipkin -o jsonpath='{.items[0].metadata.name}') 9411:9411 &
您应该看到之前发送的跟踪统计信息:
http://localhost:9411
有关跟踪的更多细节,请参阅了解发生了什么。
您可以按照指南部分中的任何教程进一步探索BookInfo应用程序和Istio功能。但是,要做到这一点,你需要安装istioctl与Istio互动。您可以将其直接安装在我们的工作站上或在云端Shell中。
导航到云控制台的“部署”部分,网址为:https://console.cloud.google.com/deployments
选择部署,然后单击删除。
部署管理器将删除所有已部署的GKE工件 – 但是,Ingress和LoadBalancers等项目将保留。您可以通过在网络服务 – > LoadBalancers下再次转到云控制台来删除这些工件
(全文完)