本主题介绍如何安装预安装了入站网关的 Cloud Service Mesh。如果您需要 Ingress 控制器,则可以借助 Cloud Service Mesh 为您的 Deployment 配置 Kubernetes Ingress 资源。本主题提供的示例展示了如何配置示例 Deployment 和 Ingress 资源。
Cloud Service Mesh 的安装包括两个主要部分:
- 安装特定版本的 Cloud Service Mesh 客户管理的控制平面和入站网关。
- 使用修订版本标签为命名空间添加标签,并重新部署工作负载以注入 Sidecar 代理。
如果您只需要使用 Ingress 控制器的 Ingress 对象,则无需将边车代理注入工作负载 Pod。但如果您需要 Cloud Service Mesh 提供的安全优势,并且想要使用流量路由功能,则需要注入 Sidecar 代理。
准备工作
在开始使用 GKE on AWS 之前,请确保您已执行以下任务:
- 完成前提条件。
- 安装管理服务。
- 创建用户集群。
- 按照使用 Cloud Console 连接到集群中的步骤向 Connect 注册集群。
- 配置集群,将 Workload Identity 与 Google Cloud 搭配使用。
如果您的用户集群限制对互联网的出站访问权限,请允许访问以下容器代码库网域:
docker.io
quay.io
在
anthos-aws
目录中,使用anthos-gke
将上下文切换到用户集群。cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
将 CLUSTER_NAME 替换为用户集群名称。
安装 Anthos Service Mesh
按照安装 Cloud Service Mesh 中的步骤操作。
创建示例 Deployment
在本部分中,您将安装示例应用并为其创建 Ingress 端点。
创建
hello-app
的 Deployment 并为该部署创建 ClusterIP。将以下 YAML 复制到名为hello-app.yaml
的文件中。apiVersion: apps/v1 kind: Deployment metadata: labels: app: hello-app name: hello-app spec: selector: matchLabels: app: hello-app replicas: 3 template: metadata: labels: app: hello-app spec: containers: - name: hello image: "gcr.io/google-samples/hello-app:2.0" --- apiVersion: v1 kind: Service metadata: labels: app: hello-app name: hello-app spec: type: ClusterIP selector: app: hello-app ports: - protocol: TCP port: 8080 targetPort: 8080
使用
kubectl apply
将 YAML 应用于您的集群。env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app.yaml
为示例应用创建 Kubernetes Ingress。将以下 YAML 复制到名为
hello-app-ingress.yaml
的文件中。apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: istio labels: app: hello-app name: hello-app spec: rules: - host: http: paths: - backend: serviceName: hello-app servicePort: 8080
通过使用
kubectl apply
应用配置来创建 Ingress。env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f hello-app-ingress.yaml
使用
kubectl get svc
检查网关的状态。env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app
ADDRESS
字段应具有 ELB 域名。如果ADDRESS
仍然为pending
,请确认您的 VPC 和子网标签。您可以通过编写主机和端口来检查入站网关网址。要获取网关网址,请执行以下命令:
export INGRESS_URL=$(env HTTPS_PROXY=http://localhost:8118 \ kubectl get ingress hello-app -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') echo "Your hello-app Ingress URL is: http://"$INGRESS_URL
最后一个命令会输出 Ingress 的端点。
如果您创建了公共 Ingress,则可以通过访问
http://$INGRESS_URL/
来查看curl
中的hello-app
默认网页。curl $INGRESS_URL/
清理
您可以使用 kubectl delete
移除 hello-app
组件。
env HTTPS_PROXY=http://localhost:8118 \
kubectl delete -f hello-app.yaml &&\
kubectl delete -f hello-app-ingress.yaml
如果您要移除 Cloud Service Mesh,请参阅卸载 Cloud Service Mesh。
后续步骤
详细了解以下内容: