Upgrade to Pro — share decks privately, control downloads, hide ads and more …

openshift-workshop

Naoki Oguri
September 07, 2021

 openshift-workshop

本資料はIBM Tech Dojoのコンテンツになります。

Naoki Oguri

September 07, 2021
Tweet

More Decks by Naoki Oguri

Other Decks in Technology

Transcript

  1. ワークショップの進め⽅ 1. IBM Cloud のアカウントLogin (ライトアカウント) 2. 資料の説明 (注:アンケートや資料URLは下記参照) 3.

    各自でハンズオン 参照URL ①IBM Cloud ID登録: https://ibm.biz/BdfpAx ②GitHub Login : https://github.com/ ③説明資料: https://speakerdeck.com/ogurin/openshift- workshop ④ハンズオン手順: https://ibm.biz/oss2iws ⑤ハンズオンラボ: https://XXXXXXXX.mybluemix.net Key: XXXX ⑥アンケート入力: https://app.sli.do/event/dl1lv5xt
  2. ワークショップの流れ 事前準備 講師による説明 (座学&ハンズオン) IBM Cloud Liteアカウント (無料) の取得 GitHub

    アカウント の取得 【座学】 【ハンズオン】 ラボ環境のOpenShiftに、 GitHubのコードをデプロイ&コード変更 ハンズオン ラボ環境準備 (OpenShift) ※次頁参照 GitHub上の コードから OpenShiftに アプリを Deploy コードの変更を Webhook経由で OpenShiftに連携 (自動Deploy) コンテナ、 Kubernetes、 OpenShiftの理解 アンケート 入力 アンケート ① ② ③ ④ ⑤ ⑥ ①IBM Cloud ID登録: https://ibm.biz/BdfpAx ②GitHub Login : https://github.com/ ③説明資料: https://speakerdeck.com/ogurin/openshift-workshop ④ ハンズオン手順: https://ibm.biz/oss2iws ⑤ ハンズオンラボ: https://XXXXXXXX.mybluemix.net Key: XXXX ⑥ アンケート入力: https://app.sli.do/event/dl1lv5xt
  3. 7 1. E-Mail受信、[Join now]をクリック 2. [アカウントに参加]をクリック 3. ログイン ⇨ アカウントの選択に戻る

    ハンズオンラボ登録後にメール認証が追加されました メール受信を確認してJoin nowからアクセスしてください
  4. コンテナを使った開発の流れ Dockerfileなど Docker イメージなど コンテナ レジストリ マニフェストで コンテナ⾃体の 詳細を記述 開発者

    コンテナ イメージ作成 イメージの 登録 開発者 アプリ実⾏ アプリ開発 3段階のプロセス
  5. dockerを使った例 利⽤ Build Docker Runtime ソースや 構成情報 内部リポジトリー コンテナ・イメージ Pull

    run/exec dockerHub コンテナ dockerHub オンライン上にイメージを保管しておくコンテナレジストリの1種です。 様々なイメージの取得、⾃作イメージの保管ができます。 Dockerの操作は、提供されているDocker コマンド(CLI)を活⽤します。ユーザーは、元になる Docker imageをコンテナ化することで、アプリケーションとして利⽤することができます。
  6. コンテナレジストリ Container Registryはコンテナ・イメージを保管しておくための領域であり、Docker Hubはそのうちの ⼀つです。Container Registryは様々な種類があり、環境・⽤途によって使い分けが可能です。 種類 概要 例 Docker

    Hub 様々なイメージが保管・公開されている。 公開されているイメージを取得したり、作成したイメー ジを保管したりすることができる。 料⾦を⽀払うことで、privateなレジストリとしても利⽤ 可能。 - クラウド・サービス 様々なクラウド・ベンダーなどが提供しているサービス。 各ユーザーのPrivateな領域として利⽤可能。 料⾦によって、サイズやアクセス回数の制限がある。 IBM Cloud Container Registry Amazon ECR GCP Container Registry Azure Container Registry OSS ユーザー固有の環境に独⾃で作成するRegistry。 環境・導⼊作業などは必要だが、基本的に⾃由に利⽤可 能。 NEXUS OCR (OpenShift Container Registry) また、各イメージはContainer Registryに作成された領域であるリポジトリ内に保存され、形式は下記の通りです。 <リポジトリ名>/<イメージ名>(:<tag>) (例: ibmcom/websphere-liberty → ibmcomリポジトリ内のwebsphere-libertyイメージ)
  7. dockerコマンド操作 イメージをdocker hubからpull > docker image pull gihyodocker/echo:latest イメージをコンテナ化して実⾏ >

    docker container run -d -t -p 9000:8080 gihyodocker/echo:latest -d:バックグラウンドで実⾏ -p:ポートフォワーディング コンテナを停⽌ > docker container stop <コンテナID> コンテナを削除 > docker container rm <コンテナID> イメージを削除 > docker image rm <イメージID>
  8. dockerコマンド集(主なもの) 概要 コマンド オプション イメージ取得 image pull {image}:{tag} イメージビルド image

    build {image}:{tag} イメージ⼀覧 image list タグの付与 image tag {image}:{tag} {image}:{新tag} イメージ削除 image rm {image id} コンテナ起動 container run {image}:{tag} -p {host port}:{container port} ポート公開 -d バックグラウンド起動 --rm 停⽌時にコンテナ削除 コンテナ⼀覧 ps -a 停⽌状態含む全てのコンテナを取得 コンテナ停⽌ container stop {container id} コンテナ削除 container rm {container id} コンテナ内でコマンド実⾏ container exec {container id} {command} -it インタラクティブに操作 ステータス確認 stats --no-stream ⼀回のみ表⽰
  9. コンテナのポータビリティ 👉 アプリケーション稼働に必要な依存ファイルを パッケージングできる 👉 物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する 「僕の環境では動いた」

    問題が発⽣しない システム基盤 (クラウド) ホストOS システム基盤 (オンプレミス) ホストOS コン テナ エン ジン App1 Bin/Libs App2 Bin/Libs App3 Bin/Libs コン テナ エン ジン App3 Bin/Libs
  10. コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 • スケジューリング •

    スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施 Kubernetesの特徴
  11. Kubernetesで覚えておきたい概念 Pod Kubernetes における最⼩の管理単位 - Podの中には 1つ以上 の コンテナが含まれる -

    Pod単位でスケールイン・スケールアウトする - PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128
  12. Kubernetesで覚えておきたい概念 Deployment ワークロード定義体 - Pod - ReplicaSet - ClusterIPs -

    NodePort - (Ingress) Pod IP 10.1.206.34 10.1.206.110 Cluster IP 10.0.0.142 169.56.42.73 Ingress IP Deployment
  13. コンテナーのオーケストレーション・ツール 理想状態を宣⾔すると、その状態を維持しようとする 3つの主要コンポーネント 👉 Pod 👉 Deployment 👉 Service Kubernetesのまとめ

    PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。
  14. OpenShiftのしくみ OpenShift 4 Platform ⚓ 統合と⾃動化 ⚓ シームレスなKubernetesデプロイ ⚓ インストールの⾃動化

    ⚓ 1クリックでのプラットフォーム更新 ⚓ クラウドリソースのオートスケーリング
  15. OpenShiftのしくみ 1. カタログからApacheを選んで、ウイザードに沿ってデプロイを指定します 2. OpenShiftは⾃動的にgithub上に格納されているテンプレート定義ファイル(json)を⼊⼿します 3. ⼊⼿したテンプレートの指定に沿って、Dockerhub上に公開されているApacheのコンテナイメージを pullします 4. ウイザードで指定された名前や環境などを加味してイメージをbuildのうえ、OpenShiftの内部レジスト

    リーにpushします 5. 引きつづき、OpenShiftはテンプレートの指⽰に沿ってイメージ・ストリームをpodにデプロイするよう K8s(のReplication Controller)に指⽰します 6. 最後にserviceやrouteを構成して外部ユーザーがアクセスできるようにします K8s イメージ・ストリーム ユーザー dockerHub Github等 内部レジストリー 利⽤ Build Deploy あなた integrated docker registry. コンテナイメージをビルドして実⾏(デプロイ)する、という点は Dockerの時と同じですね。ただしK8s基盤上で動かすことで コンテナの運⽤周りが⾶躍的に便利になってます。
  16. Build Deploy K8s Runtime ソースや 構成情報 イメージ・ストリーム 利⽤ Build run/exec

    Docker Runtime ソースや 構成情報 内部レジストリー イメージ ユーザー Pull dockerHub Github等 内部レジストリー 利⽤ ← 素のKubernetesの守備範囲 → dockerとOpenShiftの処理の流れの対⽐
  17. OpenShiftコマンド操作 OpenShiftへログイン > oc login -u <ユーザーID> -p <パスワード> プロジェクト新規作成

    > oc new-project <プロジェクト名> アプリケーション作成 > oc new-app <コンテナイメージ> アプリケーションを公開 > oc expose svc/<アプリケーション名> アプリケーションを削除 > oc delete all -lapp=<アプリケーション名> プロジェクトを削除 > oc delete project <プロジェクト名> OpenShiftからログアウト > oc logout
  18. OpenShiftコマンド集(主なもの) 概要 コマンド オプション ログイン oc login -u developer -p

    hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project <project-name> プロジェクトの作成 oc new-project <project-name> アプリケーションの作成 oc new-app <app-name> アプリケーションの作成 oc new-app <app-name> サービスの公開 oc expose svc/<app-name> サービスの公開 oc expose svc/<app-name> ステータス表⽰ oc status ステータス表⽰ oc status オブジェクトの詳細表⽰ oc get all オブジェクトの詳細表⽰ oc get all デプロイメント構成(dc) の詳細表⽰ oc describe dc open-liberty デプロイメント構成(dc)の 詳細表⽰ oc describe dc open-liberty アプリケーション⼀式の 削除 oc delete all -lapp=<app-name> アプリケーション⼀式の削 除 oc delete all -lapp=<app-name> プロジェクトの削除 oc delete project <project-name> プロジェクトの削除 oc delete project <project-name> プロジェクトのリスト oc projects プロジェクトのリスト oc projects ログアウト oc logout ログアウト oc logout ログイン oc login -u developer -p hoge ログイン oc login -u developer -p hoge プロジェクトの作成 oc new-project <project-name> プロジェクトの作成 oc new-project <project-name>
  19. OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者に代わって、ビルド、 リポジトリ登録、デプロイを⾃動実⾏します。 KubernetesとOpenShiftの違い OPENSHIFT 機能拡張 OpenShift CICD利⽤ アプリケーション (コンテナ) Kubernetes

    アプリケーション (コンテナ) Ubuntu / CentOS… Linux Kubernetes アプリケーション (コンテナ) コンテナ ランタイム Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム
  20. © 2019 IBM Corporation Projects vs. Products Production-Grade Open Source

    Project quarterly minor releases, no Long Term Support community support platform certification: (AKS, EKS, GKE, IKS) core framework / limited security platform or user responsible to integrate beyond core Production-Grade Open Source based Product quarterly releases, support for major release 3+ years enterprise support ecosystem certification: platform and app containers k8s core plus abstractions / dashboard / security opinions and integration of common features