すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Service Mesh:HTTPBin アプリケーションのデプロイ

最終更新日:Jan 13, 2025

HTTPBin は、テスト用のオープンソース アプリケーションであり、Web デバッグによく使用されます。 HTTPBin アプリケーションをデプロイすると、HTTP リクエストのメソッド、ヘッダー、および承認情報を簡単に表示できます。このトピックでは、HTTPBin アプリケーションをデプロイする方法について説明します。

前提条件

手順

  1. データ プレーン上の Container Service for Kubernetes (ACK)クラスターに HTTPBin アプリケーションをデプロイします。

    1. 次の内容を使用して、httpbin-application.yaml ファイルを作成します。

      展開して 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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/httpbin:0.1.0
              imagePullPolicy: IfNotPresent
              name: httpbin
              ports:
              - containerPort: 80
    2. kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して HTTPBin アプリケーションをデプロイします。

      kubectl apply -f httpbin-application.yaml
  2. HTTPBin アプリケーションのトラフィック ルールを設定します。

    1. 次の内容を使用して、Istio ゲートウェイを作成します。詳細については、「Istio ゲートウェイの管理」をご参照ください。

      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. アクセステストを実行します。

    次のコマンドの ASM ゲートウェイの IP アドレス を、ASM ゲートウェイの実際の IP アドレスに置き換えます。ゲートウェイの IP アドレスを取得する方法の詳細については、「イングレス ゲートウェイの IP アドレスを取得する」をご参照ください。

    1. 次のコマンドを実行して、HTTPBin アプリケーションの /status/200 パスにアクセスします。

      curl http://${IP address of the ASM gateway}/status/200 -v

      200 OK が返されます。

    2. 次のコマンドを実行して、HTTPBin アプリケーションの /status/418 パスにアクセスします。

      curl http://${IP address of the ASM gateway}/status/418 -v

      418 Unknown が返されます。

    3. 次のコマンドを実行して、HTTPBin アプリケーションの /status/403 パスにアクセスします。

      curl http://${IP address of the ASM gateway}/status/403 -v

      403 Forbidden が返されます。

    4. 次のコマンドを実行して、HTTPBin アプリケーションの /headers パスにアクセスします。

      curl http://${IP address of the ASM gateway}/headers -H test-header:test-value -v

      レスポンスには、リクエストに含まれるヘッダーが含まれています。

関連操作

データ プレーン上のクラスターに sleep サービスをデプロイし、sleep サービスを使用して HTTPBin アプリケーションにアクセスして、HTTPBin アプリケーションが正常にデプロイされていることを確認することもできます。

  1. 次の内容を使用して、sleep.yaml ファイルを作成します。

    ##################################################################################################
    # サンプル sleep サービス
    ##################################################################################################
    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
    ---
  2. 次のコマンドを実行して、sleep サービスを作成します。

    kubectl apply -f sleep.yaml -n default
  3. 次のコマンドを実行して、sleep ポッドの shell ターミナルに移動します。

    kubectl exec -it deploy/sleep -- sh
  4. 次のコマンドを実行して、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 アプリケーションは正常にデプロイされています。