4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Istioが作るサービスメッシュ~サンプルアプリのデプロイ~

Posted at

サンプルアプリ

題材: BookInfo アプリケーション
※ 事前にIstioをKubernetesにデプロイしておいてください.

構成

image.png

サンプルアプリのデプロイ

istio-1.0.6 directory
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

bookinfo.yaml

取り敢えず,一部分を抽出してみました.
普段ならtargetPortを指定していますが,サイドカーインジェクションのため,指定しなくても大丈夫と言うことなのでしょうか.
それ以外は差し当たっていつも通りのyamlかなと思いました.それでは次に行きましょう!

##################################################################################################
# Details service
##################################################################################################
apiVersion: v1
kind: Service
metadata:
  name: details
  labels:
    app: details
spec:
  ports:
  - port: 9080
    name: http
  selector:
    app: details
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: details-v1
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: details
        version: v1
    spec:
      containers:
      - name: details
        image: istio/examples-bookinfo-details-v1:1.8.0
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 9080

Ingress Envoy(Gatewayのデプロイ)

# ingressのデプロイ
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

bookinfo-gateway.yaml

いきなりapiVersionに注目ですね.
networking.istio.io/v1alpha3が使われています.
Istioによる拡張APIでしょうか.
GatewayとVirtual Serviceどちらも初めて聞きました.
筆者はGatewayに対するDeploymentとConfigMapがこの二つかなと解釈しました.

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http: # /api/v1/products/ + /productpage or /login or /logout だとリクエストを,productpageに流すみたいですね.
  - match:
    - uri:
        exact: /productpage
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

まとめ

istioに利用するにあたって増えたAPIを理解する必要がありそうです.
次は,カナリアリリースのドキュメントでも見ていきましょう.

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?