Help us understand the problem. What is going on with this article?

kebernetes(minikube)を無料で触ってみる(その2 Jenkis編)

More than 1 year has passed since last update.

minikube_jenkins.PNG

ども、keita69sawadaです。

kubernetesがどんなものか触ってみたいけど、
環境構築が大変そうだし、そもそもPCのメモリが4GBしかない・・・
でも、kubernetesをとりあえず動かすことができないかなぁ。

おっ、「minikubeっていうkubernetesのミニ版があるじゃん!」と
ウニウニしたがこの記事です。

対象読者

  • kubernetes(minikube)でJenkinsをローカルPC(windows)使ってとりあえず動かしてみたい人。
  • kubernetesを動かしてみたいけど、お金をかけたくない人。
  • jennkins環境を構築し、jenkinsで遊んでみたい人。

前提条件

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でいろいろ触ってみる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした