インストールについて
この記事では、LinuxにKubernetesランナーをインストールする方法について説明します。Kubernetesランナーは、DockerHubで配布される最小限のDockerイメージとしてパッケージ化されています。
ステップ1:構成
Kubernetesランナーは、環境変数を使用して構成されます。この記事では、以下の構成オプションについて説明します。構成オプションの完全なリストについては、構成を参照してください。
- DRONE_RPC_HOST
Droneサーバのホスト名(およびオプションのポート)を提供します。ランナーはホストアドレスでサーバに接続して、実行用のパイプラインを受信します。 - DRONE_RPC_PROTO
Droneサーバへの接続に使用されるプロトコルを提供します。値はhttpまたはhttpsのいずれかである必要があります。 - DRONE_RPC_SECRET
Droneサーバでの認証に使用される共有シークレットを提供します。これは、Droneサーバ構成で定義されているシークレットと一致する必要があります。
ステップ2:認証
Kubernetesランナーは、クラスタ内認証を使用してKubernetesAPIと通信します。クラスタにデプロイするときに、Kubernetesランナーがサービスアカウントに関連付けられていることを確認してください。
ステップ3:インストール
以下は、Kubernetesランナーの設定とインストールに使用される基本的なマニフェストファイルです。以下の環境変数を正しい値に置き換えることを忘れないでください。
rbacルールのサンプルは次のとおりです。
1 kind: Role
2 apiVersion: rbac.authorization.k8s.io/v1
3 metadata:
4 namespace: default
5 name: drone
6 rules:
7 - apiGroups:
8 - ""
9 resources:
10 - secrets
11 verbs:
12 - create
13 - delete
14 - apiGroups:
15 - ""
16 resources:
17 - pods
18 - pods/log
19 verbs:
20 - get
21 - create
22 - delete
23 - list
24 - watch
25 - update
26
27 ---
28 kind: RoleBinding
29 apiVersion: rbac.authorization.k8s.io/v1
30 metadata:
31 name: drone
31 namespace: default
33 subjects:
34 - kind: ServiceAccount
35 name: default
36 namespace: default
37 roleRef:
38 kind: Role
39 name: drone
40 apiGroup: rbac.authorization.k8s.io
そして、これがデプロイメントの例です。
1 apiVersion: apps/v1
2 kind: Deployment
3 metadata:
4 name: drone
5 labels:
6 app.kubernetes.io/name: drone
7 spec:
8 replicas: 1
9 selector:
10 matchLabels:
11 app.kubernetes.io/name: drone
12 template:
13 metadata:
14 labels:
15 app.kubernetes.io/name: drone
16 spec:
17 containers:
18 - name: runner
19 image: drone/drone-runner-kube:latest
20 ports:
21 - containerPort: 3000
22 env:
23 - name: DRONE_RPC_HOST
24 value: drone.company.com
25 - name: DRONE_RPC_PROTO
26 value: http
27 - name: DRONE_RPC_SECRET
28 value: super-duper-secret
ステップ4:検証
kubectl logs drone -c runner
コマンドを使用してログを表示し、ランナーがDroneサーバとの接続を正常に確立したことを確認します。
$ kubectl logs drone -c runner
INFO[0000] starting the server
INFO[0000] successfully pinged the remote server