Skip to content

1. API Backendリソースの削除

デプロイした API Backend リソースの削除手順について解説します。

1-1. QVS Configの編集

  1. QVS Config に記述したリソース宣言をコメントアウトします。

    Qmonus Value Stream では、リポジトリに登録されている QVS Config の内容を編集して AssemblyLine を再実行することで、リソースを削除できます。今回は、本チュートリアルで作成した以下の QVS Config を編集します。

    • /path/to/repository/.valuestream/gcp-api-backend.yaml
    • /path/to/repository/.valuestream/gcp-shared-infra.yaml

    削除するリソースは、QVS Config の designPatterns フィールドに記載された Cloud Native Adapter の内容をコメントアウトすることで指定できます。 ここでは、本チュートリアルで作成したリソースを削除するため、以下のように QVS Config を編集します。

    yaml
    params:
      - name: appName
        type: string
      - name: gcpProjectId
        type: string
      - name: dnsZoneProjectId
        type: string
      - name: dnsZoneName
        type: string
      - name: dnsARecordSubdomain
        type: string
      - name: mysqlInstanceId
        type: string
      - name: mysqlDatabaseName
        type: string
      - name: mysqlUserName
        type: string
      - name: k8sNamespace
        type: string
      - name: imageName
        type: string
      - name: port
        type: string
      - name: mysqlInstanceIpAddress
        type: string
      - name: env1
        type: string
      - name: cloudArmorAllowedSourceIps
        type: array
    modules:
      - name: qmonus.net/adapter/official
        revision: v0.26.0
    designPatterns:
    -  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend
    -    params:
    -      appName: $(params.appName)
    -      mysqlInstanceIpAddress: $(params.mysqlInstanceIpAddress)
    -      dnsZoneProjectId: $(params.dnsZoneProjectId)
    -      gcpProjectId: $(params.gcpProjectId)
    -      mysqlDatabaseName: $(params.mysqlDatabaseName)
    -      mysqlUserName: $(params.mysqlUserName)
    -      dnsARecordSubdomain: $(params.dnsARecordSubdomain)
    -      mysqlInstanceId: $(params.mysqlInstanceId)
    -      dnsZoneName: $(params.dnsZoneName)
    -      imageName: $(params.imageName)
    -      k8sNamespace: $(params.k8sNamespace)
    -      port: $(params.port)
    -      environmentVariables:
    -        - TLS_OPTION: $(params.env1)
    -      cloudArmorAllowedSourceIps:
    -        - $(params.cloudArmorAllowedSourceIps[*])
    +#  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend
    +#    params:
    +#      appName: $(params.appName)
    +#      mysqlInstanceIpAddress: $(params.mysqlInstanceIpAddress)
    +#      dnsZoneProjectId: $(params.dnsZoneProjectId)
    +#      gcpProjectId: $(params.gcpProjectId)
    +#      mysqlDatabaseName: $(params.mysqlDatabaseName)
    +#      mysqlUserName: $(params.mysqlUserName)
    +#      dnsARecordSubdomain: $(params.dnsARecordSubdomain)
    +#      mysqlInstanceId: $(params.mysqlInstanceId)
    +#      dnsZoneName: $(params.dnsZoneName)
    +#      imageName: $(params.imageName)
    +#      k8sNamespace: $(params.k8sNamespace)
    +#      port: $(params.port)
    +#      environmentVariables:
    +#        - TLS_OPTION: $(params.env1)
    +#      cloudArmorAllowedSourceIps:
    +#        - $(params.cloudArmorAllowedSourceIps[*])
      - pattern: qmonus.net/adapter/official/pipeline/scan:trivyGcp
    yaml
    params:
      - name: appName
        type: string
      - name: gcpProjectId
        type: string
      - name: dnsZoneProjectId
        type: string
      - name: dnsZoneName
        type: string
      - name: dnsARecordSubdomain
        type: string
      - name: mysqlInstanceId
        type: string
      - name: mysqlDatabaseName
        type: string
      - name: mysqlUserName
        type: string
      - name: k8sNamespace
        type: string
      - name: imageName
        type: string
      - name: port
        type: string
      - name: mysqlInstanceIpAddress
        type: string
      - name: env1
        type: string
      - name: cloudArmorAllowedSourceIps
        type: array
    modules:
      - name: qmonus.net/adapter/official
        revision: v0.26.0
    designPatterns:
    #  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend
    #    params:
    #      appName: $(params.appName)
    #      mysqlInstanceIpAddress: $(params.mysqlInstanceIpAddress)
    #      dnsZoneProjectId: $(params.dnsZoneProjectId)
    #      gcpProjectId: $(params.gcpProjectId)
    #      mysqlDatabaseName: $(params.mysqlDatabaseName)
    #      mysqlUserName: $(params.mysqlUserName)
    #      dnsARecordSubdomain: $(params.dnsARecordSubdomain)
    #      mysqlInstanceId: $(params.mysqlInstanceId)
    #      dnsZoneName: $(params.dnsZoneName)
    #      imageName: $(params.imageName)
    #      k8sNamespace: $(params.k8sNamespace)
    #      port: $(params.port)
    #      environmentVariables:
    #        - TLS_OPTION: $(params.env1)
    #      cloudArmorAllowedSourceIps:
    #        - $(params.cloudArmorAllowedSourceIps[*])
      - pattern: qmonus.net/adapter/official/pipeline/scan:trivyGcp
    yaml
    params:
      - name: appName
        type: string
      - name: gcpProjectId
        type: string
    modules:
      - name: qmonus.net/adapter/official
        revision: v0.26.0
    designPatterns:
    -  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend/sharedInfrastructure
    -    params:
    -      appName: $(params.appName)
    -      gcpProjectId: $(params.gcpProjectId)
    +#  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend/sharedInfrastructure
    +#    params:
    +#      appName: $(params.appName)
    +#      gcpProjectId: $(params.gcpProjectId)
    yaml
    params:
      - name: appName
        type: string
      - name: gcpProjectId
        type: string
    modules:
      - name: qmonus.net/adapter/official
        revision: v0.26.0
    designPatterns:
    #  - pattern: qmonus.net/adapter/official/adapters/gcp/container/kubernetes/apiBackend/sharedInfrastructure
    #    params:
    #      appName: $(params.appName)
    #      gcpProjectId: $(params.gcpProjectId)
  2. 変更をステージに追加します。

    git add .valuestream/gcp-shared-infra.yaml .valuestream/gcp-api-backend.yaml
  3. リポジトリに変更をコミットします。

    git commit -m "Delete api backend resources"
  4. リポジトリに変更をプッシュします。

    git push
  5. Git コミットのハッシュ値を取得します。

    git rev-parse HEAD

1-2. AssemblyLineの実行

本チュートリアルでは、先に gcp-shared-infra の AssemblyLine を実行して基盤となるクラウドリソースをデプロイした後、gcp-api-backend の AssemblyLine を実行して API Backend をデプロイしました。 このため、リソースの削除においては、先に gcp-api-backend の AssemblyLine を実行して API Backend のリソースを削除した後、gcp-shared-infra の AssemblyLine を実行して基盤となるクラウドリソースを削除する、という順番で実施します。

  1. 左のメニュー一覧の AssemblyLine をクリックして、AssemblyLine 一覧ページに移動します。

  2. チュートリアルで作成したgcp-api-backendのAssemblyLineを選択します。

  3. 画面上部の Input Parameters に以下を入力し、RUN ボタンを押下して AssemblyLine を実行します。

    • gitRevision: 1-1で取得した Git コミットのハッシュ値
    • imageTagName: backend
  4. AssemblyLine の実行が完了したら、ログを確認します。

    削除に成功すると、deploy Pipeline の deploy Task の step-deploy Step のログから、リソースが削除されたことを確認できます。

    API Backendリソースの削除手順

    ログの以下の箇所から、削除されたリソースの総数を確認できます。

    Resources:
        - 18 deleted
        1 unchanged

    1 unchanged のリソースについては、Qmonus Value Stream の仕様上出力されているもので、デプロイされたユーザのリソースの削除には影響ありません。

  5. AssemblyLine 一覧ページに移動して、azure-shared-infra の AssemblyLine を選択します。

  6. 画面上部の Input Parameters に以下を入力し、RUN ボタンを押下して AssemblyLine を実行します。

    • gitRevision: 1-1で取得した Git コミットのハッシュ値
  7. AssemblyLine の実行が完了したら、ログを確認します。

    削除に成功すると、deploy Pipeline の deploy Task の step-deploy Step のログから、リソースが削除されたことを確認できます。

    API Backendリソースの削除手順

    ログの以下の箇所から、削除されたリソースの総数を確認できます。

    Resources:
        - 28 deleted
        1 unchanged
  8. GCPにログインして、本チュートリアルで作成したリソースが削除されていることを確認します。

以上で、API Backend リソースの削除は完了です。