このチュートリアルでは、シンプルな hello-world
アプリケーションを Tanzu Kubernetes Grid (TKG) ワークロード クラスタに展開し、外部 IP アドレスを介して公開してから、ブラウザからオンラインでアクセスする方法について説明します。
サンプル アプリケーションを展開するには、以下が必要です。
kubectl
、Carvel ツールを実行しているローカル マシン。手順については、「vSphere with Tanzu スーパーバイザーで使用する Tanzu CLI およびその他のツールのインストール」または「スタンドアローン管理クラスタで使用する Tanzu CLI およびその他のツールのインストール」を参照してください。サンプルの構成 YAML ファイルをコピーし、ワークロード クラスタに適用して、hello-world
アプリケーションを展開します。
次の構成を使用して、hello-world
アプリケーションの YAML ファイルを作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: load-balancer-example
name: hello-world
spec:
replicas: 5
selector:
matchLabels:
app.kubernetes.io/name: load-balancer-example
template:
metadata:
labels:
app.kubernetes.io/name: load-balancer-example
spec:
containers:
- image: gcr.io/google-samples/node-hello:1.0
name: hello-world
ports:
- containerPort: 8080
ワークロード クラスタで Windows Custom Machine Images の説明に従って Windows イメージを使用している場合は、次の spec.template.spec.tolerations
を追加して、上記の containers
でインデントします。
tolerations:
- value: "windows"
key: os
operator: Equal
effect: "NoSchedule"
nodeSelector:
kubernetes.io/os: windows
YAML ファイルを load-balancer-example.yaml
という名前で保存します。
次のコマンドを実行して、kubectl
をワークロード クラスタのコンテキストに設定します。
kubectl config use-context CLUSTER-admin@CLUSTER
ここで、CLUSTER
はワークロード クラスタの名前です。
ワークロード クラスタにアプリケーションを展開します。
kubectl apply -f load-balancer-example.yaml
出力は次のようになります。
deployment.apps/hello-world created
ブラウザからアプリケーションにアクセスできるように、アプリケーションの外部 IP アドレスを公開するサービス オブジェクトを作成します。
my-service
という名前のサービス オブジェクトを作成します。
kubectl expose deployment hello-world --type=LoadBalancer --name=my-service
出力は次のようになります。
service/my-service exposed
外部 IP アドレスを使用してブラウザから hello-world
アプリケーションにアクセスします。
LoadBalancer Ingress
および TargetPort
の値を、次の手順で使用するコマンドの出力から記録します。
kubectl describe services my-service
出力は次のようになります。
Name: my-service
Namespace: default
Labels: app.kubernetes.io/name=load-balancer-example
Annotations: <none>
Selector: app.kubernetes.io/name=load-balancer-example
Type: LoadBalancer
IP Families: <none>
IP: 100.67.254.91
IPs: 100.67.254.91
LoadBalancer Ingress: 10.186.21.200
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 32202/TCP
Endpoints: 100.96.1.15:8080,100.96.1.16:8080,100.96.1.17:8080 + 2 more...
Session Affinity: None
External Traffic Policy: Cluster
注
LoadBalancer Ingress
が表示されない場合は、このワークロード クラスタ用にロード バランサが構成されていることを確認します。
ブラウザで、https://IP:PORT
に移動します。IP
は LoadBalancer Ingress
の値、PORT
は前の手順で記録した TargetPort
のポート番号の値です。たとえば、https://10.186.21.200:8080
です。
hello-world
アプリケーションには次の項目が表示されます。
Hello Kubernetes!
アプリケーションが展開されたら、Contour、Fluent Bit、Prometheus、Grafana などのパッケージを使用して、トラフィックの管理、ログの表示、および操作の監視を行うことができます。これらのパッケージをインストールするには、「Tanzu CLI を使用したパッケージのインストールと管理」を参照してください。
Velero を使用してワークロードをバックアップおよびリストアまたは移行するには、「クラスタ ワークロードのバックアップとリストア」を参照してください。