Kubernetes
Kubernetes ↗ は、コンテナのオーケストレーションおよび管理ツールです。Kubernetesは宣言的であり、.ymlファイルで最終状態を定義します。Kubernetesクラスターには、マスターとワーカーの2つのコンポーネントがあります。マスターは、ユーザーがコンテナを管理するために対話する制御プレーンです。ワーカーノードは、コンテナがデプロイされ、実行される場所です。Kubernetesクラスターは、プライベートネットワークを介して内部的に接続されています。Cloudflare Tunnelを使用すると、Kubernetesクラスター内で実行されているサービスを公開することができます。
このガイドでは、Googleが管理するKubernetes GKEを使用します。 始めるには、以下の手順を実行してください。
- gcloud CLI ↗ と kubectl CLI ↗ をインストールします。
- GCPコンソールで新しいKubernetesクラスターを作成します。
- クラスターに接続するために、3つのドットを選択し、ドロップダウンから接続を選択します。
- 表示されるコマンドをコピーし、ローカルターミナルに貼り付けます。
ポッドは、Kubernetesが作成する基本的なデプロイ可能オブジェクトです。ポッドは、クラスター内で実行されているプロセスのインスタンスを表します。以下の .ymlファイル (httpbin-app.yml) は、httpbinアプリケーションを含むポッドを作成します。ダウンタイムを防ぐために、2つのレプリカを作成します。アプリケーションは、クラスター内で web-service:80 でアクセス可能になります。
apiVersion: apps/v1kind: Deploymentmetadata: name: httpbin-deploymentspec: selector: matchLabels: app: httpbin replicas: 2 template: metadata: labels: app: httpbin spec: containers: - name: httpbin image: kennethreitz/httpbin:latest ports: - containerPort: 80---apiVersion: v1kind: Servicemetadata: name: web-servicespec: selector: app: httpbin ports: - protocol: TCP port: 80以下のコマンドを使用して、アプリケーションがクラスター内で実行を開始します。
kubectl create -f httpbin-app.ymlポッドのステータスは、コンソールまたは kubectl get pod コマンドを使用して確認できます。
kubectl get podsトンネルは、ダッシュボードを通じて このガイド を使用して作成できます。コネクタをインストールするためのコマンドを実行する代わりに、環境としてdockerを選択し、全コマンドではなくトークンのみをコピーします。トンネルを http://web-service:80 ↗ から k8.example.com へルーティングするように設定します。以下の内容で cloudflared-deployment.yml ファイルを作成します。
apiVersion: apps/v1kind: Deploymentmetadata: labels: app: cloudflared name: cloudflared-deployment namespace: defaultspec: replicas: 2 selector: matchLabels: pod: cloudflared template: metadata: creationTimestamp: null labels: pod: cloudflared spec: containers: - command: - cloudflared - tunnel # k8s環境では、メトリクスサーバーは実行されているポッドの外部でリッスンする必要があります。 # アドレス 0.0.0.0:2000 は、名前空間内の任意のポッドを許可します。 - --metrics - 0.0.0.0:2000 - run args: - --token - <token value> image: cloudflare/cloudflared:latest name: cloudflared livenessProbe: httpGet: # Cloudflaredには、エッジへのアクティブな接続がある場合にのみ200を返す/readyエンドポイントがあります。 path: /ready port: 2000 failureThreshold: 1 initialDelaySeconds: 10 periodSeconds: 10このファイルは、以下のコマンドでデプロイされます。
kubectl create -f cloudflared-deployment.ymlクラスター内のアプリケーションは、設定されたドメイン名を介してアクセス可能になります。