HTTPBin は、テスト用のオープンソース アプリケーションであり、Web デバッグによく使用されます。 HTTPBin アプリケーションをデプロイすると、HTTP リクエストのメソッド、ヘッダー、および承認情報を簡単に表示できます。このトピックでは、HTTPBin アプリケーションをデプロイする方法について説明します。
前提条件
手順
データ プレーン上の Container Service for Kubernetes (ACK)クラスターに HTTPBin アプリケーションをデプロイします。
次の内容を使用して、httpbin-application.yaml ファイルを作成します。
kubectl を使用して ACK クラスターに接続し、次のコマンドを実行して HTTPBin アプリケーションをデプロイします。
kubectl apply -f httpbin-application.yaml
HTTPBin アプリケーションのトラフィック ルールを設定します。
次の内容を使用して、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次の内容を使用して、仮想サービスを作成します。詳細については、「仮想サービスの管理」をご参照ください。
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 アドレスを、ASM ゲートウェイの実際の IP アドレスに置き換えます。ゲートウェイの IP アドレスを取得する方法の詳細については、「イングレス ゲートウェイの IP アドレスを取得する」をご参照ください。次のコマンドを実行して、HTTPBin アプリケーションの
/status/200パスにアクセスします。curl http://${IP address of the ASM gateway}/status/200 -v200 OKが返されます。次のコマンドを実行して、HTTPBin アプリケーションの
/status/418パスにアクセスします。curl http://${IP address of the ASM gateway}/status/418 -v418 Unknownが返されます。次のコマンドを実行して、HTTPBin アプリケーションの
/status/403パスにアクセスします。curl http://${IP address of the ASM gateway}/status/403 -v403 Forbiddenが返されます。次のコマンドを実行して、HTTPBin アプリケーションの
/headersパスにアクセスします。curl http://${IP address of the ASM gateway}/headers -H test-header:test-value -vレスポンスには、リクエストに含まれるヘッダーが含まれています。
関連操作
データ プレーン上のクラスターに sleep サービスをデプロイし、sleep サービスを使用して HTTPBin アプリケーションにアクセスして、HTTPBin アプリケーションが正常にデプロイされていることを確認することもできます。
次の内容を使用して、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 ---次のコマンドを実行して、sleep サービスを作成します。
kubectl apply -f sleep.yaml -n default次のコマンドを実行して、sleep ポッドの
shellターミナルに移動します。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: 1200 OK が返されます。これは、アクセスが成功したことを示します。 HTTPBin アプリケーションは正常にデプロイされています。