Skip to content

Latest commit

 

History

History
206 lines (162 loc) · 5.33 KB

5_multiple_vsite.md

File metadata and controls

206 lines (162 loc) · 5.33 KB

複数virtual-siteの使い方

Namespaceには複数のVirtual-siteを設定できます。例えば pref-tokyoやpref-osakaを作成し、実際のSiteが複数Virtual-site内に存在します。 Vk8sを作成すると、所属させるVirtual-siteを選択できます。 図にすると以下のような階層型構造になります。

vsite_object

DeploymentやServiceなどのManifestを作成すると、Vk8s内の全てのVirtual siteに反映されます。特定のVirtual-siteだけにManifestを反映させてい場合はAnnotation ves.io/sitesを使用します。

例えば、virtual-site: pref-tokyoとpref-osakaの2つがありpref-tokyoのみに反映させる場合、Annotationは

  annotations:
    ves.io/virtual-sites: namespace/pref-tokyo

となります。

複数指定する場合は

  annotations:
    ves.io/virtual-sites: namespace/pref-tokyo,namespace/pref-osaka

となります。

複数virtual siteをもつワークロードの作成

namespace:multi-sitesを作成し、vk8sに2つの以下の2つのVirutal siteを設定します。

Virtual site1

  • Name: pref-tokyo
  • Site type: CE
  • Site Selecter Expression: pref:tokyo

Virtual site2

  • Name: pref-osaka

  • Site type: CE

  • Site Selecter Expression: pref:osaka

  • Freeユーザーの場合は既存のNamespaceを先に削除してから作成してください。

v8s_multi_vsite

vk8sに2つのVirtual-site pref-tokyopref-osakaに、Deploymentを作成します。

pref-tokyo

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tokyo-app
  annotations:
    ves.io/virtual-sites: multi-sites/pref-tokyo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tokyo-app
  template:
    metadata:
      labels:
        app: tokyo-app
    spec:
      containers:
        - name: tokyo-app
          image: dnakajima/inbound-app:1.0
          ports:
            - containerPort: 8080

pref-osaka

apiVersion: apps/v1
kind: Deployment
metadata:
  name: osaka-app
  annotations:
    ves.io/virtual-sites: multi-sites/pref-osaka
spec:
  replicas: 1
  selector:
    matchLabels:
      app: osaka-app
  template:
    metadata:
      labels:
        app: osaka-app
    spec:
      containers:
        - name: osaka-app
          image: dnakajima/inbound-app:1.0
          ports:
            - containerPort: 8080

それぞれのVirtual siteにDeploymentが作成されます。

deployment_multi_vsite

vk8sに2つのVirtual-site pref-tokyopref-osakaに、Serviceを作成します

pref-tokyo

apiVersion: v1
kind: Service
metadata:
  name: tokyo-app
  labels:
    app: tokyo-app
  annotations:
    ves.io/virtual-sites: multi-sites/pref-tokyo
spec:
  ports:
  - port: 8080
    targetport: 8080
    protocol: TCP
  selector:
    app: tokyo-app

pref-osaka

apiVersion: v1
kind: Service
metadata:
  name: osaka-app
  labels:
    app: osaka-app
  annotations:
    ves.io/virtual-sites: multi-sites/pref-osaka
spec:
  ports:
  - port: 8080
    targetport: 8080
    protocol: TCP
  selector:
    app: osaka-app

Ingress Gatewayの設定

作成した2つのサービスをロードバランスして公開します。

ingress_multi_vsite

Origin poolの作成

作成したワークロードをそれぞれtokyo-apposaka-appとしてOrigin-poolに登録します。

Manage -> Origin Pools で “Add Origin Pool”を選択しま

  • Name: tokyo-app

  • Origin Servers

    • Select Type of Origin Server: k8sService Name of Origin Server on given Sites
    • Service Name: tokyo-app.multi-sitesを入力します。 (kubernetes service名.namespaceのフォーマット)
    • Select Site or Virtual Site: Virtual Site -> multi-sites/pref-tokyo
    • Select Network on the Site: Vk8s Networks on Site
    • Port: 8080
  • Name: osaka-app

  • Origin Servers

    • Select Type of Origin Server: k8sService Name of Origin Server on given Sites
    • Service Name: osaka-app.multi-sitesを入力します。 (kubernetes service名.namespaceのフォーマット)
    • Select Site or Virtual Site: Virtual Site -> multi-sites/pref-osaka
    • Select Network on the Site: Vk8s Networks on Site
    • Port: 8080

origin_multi_vsite1

HTTP loadbalancerの作成

Manage -> HTTP Load Balancers で “Add HTTP load balancer”を選択します。

  • Name: multi-vsite-lb
  • Domains: dummy.domain-name (設定するとDNS infoにDCSからdomain名が払い出されます。設定後に払い出されたドメイン名を設定してください。)
  • Select Type of Load Balancer: HTTP
  • Default Origin servers: 上記で作成した2つのOrigin poolを設定

Weightは100,100にしていますが、比率を変えることで、ローバランスレシオを調節できます。

http_lb_multi_vsite1

Curlなどで確認すると、tokyo-app, osaka-appでロードバランスされることが確認できます。

curl http://ves-io-3b89b61f-b82b-4140-915a-96f56818fd56.ac.vh.ves.io/
<html>
<body>
This pod is running on tokyo-app-767948955-jpbnx
</body>
</html>

curl http://ves-io-3b89b61f-b82b-4140-915a-96f56818fd56.ac.vh.ves.io/
<html>
<body>
This pod is running on osaka-app-7cc7958f77-2x4br
</body>
</html>