PipeCD: v0.44.0がリリースされたよ
tl;dr
2023-06-24にPipeCDの最新バージョンであるv0.44.0がリリースされました。
Release Notesの中からNew FeaturesとNotable Changesを紹介していきます。
New Features
Custom syncステージ
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
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のサポート
Terraform v1.5.0で追加されたimport blockへの対応です。Terraform v1.5.0以降のバージョンを使用した場合、add
, change
, destroy
に加えて、import
が表示されるようになります。
Deploymentメトリクス
各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サポート
Server-Side Applyの対応です。k8s workloadにpipecd.dev/sync-by-replace
アノテーションをつけることでpipedがkubectl apply
に--server-side
フラグを追加します。
Notable Changes
Deployment詳細ページでのplatform providerの表示
Slack APIのサポート
Slack連携では今までwebhookのみの対応でしたが、Slack APIが使えるようになりました。
Lambdaのアーキテクチャーのサポート
アーキテクチャーを指定できるようになりました。
AWS Lambdaのログレベルのサポート
ログレベルを設定できるようになりました。
ECS EnableExecuteCommandサポート
enableExecuteCommand
をサポートしました。
Discussion