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

Tech Dojo OpenShift-S2I handson

NoriMuraZ
November 29, 2022

Tech Dojo OpenShift-S2I handson

NoriMuraZ

November 29, 2022
Tweet

More Decks by NoriMuraZ

Other Decks in Technology

Transcript

  1. コンテナを使った開発の流れ Dockerfileなど Docker イメージなど コンテナ レジストリ マニフェストで コンテナ自体の 詳細を記述 開発者

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

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

    Hub 様々なイメージが保管・公開されている。 公開されているイメージを取得したり、作成したイメー ジを保管したりすることができる。 料金を支払うことで、privateなレジストリとしても利用 可能。 - クラウド・サービス 様々なクラウド・ベンダーなどが提供しているサービス。 各ユーザーのPrivateな領域として利用可能。 料金によって、サイズやアクセス回数の制限がある。 IBM Cloud Container Registry Red Hat Quay Amazon ECR GCP Container Registry Azure Container Registry OSS ユーザー固有の環境に独自で作成するRegistry。 環境・導入作業などは必要だが、基本的に自由に利用可 能。 NEXUS OCR (OpenShift Container Registry) Open Source Docker Registry また、各イメージはContainer Registryに作成された領域であるリポジトリ内に保存され、形式は下記の通りです。 <リポジトリ名>/<イメージ名>(:<tag>) (例: ibmcom/websphere-liberty → ibmcomリポジトリ内のwebsphere-libertyイメージ)
  4. コンテナーの運用実行と管理を行うオーケストレーションツール • コンテナーが大量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 • スケジューリング •

    スケーリング • 障害時のリカバリー • アプリ実行に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣言的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も自動で復旧作業を実施 Kubernetesの特徴
  5. Kubernetesアーキテクチャー DB (etcd) API Server Client/User kubectl CLI ・Watcher ・Controller

    Networks Volumes Secrets ... Request Monitor WatcherとControllerがデータベース内の変更を反映する。 API Serverは http/RESTによるデータベースのフロントエンド。 Base OS/Kernel Container Runtime Images Ubuntu Liberty Kubelet Kube- Proxy Pod/Service C C C Node
  6. Kubernetesで覚えておきたい概念 Pod Kubernetes における最小の管理単位 - Podの中には 1つ以上 の コンテナが含まれる -

    Pod単位でスケールイン・スケールアウトする - PodごとにIPアドレスがアサインされる Pod IP 10.1.206.34 10.1.206.128
  7. 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
  8. 18 Deployment replicas: 3 Ver1.0 replicas: 3 Pod Pod Pod

    Ver1.5 replicas: 3 Pod Pod Pod Kubernetesで覚えておきたい概念 Deployment
  9. ・コンテナーのオーケストレーション・ツール ・理想状態を宣言すると、その状態を維持しようとする ・4つの主要コンポーネント 👉🏻 Pod 👉🏻 Deployment 👉🏻 Service 👉🏻

    ReplicaSet Kubernetesのまとめ PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使用することで容易になります。
  10. OpenShiftは、Kubernetesとの互換性を維持しながら、CICD機能を強化、開発者に代わって、ビルド、 リポジトリ登録、デプロイを自動実行します。 KubernetesとOpenShiftの違い OpenShift 機能拡張 Ubuntu / CentOS… Linux コンテナ

    ランタイム Kubernetesの標準機能 で構築したアプリケーション どちらでも 動作可能 RHEL / RHCOS コンテナ ランタイム Kubernetes アプリケーション (コンテナ) Kubernetes アプリケーション (コンテナ) OpenShift CICD利用 アプリケーション (コンテナ)
  11. 付録: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 一回のみ表示