# Kubernetes

***更新: Roboflow Enterprise Customer の場合、以下を使用して Kubernetes 環境に Roboflow Inference Service をデプロイできます*** [***この Helm chart***](https://github.com/roboflow/inference/tree/main/inference/enterprise/helm-chart)***.***

あるいは、Kubernetes cluster に pod と service をデプロイするためのシンプルな Kubernetes manifests を以下に示します。

以下の Kubernetes manifest は、CPU ベースの単一 roboflow infer pod を作成し、それに cluster-IP service を接続する簡単な例を示しています。

```yaml
# Pod
---
apiVersion: v1
kind: Pod
metadata:
  name: roboflow
  labels:
    app.kubernetes.io/name: roboflow
spec:
  containers:
  - name: roboflow
    image: roboflow/roboflow-inference-server-cpu
    ports:
    - containerPort: 9001
      name: rf-pod-port


# Service
---
apiVersion: v1
kind: Service
metadata:
  name: rf-service
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: roboflow
  ports:
  - name: rf-svc-port
    protocol: TCP
    port: 9001
    targetPort: rf-pod-port
```

(上記の例では、Kubernetes cluster が Docker hub から images をダウンロードできることを前提としています)

上記の yaml の内容を `roboflow.yaml` として保存し、 `kubectl` cli を使って pod と service を Kubernetes cluster の default namespace にデプロイします。

```
kubectl apply -f roboflow.yaml
```

\
(ClusterIP タイプの) service が作成されます。Kubernetes cluster 内からは、この URI で Roboflow inference にアクセスできます: `http://rf-service.default.svc:9001`

### この例を超えて

Kubernetes により、いくつかの高度な機能や拡張を Roboflow inference service に組み込めます。たとえば、上記の例を次のようなより高度なユースケースに拡張できます。

* nodeSelectors を使用して、Kubernetes 環境内の GPU machines node pools 上で pod(s) をホストし、 `roboflow/inference-server:gpu` image
* を使用する
* Kubernetes deployments を作成して Roboflow inference service を水平 autoscale し、CPU usage などの特定の metrics に基づく auto-scaling triggers を設定する。
* nodePort や LoadBalancer のような異なる service types を使用して、Roboflow inference service を外部に公開する
* ingress controllers を使用して、TLS（HTTPs）などで Roboflow inference を公開する。
* Roboflow inference service に monitoring と alerting を追加する\
  license server と offline modes を統合する
