このトピックでは、サービスのデプロイ方法を解説します。
このタスクについて
カナリアデプロイメントまたはブルー/グリーンデプロイメントを使用すると、古いバージョンのサービスが動作する環境と同一の環境で、新しいバージョンのサービスを実行できます。
具体的には、古いバージョンに影響を与えることなく、古いバージョンが宛先となっているトラフィックの一部を、新しいバージョンのサービスに転送するルールを設定できます。
サービスの新しいバージョンが一定期間正常に動作した後、残りのトラフィックをサービスの新しいバージョンに転送できます。 次の手順では、サンプルサービスの古いバージョンとして
lod-nginx
という名前のサービスが作成されます。
手順
- Container Service コンソールにログインします。
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 を選択します。
- 右上隅の、[テンプレートによる作成] をクリックします。

- 対象となるクラスターおよび名前空間を選択し、サンプルテンプレートを選択するか、またはテンプレートをカスタマイズします。その後、[作成] をクリックします。
この例では、テンプレートは、必要となるデプロイ、対象となるサービスおよび Ingress を含む Nginx アプリケーションをデプロイするように自動化されています。
デプロイは NodePort を使用してポートを公開します。 Ingress により、外部アクセスサービスが提供されます。 オーケストレーションテンプレートは以下のようになります。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: old-nginx
spec:
replicas: 2
selector:
matchLabels:
run: old-nginx
template:
metadata:
labels:
run: old-nginx
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/xianlu/old-nginx
imagePullPolicy: Always
name: old-nginx
ports:
- containerPort: 80
protocol: TCP
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: old-nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: old-nginx
sessionAffity: None
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gray-release
spec:
rules:
- host: www.example.com
http:
paths:
# The service of an earlier version.
- path: /
backend:
serviceName: old-nginx
servicePort: 80
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 を選択します。
"old-nginx" を指している仮想ホスト名が確認できます。

- マスターノードにログインします。"curl" コマンドを実行し、Ingress を表示します。
curl -H "Host: www.example.com" http://<EXTERNAL_IP>
注 以下の 2 つのコマンドのどちらかを使用して <EXTERNAL_IP> の値を取得できます。
- 以下のコマンドを実行します。
kubectl get ingress
-
Container Service-Kubernetes の左側のナビゲーションウィンドウで、 を選択し、対象となる Ingress のエンドポイント情報を表示します。

