httpbin是一个用于测试的开源应用,常用于Web调试。部署该应用后,您可以方便地查看HTTP请求的Method、Header和授权等信息。本文介绍如何部署httpbin应用。
前提条件
操作步骤
在数据面集群中部署httpbin应用。
使用以下内容,创建httpbin-application.yaml。
使用kubectl连接到ACK集群,执行以下命令,部署httpbin应用。
kubectl apply -f httpbin-application.yaml
配置httpbin应用的流量规则。
使用以下内容,创建网关规则。具体操作,请参见管理网关规则。
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: httpbin namespace: default spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: test number: 80 protocol: HTTP
使用以下内容,创建虚拟服务。具体操作,请参见管理虚拟服务。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin-vs namespace: default spec: gateways: - httpbin hosts: - '*' http: - name: test route: - destination: host: httpbin.default.svc.cluster.local port: number: 8000
进行访问测试。
请将下文命令中的
${ASM网关IP}
替换为实际的网关地址。关于如何获取网关地址,请参见获取入口网关地址。执行以下命令,访问httpbin的
/status/200
。curl http://${ASM网关IP}/status/200 -v
返回
200 OK
。执行以下命令,访问httpbin的
/status/418
。curl http://${ASM网关IP}/status/418 -v
返回
418 Unknown
。执行以下命令,访问httpbin的
/status/403
。curl http://${ASM网关IP}/status/403 -v
返回
403 Forbidden
。执行以下命令,访问httpbin的
/headers
。curl http://${ASM网关IP}/headers -H test-header:test-value -v
Response会返回请求中携带的Header。
相关操作
您也可以通过在数据面集群部署sleep服务,并通过sleep服务去访问httpbin服务来验证httpbin服务已经部署成功。
使用以下内容,创建sleep.yaml。
################################################################################################## # Sleep Service示例。 ################################################################################################## apiVersion: v1 kind: ServiceAccount metadata: name: sleep --- apiVersion: v1 kind: Service metadata: name: sleep labels: app: sleep service: sleep spec: ports: - port: 80 name: http selector: app: sleep --- apiVersion: apps/v1 kind: Deployment metadata: name: sleep spec: replicas: 1 selector: matchLabels: app: sleep template: metadata: labels: app: sleep spec: terminationGracePeriodSeconds: 0 serviceAccountName: sleep containers: - name: sleep image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2 command: ["/bin/sleep", "infinity"] imagePullPolicy: IfNotPresent volumeMounts: - mountPath: /etc/sleep/tls name: secret-volume volumes: - name: secret-volume secret: secretName: sleep-secret optional: true ---
执行以下命令,创建sleep应用。
kubectl apply -f sleep.yaml -n default
执行以下命令,进入sleep Pod的
sh
终端。kubectl exec -it deploy/sleep -- sh
执行以下命令,向httpbin服务发送请求。
curl -I http://httpbin:8000/headers
预期输出:
HTTP/1.1 200 OK server: envoy date: Tue, 26 Dec 2023 07:23:49 GMT content-type: application/json content-length: 353 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 1
返回200 OK,表明访问成功。httpbin服务已经正常部署。