kebernetes(minikube)を無料で触ってみる(その2 Jenkis編)
ども、k69 です。
kubernetesがどんなものか触ってみたいけど、
環境構築が大変そうだし、そもそもPCのメモリが4GBしかない・・・
でも、kubernetesをとりあえず動かすことができないかなぁ。
おっ、「minikubeっていうkubernetesのミニ版があるじゃん!」と
ウニウニしたがこの記事です。
対象読者
- kubernetes(minikube)でJenkinsをローカルPC(windows)使ってとりあえず動かしてみたい人。
- kubernetesを動かしてみたいけど、お金をかけたくない人。
- jennkins環境を構築し、jenkinsで遊んでみたい人。
前提条件
- kebernetes(minikube)を無料で触ってみる(その1)を理解していることを前提とする。
jenkins環境構築手順
1. Cドライブの任意のディレクトリ(C:¥minikube)に移動。
cd C:¥minikube
2. 各定義ファイル(yaml)を作成する。
Kubernetesで使われる用語は下記が参考にさせてもらいました。
Kubernetesで使われる用語(http://qiita.com/t-yotsu/items/f565b2d788a3b98fe762)
2-1. pv(Persistent Volumes)の設定
テキストエディタで下記の定義ファイル(yaml)を任意のディレクトリ(C:¥minikube)に作成する。
local-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv-1
labels:
type: local
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/jenkins/pv-1"
2-2. pvc(Persistent Volumes)の設定
テキストエディタで下記の定義ファイル(yaml)を任意のディレクトリ(C:¥minikube)に作成する。
local-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
2-3. deploymentの設定
テキストエディタで下記の定義ファイル(yaml)を任意のディレクトリ(C:¥minikube)に作成する。
jenkins-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
template:
metadata:
labels:
app: jenkins
spec:
initContainers:
- name: mkvol
image: busybox:uclibc
args:
- "/bin/sh"
- "-c"
- "chmod 0777 /var/jenkins_home && ls -l /var/"
volumeMounts:
- mountPath: /var/jenkins_home
name: jenkins-pv-storage
securityContext:
fsGroup: 1000
containers:
- name: jenkins
image: jenkins/jenkins:lts
env:
- name: GIT_SSL_NO_VERIFY
value: "1"
ports:
- containerPort: 8080
volumeMounts:
- mountPath: /var/jenkins_home
name: jenkins-pv-storage
volumes:
- name: jenkins-pv-storage
persistentVolumeClaim:
claimName: jenkins-pvc
2-4. serviceの設定
テキストエディタで下記の定義ファイル(yaml)を任意のディレクトリ(C:¥minikube)に作成する。
jenkins-service.yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
selector:
app: jenkins
3. pvとpvcの作成
3-1. kubernetesの状態を確認する。
kubectl get all,pv,pvc
出力例
C:\minikube>kubectl get all,pv,pvc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes 10.0.0.1 <none> 443/TCP 40m
3-2. pvとpvcを作成する。
実行コマンド
kubectl create -f local-pv.yaml
kubectl create -f local-pvc.yaml
3-3. deploymentとserviceを作成する。
実行コマンド
kubectl create -f jenkins-deployment.yaml
kubectl create -f jenkins-service.yaml
3-4. kubernetesの状態を確認し、JenkinsのpodがRunningになっていることを確認する。
kubectl get all,pv,pvc
出力例
C:\minikube>kubectl get all,pv,pvc
NAME READY STATUS RESTARTS AGE
po/jenkins-1162514410-9w6w0 1/1 Running 0 4m ★ Running
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/jenkins 10.0.0.136 <nodes> 8080:32021/TCP 4m
svc/kubernetes 10.0.0.1 <none> 443/TCP 2d
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/jenkins 1 1 1 1 4m
NAME DESIRED CURRENT READY AGE
rs/jenkins-1162514410 1 1 1 4m
NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE
pv/local-pv-1 100Mi RWO Retain Available 4m
pv/pvc-eafaf88a-8a04-11e7-89ba-0800277234cd 100Mi RWO Delete Bound default/jenkins-pvc standard 4m
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
pvc/jenkins-pvc Bound pvc-eafaf88a-8a04-11e7-89ba-0800277234cd 100Mi RWO standard 4m
3-5. jenkinsのinitialAdminPasswordを取得する
minikube コンテナにログインする。
minikube ssh
jenkinsのコンテナIDを取得する。
CONT_ID=`docker ps | grep "jenkins/jenkins" | awk '{print $1}'`
docker exec -i ${CONT_ID} /bin/bash -c 'cat /var/jenkins_home/secrets/initialAdminPassword'
※ 後ほど使用するので表示結果をコピーしておく。
minikubeのVMからログアウトする。
exit
3. jenkinsの画面を開く
minikube service jenkins
Unlock Jenkinsの画面が表示されるので、initialAdminPassword を入力する。
4. jenkinsでいろいろ触ってみる。
いろいろ遊んでみる。