Kubernetes で動作させる際の Manifest サンプル(コンテナ版)


Tunaclo AC を Kubernetes で動作させる際の Manifest ファイルのサンプルを公開します。
ご利用されている Kubernetes 環境に合わせ、適宜修正してご利用ください。

サンプルユースケース:

  • Back Agent とアプリケーション(Web API)は同じ Pod での動作を想定しています
  • アプリケーションへの監視(ReadinessProbe/LivenessProbe)について
    • アプリケーションが死んだ場合、 通信の振り分けをしないようにするのは Tunaclo AC でも有効です
  • ローリングアップデートは、Front Agent または Back Agent のレプリカ数を3とし、3多重で構成しています
    • アップデート時に、自動で追加される Pod 数は1(0.25 * 3 = 0.75 -> 1:切り上げ)となります
    • このサンプルでは Agent の不正な接続を防ぐため、Service/Client の ReplicaNum は4を推奨しています
    • 実際に利用する際は、Agent の ReplicaNum はレプリカ数とローリングアップデート時に追加される Pod 数を考慮して設定してください
  • Front Agent の YAML ファイル:sample-frontagent.yaml

    # Example: Front Agent Deployment
    apiVersion: v1
    kind: Secret
    metadata:
      name: client-secret
    type: Opaque
    data:
      PROJECT_ID: <base64 encoded project id>
      CLIENT_ID: <base64 encoded client id>
      CLIENT_KEY: <base64 encoded client key>
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: frontagent-deployment
      labels:
        app: frontagent
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: frontagent
      template:
        metadata:
          labels:
            app: frontagent
        spec:
          containers:
          - name: frontagent
            image: tunacloac/frontagent:latest
            ports:
              - containerPort: 30000
            command: ["front_agent"]
            args:
              - -controller=https://api.kuroshio.tunaclo.net
              - -projectID=$(PROJECT_ID)
              - -agentID=$(CLIENT_ID)
              - -agentKey=$(CLIENT_KEY)
            envFrom:
            - secretRef:
                name: client-secret
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: frontagent-service
      labels:
        app: frontagent
    spec:
      ports:
      - port: 30000
        protocol: TCP
      selector:
        app: frontagent
    
  • Back Agent の YAML ファイル:sample-backagent.yaml

    # Example: Back Agent Deployment with app(nginx)
    apiVersion: v1
    kind: Secret
    metadata:
      name: service-secret
    type: Opaque
    data:
      PROJECT_ID: <base64 encoded project id>
      SERVICE_ID: <base64 encoded service id>
      SERVICE_KEY: <base64 encoded service key>
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: backagent-deployment
      labels:
        app: backagent
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: backagent
      template:
        metadata:
          labels:
            app: backagent
        spec:
          containers:
          - name: backagent
            image: tunacloac/backagent:latest
            command: ["back_agent"]
            args:
              - -controller=https://api.kuroshio.tunaclo.net
              - -projectID=$(PROJECT_ID)
              - -agentID=$(SERVICE_ID)
              - -agentKey=$(SERVICE_KEY)
            envFrom:
            - secretRef:
                name: service-secret
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
            readinessProbe:
              httpGet:
                path: /
                port: 80
              initialDelaySeconds: 1
              timeoutSeconds: 3
              periodSeconds: 1
    
前へ
次へ