OCIRに保存したイメージをOKEに構築

 2021.08.11  株式会社テリロジー 技術統括部

こんにちは!テリロジーのY.Tです。
今回はOCIのOracle Cloud Infrastructure Registry(OCIR)に保存したイメージを
Container Engine for Kubernetes(OKE)でPullし、ポッドを作成する方法をご紹介していきたいと思います。

Oracle Cloud Infrastructure Registry(OCIR)へイメージの保存

初めに、「OCIのコンテナレジストリサービス」の記事でご紹介している3、4を参考に、NginxのイメージをOCIRに保存していきます。以下の例はDockerがインストール済みのローカルの端末に、Nginxのイメージを保存後、タグ付けを行い、OCIRへPushする手順になります。

例) $ docker pull nginx $ docker images ※イメージの確認 $ docker login <リージョンID>.ocir.io ※コンテナレジストリ(OCIR)へログイン Login Succeeded $ docker tag <イメージID> <リージョンID>.ocir.io/<テナンシーネームスペース>/<リポジトリ名> /<イメージ名>:<タグ名> $ docker images ※タグ付けしたイメージ名確認 $ docker push <リージョンID>.ocir.io/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名> :<タグ名>

Oracle Cloud Infrastructure Registry(OCIR)へイメージの保存

OCIRのシークレットの作成

OKE上でOCIRから任意のイメージを取得するには資格証明が必要なため、作成していきます。
「OCI上のKubernetes(OKE) のカスタム作成方法」の記事でインストールしたkubectlコマンドを利用し、
以下のコマンドで作成します。

kubectl create secret docker-registry <シークレット名>--docker-server=<リージョンID>.ocir.io -- docker-username='<テナンシーネームスペース>/<OCIユーザ名>' --docker-password=' <認証トークン>'--docker-email='<Eメールアドレス>'
  • <シークレット名> :資格証明の名前 ※任意
  • <リージョンID> :OCIのリージョンキーを入力 ※「コンテナ・レジストリの準備」参照
  • <テナンシーネームスペース>:OCI Webコンソール右上の「管理」>「テナンシ」に表示されているオブジェクト・ストレージ・ネームスペース、もしくは、
    「開発者サービス」>「コンテナ・レジストリ」のネームスペースの値
  • <OCIユーザ名>:OCIのアカウントのメールアドレス
    ※フェデレーションユーザの場合は以下のように指定
    oracleidentitycloudservice/<OCIユーザ名>
  • <認証トークン>:ユーザの認証トークン
    ※「アイデンティティとセキュリティ」>「ユーザ」からトークンの生成が可能
  • <Eメールアドレス>:OCIのアカウントのメールアドレス

OKEにNginxのイメージを構築

実際にOKEにログインし、レシピを作成していきます。レシピとはKubernates上にポッドやサービスを構築する際に 利用する設定ファイルです。

1.レシピの作成

レシピ内の以下を書き換え、.kubeディレクトリ配下にyaml形式で保存します。

apiVersion: v1 kind: Pod metadata: name: ngnix-image spec: containers: - name: ngnix image: <リージョンID>/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名>:<タグ名> imagePullPolicy: Always ports: - name: nginx containerPort: 8080          protocol: TCP imagePullSecrets: - name: <2.OCIRのシークレットの作成で指定したシークレット名>

※参考OCI公式ドキュメント「デプロイメント中のレジストリからのイメージのプル

2.レシピの実行

以下のコマンドでレシピを実行することで、OCIRに保存されているNginxのイメージをポッドとしてKubernates上に構築することができます。

$ kubectl apply -f <3-1.レシピの作成で作成したレシピのディレクトリ>

動作しているポッドの確認

$ kubectl get pod 実行結果例) NAME READY STATUS RESTARTS AGE ngnix-image 0/1 ContainerCreating 0 8s

まとめ

今回はOCIRからNginxのイメージをPullし、OKEに構築する手順についてまとめていきました。
レシピの書き方については別途まとめていきたいと思います!

最後までお読みいただき、ありがとうございました。🙇


RECENT POST「OCIで作ってみた」の最新記事


OCIで作ってみた

OCVSにブロック・ボリュームをアタッチして、vSphereのデータストアに追加してみた

OCIで作ってみた

Fn Projectを使用したAPI開発

OCIで作ってみた

OCVSをデプロイしてみた 前半

OCIで作ってみた

OCVSをデプロイしてみた 後半

OCIRに保存したイメージをOKEに構築