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

minikube_jenkins.PNG

ども、k69 です。

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

いろいろ遊んでみる。

© 2022 k69

本サイトを通じて、たくさんの人がプログラミングに興味を持ち、 これがキッカケでモノづくりの楽しさに触れることができれば幸せです!