🎉

PipeCD: v0.44.0がリリースされたよ

2023/06/27に公開

tl;dr

2023-06-24にPipeCDの最新バージョンであるv0.44.0がリリースされました。
Release Notesの中からNew FeaturesとNotable Changesを紹介していきます。

New Features

Custom syncステージ

https://github.com/pipe-cd/pipecd/pull/4223
Custom Syncはデプロイメントのステップで任意のシェルコマンドを実行できる機能です。

LambdaをSAM(Serverless Application Model)コマンドによってデプロイしたい場合は以下のようにpipelineを設定することで、可能になります。

apiVersion: pipecd.dev/v1beta1
kind: LambdaApp
spec:
  name: sam-simple
  labels:
    env: example
    team: abc
  planner:
    # Must add this configuration to force use CUSTOM_SYNC stage.
    alwaysUsePipeline: true
  pipeline:
    stages:
      - name: CUSTOM_SYNC
        with:
          envs:
            AWS_PROFILE: "sample"
          run: |
            cd sam-app
            sam build
            echo y | sam deploy --profile $AWS_PROFILE  

1点注意点として、このCustom Syncで実行されるコマンドは既にpipedの実行環境にパスが通っていることが前提となります。そのため、公式で提供されているpipedではなくユーザーがカスタムイメージを作成する必要があります。このあたりもどのようにユーザー側の負担を小さくしながらカスタムイメージを提供するか現在Discussionにて議論が進んでいます。興味がある方は是非ご意見お待ちしています。

Manifest Attachment

https://github.com/pipe-cd/pipecd/pull/4289
Manifest AttachmentはKubernetesのConfigMapのような機能をKubernetes以外のApplicationでも使用可能にする機能です。

ECSを例にして説明します。
以下のようなconfig.yamlを作成します。

mysql:
  rootPassword: "test"
  database: "pipecd"

app.pipecd.yamlは以下のように書きます。

apiVersion: pipecd.dev/v1beta1
kind: ECSApp
spec:
  name: secret-management
    ...
  attachment:
    sources:
      config: config.yaml
    targets:
      - taskdef.yaml

taskdef.yamlのなかでconfig.yamlの内容を参照する方法です。

...
containerDefinitions:
  - command: "echo {{ .attachment.config }}"
    image: nginx:1
    cpu: 100
    memory: 100
    name: web
...

この機能は単体でも使用できますが、Secret Managementと組み合わせるとよりセキュアに使用することができます。

Terraform v1.5.0 import blockのサポート

https://github.com/pipe-cd/pipecd/pull/4412
Terraform v1.5.0で追加されたimport blockへの対応です。Terraform v1.5.0以降のバージョンを使用した場合、add, change, destroyに加えて、importが表示されるようになります。

Deploymentメトリクス

https://github.com/pipe-cd/pipecd/pull/4361
各DeploymentについてのPrometheusメトリクスが追加されました。これによりでDeploymentの詳細な情報を取得できるようになります。

// 現在RUNNING状態のDeploymentの数
count(count by (deployment) (deployment_status{status="DEPLOYMENT_RUNNING"}))

// 1時間以上RUNNINGステータスのデプロイメントがあるか検知
sum_over_time(deployment_status{status="DEPLOYMENT_RUNNING"}[1h:1m]) >= 60 and deployment_status{status="DEPLOYMENT_RUNNING"} == 1

// 直近24時間以内の完了したDeploymentの数
sum(floor(increase(deployment_status{pipecd_component=\"piped\",status=~\"DEPLOYMENT_CANCELLED|DEPLOYMENT_SUCCESS|DEPLOYMENT_FAILURE\"}[24h])))

このメトリクスはpipedにて収集されており、pipedのadmin serverから取得することが可能になっています。そのためpipedを利用する各チームは長時間終わらないDeploymentの検知などのアラート設定が可能になりました。

kubectl server side applyサポート

https://github.com/pipe-cd/pipecd/pull/4375
Kubernetes v1.22でGAとなったServer-Side Applyの対応です。k8s workloadにpipecd.dev/sync-by-replaceアノテーションをつけることでpipedがkubectl apply--server-sideフラグを追加します。

Notable Changes

Deployment詳細ページでのplatform providerの表示

https://github.com/pipe-cd/pipecd/pull/4369
Deployment詳細ページにPlatform providerが表示されるようになりました。

Slack APIのサポート

https://github.com/pipe-cd/pipecd/pull/4355
Slack連携では今までwebhookのみの対応でしたが、Slack APIが使えるようになりました。

Lambdaのアーキテクチャーのサポート

https://github.com/pipe-cd/pipecd/pull/4351
AWS Lambdaのアーキテクチャーを指定できるようになりました。

ログレベルのサポート

https://github.com/pipe-cd/pipecd/pull/4393
ログレベルを設定できるようになりました。

ECS EnableExecuteCommandサポート

https://github.com/pipe-cd/pipecd/pull/4332
ECSのenableExecuteCommandをサポートしました。

Discussion