0
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?

More than 3 years have passed since last update.

eksctl で IRSA使おうとしたら防壁に阻まれた件

Last updated at Posted at 2019-10-06

結論

AWSのkubernetes便利ツールeksctlは便利だけど、proxy環境下では IRSAの設定(open-id-connect-provider)が出来ない

——— 追記
現在は対応しているようです。
ただし、まだ試していませんが、最新のソースを見る限り動くように見えます。

概要

AWSから正式にIRSA(IAM Roles for Service Accounts)サポートのアナウンスがありました。

IRSAは、今までだと kiam や kube2iam を使って POD 単位に IAM の設定をしていましたが、AWSが公式に同じような機能を実装したものです。
詳細はこちら。

早速使ってみました。クラスターはできるのですが、なぜかエラー出ます。

2019-10-02T14:27:07+09:00 [✖]  connecting to issuer OIDC (https://oidc.eks.ap-northeast-1.amazonaws.com:443/id/123456AAAAAAAA): read tcp 10.100.92.52:59412->54.65.237.84:443: read: connection reset by peer

どうやら、 opene id connect providerの作成でエラーになっているようです。

2019-10-02T14:27:07+09:00 [▶]  DEBUG: Validate Response iam/GetOpenIDConnectProvider failed, attempt 0/13, error NoSuchEntity: OpenIDConnect Provider not found for arn arn:aws:iam::.......略

調査

とりあえず、チュートリアルをコピペしてみたのですが。動きません。
そのほか、色々試してみたのですが、どうしても上手くいきません。

結局ソースを確認するしかないので、調べてみました。
エラーメッセージを頼りにとりあえず grep。

ありました。

pkg/iam/oidc/api.go
// getIssuerCAThumbprint obtains thumbprint of root CA by connecting to the
// OIDC issuer and parsing certificates
func (m *OpenIDConnectManager) getIssuerCAThumbprint() error {
        config := &tls.Config{InsecureSkipVerify: m.insecureSkipVerify}

        conn, err := tls.Dial("tcp", m.issuerURL.Host, config)
        if err != nil {
                return errors.Wrapf(err, "connecting to issuer OIDC (%s)", m.issuerURL)
        }
        defer conn.Close()

むむ、proxyには対応してないようです。

これを試しているのは、proxy が必要な環境なので、おそらくこれが原因でしょう。

公式ドキュメントに書いてある、OIDC IdP(Open ID Connect ID Provider)のCAの取得手順である、以下の操作をそのまま実装しているようです。

3. ウェブブラウザに表示されるドキュメントで、"jwks_uri" を検索します(ウェブブラウザの検索機能を使用して、ページでこのテキストを見つけます)。 テキスト "jwks_uri" の直後のコロン (:) の後に URL があります。URL の完全修飾ドメイン名をコピーします。https:// または最上位ドメインより後のパスは含めないでください。

4. OpenSSL コマンドラインツールを使用して、次のコマンドを実行します。keys.example.com を、ステップ 3 で取得したドメイン名に置き換えます。

openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443

それでどうしたか

今回は動作検証が目的なので、素直に直接インターネットに出られるインスタンスを立てました。あまり参考にならずにすみません _o_

0
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
0
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?