Spring BootアプリをAzure Kubernetes Serviceで動かす(3)- デプロイしたアプリを更新する -

はじめに

先日からAzure Kubernetes Serviceを検証しています。まだまだKubernetesがあまりよくわかっていないのですが、一個ずつ学べていけたらと。

過去のものは以下。

今回はデプロイしたアプリのバージョンアップを行います。

アプリケーションの更新

まずはアプリケーションを更新します。更新する内容は何でもいいのですが、画面に表示する文言が変わったほうがわかりやすいので、第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.gradleversion0.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

これで最初のバージョンが動くようになります。

アプリケーションを更新する

アプリケーションの更新は以下のドキュメントを参考にやってみます。

learn.microsoft.com

上記の処理ではまったところは、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

これを実行すると、無事、バージョンアップを行うことができました。

ここまでのソース

ここまでのソースです。

github.com