httpbin是一个用于测试的开源应用,常用于Web调试。部署该应用后,您可以方便地查看HTTP请求的Method、Header和授权等信息。本文介绍如何部署httpbin应用。

前提条件

操作步骤

  1. 在数据面集群中部署httpbin应用。
    1. 使用以下内容,创建httpbin-application.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: httpbin
        labels:
          app: httpbin
          service: httpbin
      spec:
        ports:
        - name: http
          port: 8000
          targetPort: 80
        selector:
          app: httpbin
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: httpbin
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: httpbin
            version: v1
        template:
          metadata:
            labels:
              app: httpbin
              version: v1
          spec:
            serviceAccountName: httpbin
            containers:
            - image: docker.io/kennethreitz/httpbin
              imagePullPolicy: IfNotPresent
              name: httpbin
              ports:
              - containerPort: 80
    2. 使用kubectl连接到ACK集群,执行以下命令,部署httpbin应用。
      kubectl apply -f httpbin-application.yaml
  2. 配置httpbin应用的流量规则。
    1. 使用以下内容,创建网关规则。具体操作,请参见管理网关规则
      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
    2. 使用以下内容,创建虚拟服务。具体操作,请参见管理虚拟服务
      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
  3. 进行访问测试。
    1. 执行以下命令,访问httpbin的/status/200
      curl http://${ASM网关IP}/status/200 -v
      返回200 OK
    2. 执行以下命令,访问httpbin的/status/418
      curl http://${ASM网关IP}/status/418 -v
      返回418 Unknown
    3. 执行以下命令,访问httpbin的/status/403
      curl http://${ASM网关IP}/status/403 -v
      返回403 Forbidden
    4. 执行以下命令,访问httpbin的/headers
      curl http://${ASM网关IP}/headers -H test-header:test-value  -v
      Response会返回请求中携带的Header。