こんにちは!テリロジーのY.Tです。
今回はOCIのOracle Cloud Infrastructure Registry(OCIR)に保存したイメージを
Container Engine for Kubernetes(OKE)でPullし、ポッドを作成する方法をご紹介していきたいと思います。
目次:
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に構築する手順についてまとめていきました。
レシピの書き方については別途まとめていきたいと思います!
最後までお読みいただき、ありがとうございました。🙇