7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCIRログインの地味な罠

Last updated at Posted at 2024-02-06

OCIRにログインできない

Oracle Cloud Infrastructure Registryの認証周りで地味にハマったポイントをまとめてきます。
地味にdockerやbase64の知識を問われる部分です。

エンドポイント分からない問題

ここのURLを参考にする。
大阪ならkix.ocir.ioとなる。
https://docs.oracle.com/ja-jp/iaas/Content/Registry/Concepts/registryprerequisites.htm

余談

なんでkixなんだろうって思っていたのですが、関西国際空港のコードがkixらしいです。
パプアニューギニアにkiaを取られたらしい。

ポリシー設定

ココを参考に良しなに。
https://docs.oracle.com/ja-jp/iaas/Content/Registry/Concepts/registrypolicyrepoaccess.htm

ポリシー上、権限のないユーザーでもdocker login出来てしまうのはOCIの仕様。
(イメージのPullやPushはちゃんとにポリシー準拠になる)

docker loginできない問題

ここにやり方は書かれていますが、地味な罠があります。
https://docs.oracle.com/ja-jp/iaas/Content/Registry/Tasks/registrypushingimagesusingthedockercli.htm

docker login kix.ocir.io
ユーザー名: <tenancy-namespace>/<domain>/<username> ←別ドメインのユーザーの場合はドメインが必要
パスワード: 生成したトークン

Kubernetesでイメージプルできない問題

シークレットの作成方法が地味に罠。

多くの場合、認証トークンを一重引用符で囲みます。それ以外の場合、単一引用符は必要ありません。

このやり方をすると、特殊文字が文字コード(UNICODE?)に変換されるので、パスワード不一致でログインできなくなる。
(なんでそうなるかは知らんがハマった箇所。検証した環境の言語設定が悪さしているかも)

kubectl create secret docker-registry <secret-name> --docker-server=<region-key>.ocir.io --docker-username=<tenancy-namespace>/<oci-username> --docker-password='<oci-auth-token>' --docker-email=<email-address>

Linux上のbase64コマンドで作っていくと安全。

authの値を生成する。
echo -nで改行させないことがポイント
(改行入れてしまうのはbase64変換でよくやるミス)

echo -n "<tenancy-namespace>/<domain>/<username>:<token>" | base64 -w 0

authはさっき確認した値を入れる。
シングルクォーテーションで囲む。

echo -n '{"auths":{"kix.ocir.io":{"username":"<tenancy-namespace>/<domain>/<username>","password":"token","email":"hoge@example.com","auth":"xxx"}}}' | base64 -w 0

Secretの一例としてこんな感じになる。

apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
  namespace: awesomeapps
data:
  .dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson

参考

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?