はじめに
先日からAzure Kubernetes Serviceを検証しています。まだまだKubernetesがあまりよくわかっていないのですが、一個ずつ学べていけたらと。
過去のものは以下。
- Spring BootアプリをAzure Kubernetes Serviceで動かす(2)- YAMLファイルを使わずにデプロイする - - miyohide's blog
- Spring BootアプリをAzure Kubernetes Serviceで動かす(1) - miyohide's blog
今回はデプロイしたアプリのバージョンアップを行います。
アプリケーションの更新
まずはアプリケーションを更新します。更新する内容は何でもいいのですが、画面に表示する文言が変わったほうがわかりやすいので、第1回目で作成したアプリのGreetingController
にて、template
変数に設定したメッセージを"Hello, %s!"
から"Hello, %s! v2"
に変更します。
@RestController public class GreetingController { // 下の値を変えただけ private static final String template = "Hello, %s! v2"; private final AtomicLong counter = new AtomicLong(); @GetMapping("/") public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }
build.gradle
のversion
を0.0.2
に変更し、あとはDockerイメージを作成して、Azure Container Registryにpushしておきます。以下のコマンドを打てばpushされます。
az acr login -n Azure Container Registryの名前 && ./gradlew jib
Azure Kubernetes Service上で最初のバージョンをデプロイする
デプロイは第2回目のようにYAMLファイルを書かないでデプロイしてみます。
まず、以下のコマンドで作成したAzure Kubernetes Serviceクラスターに接続するようkubectlを設定します。
az aks get-credentials --resource-group リソースグループ名 --name Azure Kubernetes Serviceの名前
あとは、Deploymentを以下のコマンドで作成します。イメージとして古いバージョンを指定しておきます。
kubectl create deployment sbapp --image=Azure Container Registry名.azurecr.io/spring_boot_on_k8s:0.0.1
次にServiceを作成します。
kubectl create service loadbalancer sbapp --tcp=80:8080
これで最初のバージョンが動くようになります。
アプリケーションを更新する
アプリケーションの更新は以下のドキュメントを参考にやってみます。
上記の処理ではまったところは、kubectl set image deployment
を発行する部分です。最初、kubectl set image deployment sbapp sbapp=Azure Container Registry名.azurecr.io/spring_boot_on_k8s:0.0.2
と実行していたのですが、error: unable to find container sbapp
と出てうまく動きませんでした。
結局、sbapp=Azure Container Registry名.azurecr.io/spring_boot_on_k8s:0.0.2
の部分が間違っており、ワークロードブレードのsbapp
をたどって...
以下の画面で出てくるコンテナーの名前を指定する必要がありました。
つまりは、以下のコマンドを実行する必要がありました。
kubectl set image deployment sbapp spring-boot-on-k8s-xxxxxxx=Azure Container Registry名.azurecr.io/spring_boot_on_k8s:0.0.2
これを実行すると、無事、バージョンアップを行うことができました。
ここまでのソース
ここまでのソースです。