Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ワークロードをウェブアプリとして公開する

PFCP の WebApp Identity-Aware Proxy(WebApp IAP)機能を使うことで、ワークロードをウェブアプリとしてインターネットに公開できます。 公開するウェブアプリには自動でアクセス時の認証が設定され、同一組織に属するユーザのみブラウザからアクセスできます。

WebApp IAP を利用してウェブアプリをインターネットに公開する方法を説明します。

Info

CLI などからアクセスする ウェブ API としてワークロードを公開したい場合は ワークロードをウェブ API として公開する を参照してください。

ウェブアプリを組織全体に公開する

  1. 公開するワークロードと Service リソースを用意します。ここでは例として、example-svc Service の 80 番ポートへアクセスすることでワークロードへアクセスできる状態になっているとします。

  2. 以下を参考に、Ingress マニフェストを作成します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
    spec:
      rules:
      - # Ingress に割り当てるドメインを指定します。
        # 注意: ウェブ API での公開と異なり、`ingress.pfcomputing.com` のサブドメインを指定します。
        host: example.<組織名>.<クラスタ名>.ingress.pfcomputing.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              # 公開対象の Service 名とポートを指定します。
              service:
                name: example-svc
                port:
                  number: 80
    

    サブドメインの制限

    ウェブアプリ用 Ingress ではドメインとして *.<組織名>.<クラスタ名>.ingress.pfcomputing.com のみ使用できます。

    例えば、組織名が foo でクラスタ名が sr1-01 の場合は *.foo.sr1-01.ingress.pfcomputing.com となります。

  3. ポータルのパブリックエンドポイント にアクセスし、 クラスタ名ネームスペース名 を選択します。出力されるパブリックエンドポイント一覧の中に、作成した Ingress のサブドメインが含まれることを確認します。

  4. 指定したサブドメインにブラウザからアクセスし、ログインした後1、公開したサービスにアクセスできることを確認します。

ウェブアプリを組織の一部ユーザに限定公開する

ウェブアプリの公開範囲を、組織内の特定のユーザもしくはユーザグループに限定できます。

まずは「ウェブアプリを組織全体に公開する」の手順に従って Ingress を作成してください。 その後、公開範囲を制限したい Ingress に対して、以下のようにアノテーションを追加してください。 値には、アクセスを許可するユーザのメールアドレスまたはユーザグループの名前をカンマ区切りで記載してください。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    # 特定のユーザを許可する場合は allowed-users アノテーションを追加する
    ingress.preferred.jp/allowed-users: "foo@example.com, bar@example.com, baz@example.com"
...
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    # 特定のユーザグループを許可する場合は allowed-groups アノテーションを追加する
    ingress.preferred.jp/allowed-groups: "foo-group, bar-group"
...

両方のアノテーションを追加したときは、指定されたユーザおよびユーザグループの両方に対してアクセスが許可されます。

ユーザグループの管理については 組織のユーザを管理する を参照してください。

Info

自身が所属するユーザグループは kubectl auth whoami コマンドでも確認できます。組織 foo のユーザグループ bar に所属している場合、Groups のリストに oidc:org-foo/bar という値が入ります。

公開範囲を制限できているか確認する

アノテーションを付与したあとは、実際に Ingress へアクセスして公開範囲を制限できているか確認してください。

Warning

ユーザグループの変更操作が、既存のログイン済みユーザのセッションに反映されるまで、時間がかかることがあります。 再ログインやブラウザクッキーの消去を試してください。

公開範囲を制限すると、Ingress に nginx.ingress.kubernetes.io/auth-url アノテーションが追加されます。 このアノテーションが追加されていない場合は、アノテーションの typo などがないかマニフェストを確認してください。

公開範囲を組織全体へ戻す

Ingress に付与されている以下のすべてのアノテーションを削除してください。

  • ingress.preferred.jp/allowed-users
  • ingress.preferred.jp/allowed-groups
  • nginx.ingress.kubernetes.io/auth-url

制限事項

  • Service リソースの NodePortLoadBalancer タイプを使用したサービスの公開をサポートしていません

  1. ブラウザに有効な認証キャッシュが存在する場合、ログイン処理はスキップされます。