OSS 버전 drone.io 0.4의 환경을 Kubernetes로 구축
개요
drone0.4 의 plugin 가 증가해 왔으므로, 0.3 으로부터의 버전 업을 검토중.
플러그인 목록은 여기에서 확인할 수 있습니다.
drone0.4 환경에 대해서는, Docker화의 뒤에 kubernetes로 구축한다.
kubernetes의 구축은 귀찮기 때문에 GKE를 이용한다.
리포지토리는 Bitbucket 을 이용.
kubernetes 환경 구축
컨테이너 클러스터만 만들 수 있습니다.
이전 작성한 terraform 의 코드를 이용.
drone sqlite 데이터베이스 용 Persistent Disk 용 tf 파일을 추가합니다.
디스크 이름 (여기서는 drone-data-disk)은 kubernetes를 설정할 때도 사용되므로 따로 보관하십시오.
disk.ftresource "google_compute_disk" "drone" {
name = "drone-data-disk"
type = "pd-ssd"
zone = "${var.zone}"
size = 10
}
또한 PD 마운트를 위해 노드 인스턴스에 컴퓨팅 권한을 추가해야합니다 (oauth_scopes에 추가).
container_cluster.tfresource "google_container_cluster" "default" {
name = "${var.cluster_name}"
zone = "${var.zone}"
network = "${var.network}"
initial_node_count = "${var.initial_node_count}"
node_config {
machine_type = "${var.machine_type}"
disk_size_gb = "${var.disk_size}"
oauth_scopes = [
"https://www.googleapis.com/auth/compute"
]
}
master_auth {
username = "${var.master_auth_username}"
password = "${var.master_auth_password}"
}
}
terraform apply가 완료되면 kubectl 자격 증명을 가져옵니다.
$ gcloud container clusters get-credentials cluster-1
kubernetes로 드론 서비스 만들기
우선 서비스용 매니페스트를 작성
drone-service.ymlapiVersion: v1
kind: Service
metadata:
name: drone
labels:
name: drone
spec:
type: LoadBalancer
selector:
name: drone
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
서비스 만들기
$ kubectl create -f drone-service.yml
service "drone" created
LB의 IP 주소 확인(EXTERNAL_IP)
$ kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
drone 10.55.252.25 xxx.xxx.xxx.xxx 80/TCP name=drone 2m
Bitbucket 설정
소비자 키 등록
오른쪽 상단 메뉴의 "Settings"→ "OAuth"에서 소비자 키를 추가.
입력 내용
Name: 적당히
콜백 URL: http://{이전에 확인한 LB의 IP 주소}/authorize
권한: 다음과 같이
저장하고 "키"와 "Secret"의 정보를 잡아 둔다.
kubernetes로 ReplicationController 생성
복제 컨트롤러용 매니페스트 만들기
drone-rc.ymlapiVersion: v1
kind: ReplicationController
metadata:
name: drone
labels:
name: drone
spec:
replicas: 1
selector:
name: drone
template:
metadata:
labels:
name: drone
spec:
containers:
- name: drone
image: drone/drone:0.4
env:
- name: SERVER_ADDR
value: ":80"
- name: DATABASE_DRIVER
value: sqlite3
- name: DATABASE_CONFIG
value: /var/lib/drone/drone.sqlite
- name: REMOTE_DRIVER
value: bitbucket
- name: REMOTE_CONFIG
value: https://bitbucket.org?client_id={Bitbucketの鍵}&client_secret={BitbucketのSecret}&open=true
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/docker
name: docker
- mountPath: /var/run/docker.sock
name: docker-socket
- mountPath: /var/lib/drone
name: drone-db
volumes:
- name: docker
hostPath:
path: /var/lib/docker
- name: docker-socket
hostPath:
path: /var/run/docker.sock
- name: drone-db
gcePersistentDisk:
pdName: drone-data-disk
fsType: ext4
ReplicationController 작성
$ kubectl create -f rc.yml
replicationcontroller "drone" created
계정 등록
Drone의 UI에 액세스합니다.
http://{이전에 확인한 LB의 IP 주소}/
로그인을 눌러 Bitbucket 계정으로 로그인하여 액세스 권한을 부여합니다.
대시보드에 리포지토리 목록이 표시되면 OK.
우선 초기 구축은 여기까지.
CI에 대해서는 별도.
Reference
이 문제에 관하여(OSS 버전 drone.io 0.4의 환경을 Kubernetes로 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quickguard/items/06747c1762a0373b8204
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
컨테이너 클러스터만 만들 수 있습니다.
이전 작성한 terraform 의 코드를 이용.
drone sqlite 데이터베이스 용 Persistent Disk 용 tf 파일을 추가합니다.
디스크 이름 (여기서는 drone-data-disk)은 kubernetes를 설정할 때도 사용되므로 따로 보관하십시오.
disk.ft
resource "google_compute_disk" "drone" {
name = "drone-data-disk"
type = "pd-ssd"
zone = "${var.zone}"
size = 10
}
또한 PD 마운트를 위해 노드 인스턴스에 컴퓨팅 권한을 추가해야합니다 (oauth_scopes에 추가).
container_cluster.tf
resource "google_container_cluster" "default" {
name = "${var.cluster_name}"
zone = "${var.zone}"
network = "${var.network}"
initial_node_count = "${var.initial_node_count}"
node_config {
machine_type = "${var.machine_type}"
disk_size_gb = "${var.disk_size}"
oauth_scopes = [
"https://www.googleapis.com/auth/compute"
]
}
master_auth {
username = "${var.master_auth_username}"
password = "${var.master_auth_password}"
}
}
terraform apply가 완료되면 kubectl 자격 증명을 가져옵니다.
$ gcloud container clusters get-credentials cluster-1
kubernetes로 드론 서비스 만들기
우선 서비스용 매니페스트를 작성
drone-service.ymlapiVersion: v1
kind: Service
metadata:
name: drone
labels:
name: drone
spec:
type: LoadBalancer
selector:
name: drone
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
서비스 만들기
$ kubectl create -f drone-service.yml
service "drone" created
LB의 IP 주소 확인(EXTERNAL_IP)
$ kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
drone 10.55.252.25 xxx.xxx.xxx.xxx 80/TCP name=drone 2m
Bitbucket 설정
소비자 키 등록
오른쪽 상단 메뉴의 "Settings"→ "OAuth"에서 소비자 키를 추가.
입력 내용
Name: 적당히
콜백 URL: http://{이전에 확인한 LB의 IP 주소}/authorize
권한: 다음과 같이
저장하고 "키"와 "Secret"의 정보를 잡아 둔다.
kubernetes로 ReplicationController 생성
복제 컨트롤러용 매니페스트 만들기
drone-rc.ymlapiVersion: v1
kind: ReplicationController
metadata:
name: drone
labels:
name: drone
spec:
replicas: 1
selector:
name: drone
template:
metadata:
labels:
name: drone
spec:
containers:
- name: drone
image: drone/drone:0.4
env:
- name: SERVER_ADDR
value: ":80"
- name: DATABASE_DRIVER
value: sqlite3
- name: DATABASE_CONFIG
value: /var/lib/drone/drone.sqlite
- name: REMOTE_DRIVER
value: bitbucket
- name: REMOTE_CONFIG
value: https://bitbucket.org?client_id={Bitbucketの鍵}&client_secret={BitbucketのSecret}&open=true
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/docker
name: docker
- mountPath: /var/run/docker.sock
name: docker-socket
- mountPath: /var/lib/drone
name: drone-db
volumes:
- name: docker
hostPath:
path: /var/lib/docker
- name: docker-socket
hostPath:
path: /var/run/docker.sock
- name: drone-db
gcePersistentDisk:
pdName: drone-data-disk
fsType: ext4
ReplicationController 작성
$ kubectl create -f rc.yml
replicationcontroller "drone" created
계정 등록
Drone의 UI에 액세스합니다.
http://{이전에 확인한 LB의 IP 주소}/
로그인을 눌러 Bitbucket 계정으로 로그인하여 액세스 권한을 부여합니다.
대시보드에 리포지토리 목록이 표시되면 OK.
우선 초기 구축은 여기까지.
CI에 대해서는 별도.
Reference
이 문제에 관하여(OSS 버전 drone.io 0.4의 환경을 Kubernetes로 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quickguard/items/06747c1762a0373b8204
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apiVersion: v1
kind: Service
metadata:
name: drone
labels:
name: drone
spec:
type: LoadBalancer
selector:
name: drone
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
$ kubectl create -f drone-service.yml
service "drone" created
$ kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
drone 10.55.252.25 xxx.xxx.xxx.xxx 80/TCP name=drone 2m
소비자 키 등록
오른쪽 상단 메뉴의 "Settings"→ "OAuth"에서 소비자 키를 추가.
입력 내용
Name: 적당히
콜백 URL: http://{이전에 확인한 LB의 IP 주소}/authorize
권한: 다음과 같이
저장하고 "키"와 "Secret"의 정보를 잡아 둔다.
kubernetes로 ReplicationController 생성
복제 컨트롤러용 매니페스트 만들기
drone-rc.ymlapiVersion: v1
kind: ReplicationController
metadata:
name: drone
labels:
name: drone
spec:
replicas: 1
selector:
name: drone
template:
metadata:
labels:
name: drone
spec:
containers:
- name: drone
image: drone/drone:0.4
env:
- name: SERVER_ADDR
value: ":80"
- name: DATABASE_DRIVER
value: sqlite3
- name: DATABASE_CONFIG
value: /var/lib/drone/drone.sqlite
- name: REMOTE_DRIVER
value: bitbucket
- name: REMOTE_CONFIG
value: https://bitbucket.org?client_id={Bitbucketの鍵}&client_secret={BitbucketのSecret}&open=true
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/docker
name: docker
- mountPath: /var/run/docker.sock
name: docker-socket
- mountPath: /var/lib/drone
name: drone-db
volumes:
- name: docker
hostPath:
path: /var/lib/docker
- name: docker-socket
hostPath:
path: /var/run/docker.sock
- name: drone-db
gcePersistentDisk:
pdName: drone-data-disk
fsType: ext4
ReplicationController 작성
$ kubectl create -f rc.yml
replicationcontroller "drone" created
계정 등록
Drone의 UI에 액세스합니다.
http://{이전에 확인한 LB의 IP 주소}/
로그인을 눌러 Bitbucket 계정으로 로그인하여 액세스 권한을 부여합니다.
대시보드에 리포지토리 목록이 표시되면 OK.
우선 초기 구축은 여기까지.
CI에 대해서는 별도.
Reference
이 문제에 관하여(OSS 버전 drone.io 0.4의 환경을 Kubernetes로 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quickguard/items/06747c1762a0373b8204
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
apiVersion: v1
kind: ReplicationController
metadata:
name: drone
labels:
name: drone
spec:
replicas: 1
selector:
name: drone
template:
metadata:
labels:
name: drone
spec:
containers:
- name: drone
image: drone/drone:0.4
env:
- name: SERVER_ADDR
value: ":80"
- name: DATABASE_DRIVER
value: sqlite3
- name: DATABASE_CONFIG
value: /var/lib/drone/drone.sqlite
- name: REMOTE_DRIVER
value: bitbucket
- name: REMOTE_CONFIG
value: https://bitbucket.org?client_id={Bitbucketの鍵}&client_secret={BitbucketのSecret}&open=true
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /var/lib/docker
name: docker
- mountPath: /var/run/docker.sock
name: docker-socket
- mountPath: /var/lib/drone
name: drone-db
volumes:
- name: docker
hostPath:
path: /var/lib/docker
- name: docker-socket
hostPath:
path: /var/run/docker.sock
- name: drone-db
gcePersistentDisk:
pdName: drone-data-disk
fsType: ext4
$ kubectl create -f rc.yml
replicationcontroller "drone" created
Drone의 UI에 액세스합니다.
http://{이전에 확인한 LB의 IP 주소}/
로그인을 눌러 Bitbucket 계정으로 로그인하여 액세스 권한을 부여합니다.
대시보드에 리포지토리 목록이 표시되면 OK.
우선 초기 구축은 여기까지.
CI에 대해서는 별도.
Reference
이 문제에 관하여(OSS 버전 drone.io 0.4의 환경을 Kubernetes로 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/quickguard/items/06747c1762a0373b8204텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)