- 既存コンテナイメージをシンプルにデプロイ
- Jenkinsを使用したビルドパイプライン体験
前半ではs2iビルド(ソースコードをビルドテンプレートとbuidler imageによってビルドする方法)によってコンテナイメージを作成し,OCP上にデプロイしました。後半の最初のステップでは,すでにコンテナイメージになっているターミナルアプリケーションをOCP上にデプロイします。
-
プロジェクトを選択します
プロジェクトは,必ずご自身のログイン時のユーザー名 (例: "dev01") のものを選択してください。
Home > Project > dev01 (例) -
Add > Deploy Image を選択します
-
Namespace(プロジェクト名),とImage Name を指定します
- Namespace:
各自の作成済プロジェクト(例: dev01)
- Image Name:
quay.io/openshiftlabs/workshop-terminal:2.4.0
- Namespace:
-
検索ボタン(虫眼鏡アイコン)をクリックし,Name(workshop-terminal)を確認して,Deploy を選択します
-
外部からアクセスするための Route を作成します
Networking > Routes > Create Route を選択し,以下を指定した後 Create を選択します
- Name:
Route名(例: workshop-terminal)
- Service:
対象アプリ用のService(例: workshop-terminal)
- Target Port:
10080 → 10080(TCP)
- Name:
-
Location欄にあるリンクを開きます 例:
http://workshop-terminal-dev01.apps.cluster-tokyo-ef76.tokyo-ef76.openshiftworkshop.com/
-
Terminalアプリが表示されることを確認します
お題:
「workshop-terminalアプリの特定バージョン(2.10.2)を新規にデプロイして,Routerの転送先サービスを変更してみよう」
ヒント:
- 既存Project名(Namespace): <yourID>
- ContainerImage: quay.io/openshiftlabs/workshop-terminal:2.10.2
- 新規デプロイ時に指定する名前: workshop-terminal-v2
- Service名: workshop-terminal-v2
- Routeからの振り先Service
- Route名: workshop-terminal
- 振り先を指定する
CI(継続的インテグレーション)ツールとして有名なJenkinsを使ってビルドパイプラインを作成してみましょう。
実際の手順は以下のとおりです。
- JenkinsコンテナをOCP上で動作させる
- Jenkinsにパイプライン設定を入れる
GUIで操作することも可能ですが、今回はCLI操作をメインにして進めてみましょう。
-
自身用の新規プロジェクト devXX-jenkins を作成します (例: dev01-jenkins)
$ oc login https://api.cluster-tokyo-ef76.tokyo-ef76.openshiftworkshop.com:6443 $ oc new-project dev01-jenkins (<== ご自身のプロジェクト名) $ oc project Using project "dev01-jenkins" on server XXXXXXX 上記のように出力確認できればOKです
-
Jenkinsテンプレートを使用してJenkinsのインスタンスをデプロイします
$ oc get templates -n openshift | grep jenkins jenkins-ephemeral: 永続化なし <== 今回はこちらを使用 jenkins-persistent: 永続化あり $ oc new-app jenkins-ephemeral $ oc get pods -w # ctrl-c でwatch状態から抜けられます
-
Jenkinsのメモリ上限を増やします。openshiftコンソールから
Workloads > Deployment Configs > jenkins > YAML と選び、下記画像のようにspec.template.spec.containers.resources.limiits.memoryを2Giに変更してsaveしてください。
-
Jenkinsにパイプライン設定(nodejs-sample-pipeline)を入れます
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/jenkins/pipeline/nodejs-sample-pipeline.yaml $ oc get buildconfigs nodejs-sample-pipeline # oc createで作成されたPipeline $ oc get buildconfig/nodejs-sample-pipeline -o yaml # 中身を確認
-
パイプラインを使用してビルドします
$ oc start-build nodejs-sample-pipeline
-
JenkinsのUIに接続してパイプラインの進捗状況を確認します
$ oc get route 出力結果のLocation情報をコピーしてブラウザで確認します
OCPのログイン情報を使用してJenkinsのUIにログインします
users.htpasswdを選択し,その後ログイン情報を入力します(例: dev01/openshift)
自身のプロジェクト名 を選択します(例: dev01-jenkins)
プロジェクト名/パイプライン名 を選択します (例: dev01-jenkins/nodejs-sample-pipeline)
時間経過とともにパイプラインのステージがだんだん右側に伸びていくことが確認できます
※パイプラインのステージの書き方は,前述の
oc get buildconfig/nodejs-sample-pipeline -o yaml
で確認できます
Tips:
ちなみに,Lab1ではOCPコンソール上でGUI操作で上記と同様の作業を行っていました。 具体的には,カタログ(Developer Catalog) からPythonテンプレートを選択して,ソースコードとbuilder image(Python)を合体させることでコンテナイメージを作成し,デプロイしていました。 また,OCPではJenkinsに限らず,ランタイムや他ミドルウェア,ソフトウェアなど多数のテンプレートを用意しています。自身(自社)でよく使うテンプレートを自作してカタログ上に追加することも可能です。(既存のbuilder imageの挙動をカスタマイズする場合には、S2Iビルドスクリプトを作成してオーバーライドします。)
他にもCI/CDを試したい場合は下記リンクを参照下さい。 https://adoc.redhat.partners/?https%3A%2F%2Fadoc.redhat.partners%2Flab%2Focp-workshop-dev-cicd.adoc.REPL&no-header-footer&numbered=&toc!