サービス
Droneは、パイプラインの一部としてデタッチされたサービスコンテナの起動をサポートします。サービスの一般的な使用例は、単体テストで実行中のredisサーバが必要な場合です。次に例を示します。
1 kind: pipeline
2 type: kubernetes
3 name: default
4
5 services:
6 - name: cache
7 image: redis
サービスコンテナはパイプラインステップと同じネットワークを共有し、ローカルホストアドレスでアクセスできます。前の例では、redisコンテナはtcp://127.0.0.1:6379
でパイプラインからアクセスできます。
1 kind: pipeline
2 type: kubernetes
3 name: default
4
5 steps:
6 - name: ping
7 image: redis
8 commands:
9 - redis-cli -h 127.0.0.1 ping
10
11 services:
12 - name: cache
13 image: redis
サービスコンテナの終了コードは無視され、ゼロ以外の終了コードはパイプライン全体に失敗しないことに注意することが重要です。Droneは、パイプラインの完了後にサービスコンテナを強制終了する必要があることが多いため、サービスコンテナがゼロ以外の終了コードで終了することを期待しています。
切り離されたステップ
サービスは、分離されたパイプラインステップとして、パイプラインで直接定義することもできます。これは、パイプラインの他のステップと比較して、サービスの開始時期を直接制御する必要がある場合に役立ちます。
1 kind: pipeline
2 type: kubernetes
3 name: default
4
5 steps:
6 - name: cache
7 image: redis
8 detach: true
9
10 - name: ping
11 image: redis
12 commands:
13 - redis-cli ping
一般的な問題
このセクションでは、サービスを構成するときにユーザーが遭遇するいくつかの一般的な問題に焦点を当てます。引き続き問題が発生する場合は、よくある質問も確認してください。 yamlをサンプルのサービス構成と比較することもできます。
初期化
コンテナが開始された後、コンテナ内で実行されているソフトウェア(redisなど)は、初期化して接続の受け入れを開始するのに時間がかかることを覚えておくことが重要です。
接続を試みる前に、サービスを初期化するのに十分な時間を与えてください。素朴な解決策は、sleepコマンドを使用することです。
kind: pipeline
type: kubernetes
name: default
steps:
- name: ping
image: redis
commands:
+ - sleep 5
- redis-cli -h cache ping
services:
- name: cache
image: redis