· 

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

こんにちは!テリロジーのY.Tです。

今回はOCIのOracle Cloud Infrastructure Registry(OCIR)に保存したイメージを

Container Engine for Kubernetes(OKE)でPullし、ポッドを作成する方法をご紹介していきたいと思います。

 

目次:

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

2.OCIRのシークレットの作成

3.OKEにNginxのイメージを構築

1.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/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名>:<タグ名>

2.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のアカウントのメールアドレス

 

3.OKEにNginxのイメージを構築

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

利用する設定ファイルです。 

3-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公式ドキュメント「デプロイメント中のレジストリからのイメージのプル

 

3-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に構築する手順についてまとめていきました。

レシピの書き方については別途まとめていきたいと思います!

 

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