こんにちは!テリロジーの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/<テナンシーネームスペース>/<リポジトリ名>/<イメージ名>
:<タグ名>
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に構築する手順についてまとめていきました。
レシピの書き方については別途まとめていきたいと思います!
最後までお読みいただき、ありがとうございました。🙇
- カテゴリ:
- OCIで作ってみた