まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:2023

毎年恒例のマンホールマップ年間アクセスランキングを発表します。2023 年にマンホールマップでもっとも人気のあったマンホール蓋をベスト10形式で紹介します。また今年新たに投稿された蓋の中で最も人気があった「新人賞」と、今年最も多くの蓋画像を投稿いただいた方「最多投稿賞」を紹介します。

集計のルールとしては 2022/12/21 から 2023/12/20 までの集計期間における、PC およびスマホのブラウザから単独ページとしてのアクセス数を集計しています。ページビューとしての集計なので、例えば同じページの画面をリロードした場合は1回とだけカウントされます。

なお、過去9回の結果はこちらを参照ください:
2014 マンホールマップ年間アクセス数ランキング
2015 マンホールマップ年間アクセス数ランキング
2016 マンホールマップ年間アクセス数ランキング
2017 マンホールマップ年間アクセス数ランキング
2018 マンホールマップ年間アクセス数ランキング
2019 マンホールマップ年間アクセス数ランキング
2020 マンホールマップ年間アクセス数ランキング
2021 マンホールマップ年間アクセス数ランキング
2022 マンホールマップ年間アクセス数ランキング


2023 年の大きな変化
恒例の発表に移る前に1つお伝えしておくことがあります。2023 年もいろいろなニュースがありましたが、マンホールマップ的には「ツイッターが消滅し、X へ移行した」ことの影響をまともに受けた年となりました。

ツイッターを利用している立場でも、単なる名称変更に留まらない(利用できる機能の制限や有料化などの)変化があったと思いますが、ツイッターを使ってアプリケーションやサービスを作っている立場では数々の受け止めきれない変化に飲み込まれることになりました。結果的に 2023 年のマンホールマップは数日間ログインができない期間が生じてしまったり、(これは今でも影響を受けたままですが)投稿者のアイコンが表示できなくなったりしました。#manhotalk_bot もこの影響を受けてしまっていますよね。利用してくれる皆さんへの影響が生じてしまった点については改めてこの場で陳謝させていただきます。

今でも X は「消滅するかも・・」みたいな噂がたまに流れたり、実際に不具合でたまに止まったりしては「ついにその時が来たか・・」と思ってはいつの間にか治ってたりと、不穏な空気が残ったままではあるのですが、一方で当初制限を受けると言われていた機能が結局使えるままになっていたりもするので、とりあえず状況は落ち着きつつあるのかな・・と期待しながら今後もマンホールマップの運用を続けていこうと思っています。

では今年の各賞を発表します。


2023 最多投稿賞

2023 年は上述のログイン不可期間もあり、実質的に例年よりも少ない投稿期間となっていましたが、集計期間中に 401 枚ものマンホール画像が投稿されました。 今年も多くの皆様からの投稿によってマンホールマップは成長し続けることができました。改めて投稿に協力いただいた皆様、ありがとうございました。

そして今年マンホールマップに最も多くの画像を投稿いただいたユーザーに与えられる賞、それが最多投稿賞です。今年もコンスタントに投稿いただいた 42ER03 様が最多投稿でした(3年連続6回目)。最近は 42ER03 様からのメッセージでマンホールマップが止まっていることに気付くこともあり(苦笑)、色々な意味で今年も感謝の限りでございます。 m(__)m

なお2位は carz82902686 様、3位は私 dotnsf でした(私は昨年は4位でした。今年は関西方面への出張が復活したことも含め、広島や京都も訪ねるなど西日本での蓋活動が多かった1年でした)。


2023 新人賞&総合ランキングベスト10

いよいよ 2023 年マンホールマップ年間アクセス数ランキングを発表する時がやってまいりました。総合ランキング1位となる MVM(Most Variable Manhole) の座はどの蓋に!?


まずは新人賞です。今年投稿された中で最もアクセス数の多かった蓋を紹介します。こちらです:

市区町村投稿者画像
東京都台東区 minamu450


浅草名物「雷門」からも近い墨田川沿いに設置された古典歌舞伎「助六」の演目の1シーンが描かれた美しい蓋です。東京23区のソメイヨシノ蓋同様、ユリカモメに囲まれています。私も職場が比較的近いこともあって実物を見に行ってきました。

実は minamu450 さん(このアカウントで)が 2023 年に投稿した唯一の蓋が2月のこれでした。新人賞おめでとうございます。


では改めて 2023 年のランキングを発表します。まずは 10 ~ 4 位です。
が、今年も10位付近は大激戦で、10位は3つの蓋が同数でした(なんと2年連続!そして次点は1アクセス差!!)。その大混戦から抜け出して滑り込んだ第10位!

順位昨年順位市区町村投稿者画像
10 - 東京都清瀬市 dotnsf

気象庁・マスコットキャラクターの「はれるん」が描かれた東京都清瀬市、気象衛星センター内のカラーマンホールです。投稿者はなのですが撮影者は別で、いわゆる代理投稿です(おめでとー!)。実はこの気象衛星センター内は撮影していい箇所といけない箇所があって、この蓋は本当に大丈夫なのかどうか・・・ ともあれ年間トップ10入り、おめでとー!!!!


2つ目の第10位!

順位昨年順位市区町村投稿者画像
10 - 大阪府門真市 SakiYumeno

門真市のイメージキャラクター「ガラスケ」が描かれた大阪府門真市のデザインマンホールです。撮影者はたまにイベントでお会いする SakiYumeno さん。門真は私も仕事でよく行く場所の1つなのですが、このデザインは見たことありませんでした。今度いこ。 というわけで初の年間トップ10入り(ですよね?)、おめでとうございます!!


最後、3つ目の第10位!

順位昨年順位市区町村投稿者画像
10 - 埼玉県所沢市 42ER03

武蔵坊弁慶が白紙の勧進帳を見て「清き水となり大地をうるおせ」と読んだとされる歌舞伎でも有名なシーンが描かれたマンホール、投稿者は今年の(も)最多投稿者でもある 42ER03 さまです。

・・ただ、この蓋はマンホールマップ上では埼玉県所沢市に投稿されているのですが、一般的には石川県小松市の蓋として有名なやつだと思っています。越境蓋なのかな? このあたり続報があればいただきたいです(必要であればこのブログも修正します)。


第9位!

順位昨年順位市区町村投稿者画像
9 - 東京都世田谷区 EkikaraManhole

EkikaraManhole 大先生による、いわゆる「ご本人登場」の蓋投稿です。かつて世田谷区を流れていた北沢川を暗渠化して整備された緑道にカラー設置されたかつての姿。昔はこの辺りは蛍やメダカが生息してたんですかね。

第8位!

順位昨年順位市区町村投稿者画像
8 - 静岡県熱海市 tenore0

本ランキング初の地味蓋登場。静岡県熱海市に設置された「ガス」の蓋、なのですが、その正体がイマイチわかりません。投稿者の tenore0 さんも「ちょっと自信がないのですが、熱海市内の都市ガスを取り扱っている会社のふただと思います」と書かれてますし、「熱海ガス」という会社が存在することも分かっているのですが、では本当に熱海ガスの蓋か?と言われると、私も分かりませんでした。真ん中のマークは EX と書かれているようにも見えるんだけど、これはヒントになってるんだろうか・・詳細分かる人いる?


第7位!

順位昨年順位市区町村投稿者画像
7 9 群馬県高崎市 TMW_papa

昨年は9位だった、群馬県高崎市の「ぐんまちゃん」サッカーデザインです。2015 年、2016 年にも連続トップ10入りしている、マンホールマップでも指折りの人気蓋が、今年も多くのアクセスを記録しました。投稿者は TMW_papa さんです。

第6位!

順位昨年順位市区町村投稿者画像
6 3 岩手県盛岡市 minamu4545


昨年3位だった盛岡市の「わんこきょうだい」蓋が今年も6位でランクインしました。去年も言った気がしますが、わんこずんだだけはヤバそうな気がしています。投稿者は最多投稿賞でも常連の minamu4545 さん(minamu450 さん)です。


第5位!

順位昨年順位市区町村投稿者画像
5 - 東京都世田谷区 jishiha

世田谷区から2つ目のランクイン!玉川電気鉄道をあしらったデザインマンホール(?)。投稿者はモバイル版マンホールマップを開発されていた jishiha さんです。どーも、ご無沙汰しております。 そんなこのマンホール、石畳に紛れ込ませた感じのこれをデザイン蓋に分類していいのか迷いますが、玉電でググった人が多かったんですかね?ともあれ何故か 2023 年に多くのアクセスを集める結果となりました。


第4位!

順位昨年順位市区町村投稿者画像
4 - 高知県高知市 minamu4545


名物のカツオが飛び跳ねる様子がデザインされた高知市の蓋です。デザインは公募らしく、よさこいアイテムの鳴子も鮮やかにデザインされているのがわかります。マンホールマップへの投稿は 2017 年でした。これまでランキングに入ることはなかったのですが、今年突然のブレーク!といった所でしょうか。 投稿者はこれも minamu4545 さんです。



ここからはトップ3の発表です。第3位!!

順位昨年順位市区町村投稿者画像
3 - 東京都台東区 minamu450


上の新人賞でも紹介した助六夢通りの蓋が 2023 年の総合3位でした。このデザイン蓋が設置されているのは一枚だけですが、浅草雷門からスカイツリーに向かう道の途中、墨田川を渡る直前あたりという、人通りの多そうな場所に設置されています。今後も人気が続くことが考えられる蓋だと思っています。


第2位!!!

順位昨年順位市区町村投稿者画像
2 - 北海道札幌市 yanapong


実は昨年の10位にはカラー版がランクインしていたのですが、なぜかその地味版が 2023 年の総合2位となるアクセスを記録しました。こういう解説に困るアクセス順位になるのがマンホールマップです。 というわけで、有名な札幌市の時計台がデザインされた人気マンホール(の地味版)が何故か大量のアクセスを集めていました。 投稿はこの界隈では有名な yanapong さんでした。やなぽんさんは(別の蓋ですが)2018 年まで4年連続トップ10入りを記録した「リスのクリちゃん」マンホールの投稿者でもあり、その時以来5年ぶりのトップ10入りとなりました。


さて 2023 年の MVM はどの蓋に? 注目の第1位!!!!
























順位昨年順位市区町村投稿者画像
1 1 香川県東かがわ市 minamu4545


ついに歴史が動きました。マンホールマップ年間アクセスランキング初の2連覇達成、香川県東かがわ市に設置され、昨年ポケ蓋では初の1位を記録した「うどん県のヤドン」マンホールが 2023 年マンホールマップ年間アクセスランキングの1位を記録しました。投稿者である minamu4545 さん(minamu450 さん)、おめでとうございます!!


ちなみに1位となったヤドンのマンホール蓋のアクセス数は「ダントツ」でした。2位以下の混戦を数馬身離しての1着という感じで、この人気はもうしばらく続くのではないかと思っています。



さて来年のマンホールマップランキングはどうなるのでしょう? 3連覇はあるのか? そしてツイッターは大丈夫なのか? 期待と不安が入り混じります。

では辰年となる 2024 年も引き続きマンホールマップをよろしくおねがいします。

(↓ これも minamu4545 様投稿蓋です)



あけましておめでとうございます。これが 2023 年最初のブログエントリとなります。本年もよろしくお願いいたします。



これまで IBM Cloud で OpenShift クラスタ環境を何度も作って(&そして削除して)来ました。が、それらは全てパブリッククラウド環境としての OpenShift クラスタでした。 このたびプライベートクラウド環境としての OpenShift クラスタを作る機会がありました。その考慮点や手順がパブリッククラウドの時と比べてかなり複雑だったので、備忘録の意味も含めて最初から最後まで手順をまとめてみました。


【プライベートクラウドの設計】
一言で「プライベートクラウド」といっても、その制約というか仕様には色々なパターンが考えられます。例えば「プライベートクラウド」なので、ウェブの管理コンソールや管理 CLI の操作、クラスタにデプロイしたアプリケーションにインターネットからアクセスできない(インターネット側からプライベートクラウドへのアクセスは不可とする)、というのは共通仕様だと思っています。一方で、デプロイするアプリケーションのイメージは Docker ハブから使いたい(つまりプライベートクラウド側からインターネットへのアクセスは許可したい)というケースはあるかもしれませんし、そこも制約として許可したくないケースもあると思います(後者の場合でイメージからデプロイするにはイメージリポジトリもプライベートクラウド内に構築する必要も出てきます)。

以下で手順を紹介するのは「前者」のパターンとします。つまり、
・CLI やウェブコンソールを含めて、インターネットからの直接アクセスは許可しない
・専用の VPN 環境を構築し、この VPN 接続が有効な場合のみアクセスを許可する
・プライベートクラウド側からインターネットへのアクセスは許可する(Docker ハブなどからのアプリケーションデプロイを可能とする)


という条件でプライベートクラウド環境を構築します。なお以下の作業を行う上で必要なユーザー権限は全て取得済みであるものとします。


【VPC とサブネットの作成】
まず、今回のようなパブリックインターフェースを持たないプライベートインターフェースのみの OpenShift クラスタを IBM Cloud に作る場合、クラシックインフラではなく VPC(Virtual Private Cloud)インフラに作る必要があります。そのためまずは OpenShift クラスタを作成するための VPC(Virtual Private Cloud:仮想プライベートクラウド)環境を作成します。IBM Cloud のダッシュボードから「リソースの作成」をクリックします:
2023010401


カタログ画面の検索バーに "Virtual Private" と入力すると選択候補の中に "Virtual Private Cloud" というのが出てくると思うので、これを選択します:
2023010402


VPC 環境を作成するロケーションを選択します。以下の例では「アジア太平洋地域」の「東京」を選択しています。ここは自分の環境にあったもの(なるべく利用者に近い場所)を選択してください。そして VPC の名称(下の例では "kkimura-vpc")を入力します:
2023010403


下にスクロールするとデフォルト接頭部とサブネットに関する情報が表示されます。デフォルトでは選択したロケーション(この場合は東京)の3つのゾーンに1つずつサブネットが用意されます。このままでもよければこのまま進めることもできますが、今回は規模の小さいプライベートクラウド環境を作る想定なので、デフォルト設定を無効にした上でサブネットを1つだけ用意することにします:
2023010404


というわけで、「各ゾーンのデフォルト接頭部の作成」のチェックを外してください。最後に「仮想プライベート・クラウドの作成」ボタンをクリックします:
2023010405


仮想プライベート・クラウドの一覧画面に遷移し、先ほど指定した名前の VPC が追加されたことを確認し、これを選択します:
2023010406


VPC の中身を確認するとアドレス接頭部が空になっています。ここに1つだけ追加することにします:
2023010407


同じ画面の「アドレス接頭部」タブを選択して「作成」ボタンをクリックします:
2023010408


画面右から「アドレス接頭部の作成」というウィンドウが表示されます。ここに作成するアドレス空間の範囲(下の例では 10.10.0.0/18)と、そのアドレス空間を作るロケーション(下の例では東京2)を指定して「作成」ボタンをクリックします:
2023010409


指定した値(10.10.0.0/18)のアドレス空間が定義できました:
2023010410


アドレス空間が定義できたので、次にサブネットを作成します。画面左ペインから「サブネット」を選択し、「作成」ボタンをクリックします:
2023010411


ロケーション(下の例ではアジア太平洋の東京2)とサブネットの名称(下の例では "sn-tok2")を指定します。まだ入力項目があるので、そのまま下にスクロールします:
2023010412


このサブネットを使う VPC を指定し、最後にアドレス接頭部(10.10.0.0/18)内のどの部分をサブネットとして利用するかを指定します(下の例では "10.10.0.0/24" を指定しています)。ここまで指定できたら最後に「サブネットの作成」ボタンをクリックします:
2023010413


VPC 用のサブネットを新しく1つ定義できました。この後 OpenShift 環境を構築する場合に、このサブネット上に構築することになります:
2023010414


【パブリックゲートウェイの作成】
今回のプライベートクラウドでは「プライベート環境側からインターネット側へのアクセスは許可する」前提で環境を構築します。これを実現するには「パブリックゲートウェイ」と呼ばれるゲートウェイをサブネットに紐づけることで実現します。 以下ではその手順を紹介します。なお「プライベート環境側からインターネット側へのアクセスも禁止する」というポリシーで構築する場合は、このパブリックゲートウェイ作成手順は読み飛ばしてください。

VPC インフラストラクチャー画面の左ペインで「パブリック・ゲートウェイ」を選択し、「作成」ボタンをクリックします:
2023010415


画面右からパブリック・ゲートウェイの設定画面が現れます。まずはパブリック・ゲートウェイを作成するロケーション(下の例ではアジア太平洋の東京2)を指定します:
2023010416


画面を下にスクロールして設定の続きを行います。作成するパブリック・ゲートウェイの名前("kkimura-pgw")、対象となる VPC("kkimura-vpc")を指定し、最後に「作成」ボタンをクリックします:
2023010417


しばらく待つとパブリック・ゲートウェイが作成されます。ただこの時点では作成されただけで、まだ対象となるプライベート・サブネットとの接続ができていない状態です:
2023010418


というわけで、プライベート・サブネットとの接続を行います。対象パブリック・ゲートウェイの右(必要に応じてスクロールしてください)のメニューをクリックして「接続」を選択します:
2023010419


接続するサブネットを選択します。ここでは先ほど作成した "sn-tok2" サブネットを指定しています。最後に「作成」ボタンをクリックします:
2023010420


パブリック・ゲートウェイとサブネットとの接続ができました。これで対象サブネット内に作られるサーバーリソースからインターネット側へアクセスすることができるようになりました:
2023010421


【Secrets Manager で証明書を管理】
この後 OpenShift クラスタをプライベート環境内に作るのですが、プライベート環境なのでそのままでは(ウェブコンソールにも oc CLI からも)アクセスできません。というわけで、プライベート環境にアクセスするための VPN をあらかじめ用意しておくことにします。

この VPN 接続をセキュアにするためには証明書が必要で、その証明書を Secrets Manager を使って管理します。したがってまず最初に Secrets Manager を(まだ使ったことがなければ)作成します。

IBM Cloud のダッシュボードから「リソースの作成」をクリックし、カタログ内の検索画面で "Secrets" と入力すると "Secrets Manager" が見つかるはずです。これを選択します:
2023010401


Secrets Manager の構成画面ではまずロケーション(下の例では「東京」)を選択します。また Secrets Manager の料金プランを選択します。Secrets Manager を初めて使う場合は無料の「トライアル」プランを 30 日間だけ使うこともできます:
2023010402


最後に、作成する Secrets Manager の名称(下の例では "kkimura-secrets-manager-tok2")を指定し、「以下のご使用条件を読み、同意します」にチェックを入れて「作成」します:
2023010403


Secrets Manager が作成できたら VPN サービスから Secrets Manager を使うことができるよう権限を設定する必要があります。IBM Cloud の画面右上のメニューから 管理→アクセス(IAM) を選択します:
2023010401


左ペインで「許可」を選択して許可の管理画面を表示してから「作成」をクリックします:
2023010402


サービス許可の設定をします。ここでは以下のように指定します:
 ソースアカウント:当該アカウント
 ソースサービス:VPC Infrastructure Services
 アクセス権限の範囲の指定:選択された属性に基づくリソース
 リソースタイプにチェックして "Client VPN for VPC" を選択
 (下に続く)

2023010403


 (上から続く)
 ターゲット・サービス: Secrets Manager
 アクセス権限の範囲の指定:全てのリソース
 サービス・アクセス:シークレット・リーダーにチェック

最後に「作成」ボタンをクリックします:
2023010404



指定した内容の許可レコードが作成されたことを確認します:
2023010405


ここまで準備できたら実際に証明書を作成します。ターミナル等で以下を実行します:
Easy-RSA 3 リポジトリをローカルフォルダに複製
$ git clone https://github.com/OpenVPN/easy-rsa.git

$ cd easy-rsa/easyrsa3
新しい PKI と CA を作成
$ ./easyrsa init-pki

$ ./easyrsa build-ca nopass
VPN サーバー証明書(vpn-server.vpn.ibm.com)を生成
$ ./easyrsa build-server-full vpn-server.vpn.ibm.com nopass

(プロンプトが止まったら "yes" と入力)
VPN クライアント証明書(client1.vpn.ibm.com)を生成
$ ./easyrsa build-client-full client1.vpn.ibm.com nopass

(プロンプトが止まったら "yes" と入力)
証明書ファイルの取り出し
./pki/ 以下をまとめて取り出しておく

作成した Secrets Manager に、作成した証明書を登録します。IBM Cloud で作成した Secrets Manager インスタンスを選択し、画面左の「シークレット」を選択し、画面右の「作成」をクリックします:
2023010401


次の画面では「TLS 証明書」を選択します:
2023010402


次の画面では「証明書のインポート」を選択します。また、この時点でシークレットの名称(下の例では "kkimura-vpn-certs" )を指定します:
2023010403


画面を下方向に、ファイルを3つアップロードするところまでスクロールします:
2023010404


3か所に、先ほど作成した証明書からそれぞれ以下のファイルを選択して指定します:
 証明書: "./pki/issued/vpn-server.vpn.ibm.com.crt"
 秘密鍵:"./pki/private/vpn-server.vpn.ibm.com.key"
 中間証明書:"./pki/ca.crt"
最後に「作成」ボタンをクリックします:
2023010405


正しく処理が行われて、新しいシークレットが作成されたことを確認します:
2023010406


これで VPN 接続をセキュアに行うための証明書を作成して Secrets Manager で管理するところまでの作業が完了しました。この後はこれらの情報を使って実際に VPN 環境を構築します。


【VPN 環境の作成】
改めて IBM Cloud の VPC のプライベート環境にアクセスするための VPN 環境を作ります。IBM Cloud のカタログから "client vpn for vpc" を検索して選択します:
2023010401


VPN の設定項目を指定しながら作成していきます。まず VPN タイプには「クライアントとサイト間のサーバー」を選択し、ロケーションは VPN サーバーをどのロケーションに設置するかを指定(下の例では「東京」)します:
2023010402


設定を続けます。次に VPN サーバー名を適当に(下の例では "kkimura-client-vpn")入力し、接続対象となる VPC(下の例では上で作成した "kkimura-vpc")を入力します。その下のクライアント IPv4 アドレスプールには VPN 接続したマシンに割り振られる IP アドレスの範囲(下の例では 10.244.0.0/16)を指定します。ここは上で作成したサブネットと被らないアドレス帯を指定してください:
2023010403


設定を続けます。VPN サーバーモードは「スタンドアロン・モード」を選択し、そのサブネットは上で作成したサブネット(下の例では "sn-tok2")を指定します:
2023010404


設定を続けます。次は認証に関わる設定を行います。サーバー認証の証明書ソースは "Secrets Manager" を選択し、「インスタンスで検索」をクリックしてからサーバー・シークレット・マネージャーとサーバー SSL 証明書として先ほど作成したもの(下の例では "kkimura-secrets-manager-tok2" と "kkimura-vpn-certs")を指定します:
2023010405


設定を続けます。次はクライアント認証の設定を行います。「クライアント証明書」にチェックを入れ、証明書ソースは "Secrets Manager"、「インスタンスで検索」を選んでから、上同様にクライアント・シークレット・マネージャーとクライアント SSL 証明書をそれぞれ先ほど作成したもの(下の例では "kkimura-secrets-manager-tok2" と "kkimura-vpn-certs")を指定します:
2023010406


設定を続けます。次は一番下までスクロールして追加の構成部分を設定します。トランスポートプロトコルは "UDP" 、VPN ポートは 443 を指定します。またトンネルモードは「フル・トンネル」か「分割トンネル」かを選びます。クライアントがこのプライベートネットワークに VPN 接続中もインターネットの利用をさせる場合は「分割トンネル」を、VPN 接続中はインターネットアクセスを無効にさせる場合は「フルトンネル」を、それぞれ目的に応じて選択します(下の例では「分割トンネル」)。最後に「VPN サーバーの作成」ボタンをクリックして作成します:
2023010407


作成して状況が「安定」になるまで少し時間がかかりますが、VPN の「クライアントとサイト間のサーバー」タブに VPN が1つ追加されたことが確認できます:
2023010401


直前の設定で UDP/443 ポートを使う旨を指定しましたが、この設定内容がセキュリティグループでも許可されている必要があります。そのための設定を追加します。

VPC インフラストラクチャー画面の左ペインで「セキュリティ・グループ」を選択します。そこから今設定している VPC(下の例であれば "kkimura-vpc")のセキュリティグループになっているものを探してクリックします:
2023010401


セキュリティグループの「ルール」タブを選択して、「作成」ボタンをクリックします:
2023010402


新しいインバウンドルールを追加します。今回の例であればプロトコルは "UDP"、ポートは「ポート範囲」を選択した上で、最小値と最大値の両方に "443" を入力します。またソースタイプは「すべて」を選択して、最後に「作成」ボタンをクリックします:
2023010403


これで新しいインバウンドルールが追加され、セキュリティグループでも UDP/443 を許可することができました:
2023010404


VPN の設定項目はまだ必要なのですが、ここまでの作業ができたら一旦終わりとして、次はプライベートな OpenShift クラスタを作ります。



【プライベート OpenShift クラスタ環境の作成】
パブリックな OpenShift 環境の場合はいきなり OpenShift クラスタを作ってそのまま使い始めることができますが、プライベート環境の場合は(そのセキュリティポリシーにもよりますが)かなり準備が必要でした。が、ここまでできていればあと少しで、OpenShift クラスタを作ることもできます。

IBM Cloud のダッシュボードから「リソースの作成」を選び、カタログの検索バーに "OpenShift" と入力すると "Red Hat OpenShift on IBM Cloud" が見つかるのでこれを選択します:
2023010401


作成する OpenShift クラスタの設定項目を指定していきます。まずセットアップの種類は「手動セットアップ」で、インフラストラクチャーは "VPC" を選びます。なお、この後マスターサービス・エンドポイントを指定する項目があるのですが、そこで「プライベートのみ」を選択できるのはここで "VPC" を選んだ場合のみです。つまりプライベートクラウドとしての OpenShift 環境を構築するにはここで VPC を選択する必要があり、そのためこの上で準備したような設定を行う必要があったのでした:
2023010402


続けて利用する VPC("kkimura-vpc")とクラウド・オブジェクト・ストレージを指定します。クラウド・オブジェクト・ストレージを使っていない場合は新規に1つ作ってからここで指定します。また OpenShift のバージョンは特にこだわりがなければ最新版を、OCP ライセンスは「このワーカー・プールの追加ライセンスを購入する」を選択します:
2023010403


ワーカー・ゾーンはワーカーノードをどのゾーンのどのサブネットに配置するかを指定します。サブネットを作成したゾーンと、そのサブネットを指定します。それ以外のゾーンのチェックを外します。またワーカープールのノード数は「2」を指定します(ここで1以下を指定すると作成前のチェックでエラーになりますが、この後の作業でワーカー・ノードは1つに変更できます)。ワーカープールのフレーバー(1台あたりのスペックは必要に応じて適宜変更してください):
2023010404


マスター・サービス・エンドポイントを指定します。ここで「プライベート・エンドポイントのみ」を指定します(OpenShift を VPC で作成する場合はプライベートのみが選択できます。Classic 環境だとプライベートのみという選択肢はありません)。また適当な名称でクラスター名を指定します:
2023010405


最後の統合項目ではアクティビティトラッキングやロギング、モニタリングを有効にすることも可能ですが、不要の場合はチェックを外しても問題ありません。最後に「作成」ボタンをクリックします:
2023010406


これでプライベート版 OpenShift クラスタ環境のセットアップが開始されます。セットアップが完了するまでしばらく(30分ほど?)待ちます:
2023010407


ステータスが「正常」になり、Ingress まで含めた全ての機能が正常に稼働している状態になることを確認します:
2023010401


この状態で「OpenShift Web コンソール」ボタンをクリックしても「OpenShift Web コンソール URL に到達できませんでした」というエラーになることを確認します。この環境はプライベートネットワーク上に構築されているので、これまでのようにインターネット経由でのアクセスができないからです(つまり現時点ではアクセスできないことが正しい状態で、クラスタがプライベートネットワーク上に構築されていることを意味します):
2023010402


では次にこのプライベート OpenShift クラスタにアクセスすることができるようになる VPN 環境を構築します:


【VPN サーバー環境の作成】
最後にもう一度 VPN の設定を行います。VPN の経路情報を登録します。VPC インフラストラクチャー画面の左ペインで "VPN" を選択し、「クライアントとサイト間のサーバー」タブに表示される VPN を選択します:
2023010401


この VPN の「VPN サーバー経路」タブを選択して「作成」ボタンをクリックします:
2023010402


まずサブネット 10.10.0.0/24 へのアクセスはそのまま通す必要があるので、CIDR に "10.10.0.0/24"、アクションは「配信」を選択して「作成」します(名前は適当に):
2023010403


同様に、他のクラウドサービスへもアクセスできる必要があるため、同じ作業を繰り返して、CIDR に "166.8.0.0/14" 、アクションは「変換」でルールを1つ追加します:
2023010404


下図のように VPN サーバー経路が2つ登録できていれば VPN の経路に関する設定は終わりです:
2023010401



【VPN クライアント環境の作成】
VPN サーバーの準備ができたので、次に VPN クライアントを用意します。まずは VPN クライアント用のプロファイルをダウンロードします。VPN インフラストラクチャー画面の左ペインで VPN を選び、「クライアントとサイト間のサーバー」タブから先ほど作成した VPN 接続を選択します:
2023010401



そして「クライアント」タブ内の「クライアント・プロファイルのダウンロード」を選択します。すると .ovpn という拡張子がついた Open VPN 向けプロファイルがダウンロードできます:
2023010402


自分が付けた VPN 名(この例では "kkimura-client-vpn")に ".ovpn" という拡張子が付いたファイル名のプロファイルがダウンロードされているはずです。このファイルをテキストエディタで開きます:
2023010403


ファイルの最後に近いあたりにある "#cert " で始まる行と、"#key " で始まる行両方の "#" を削除します。加えて "cert", "key" に続く文字列を以下のように変更して保存します:
 cert client1.vpn.ibm.com.crt
 key client1.vpn.ibm.com.key
2023010404


そして証明書ファイルを作った際の ./pki/issued/client1.vpn.ibm.com.crt および ./pki/private/client1.vpn.ibm.com.key の2つのファイルを OVPN ファイルを同じフォルダにコピーします:
2023010405


これで VPN 接続用プロファイルが準備できました。後は VPN クライアントを用意して、このプロファイルを適用するだけです。

VPN クライアントは(2023/01/04 時点では)OpenVPN クライアントの V2 および V3 が推奨されています。今回はこちらから OpenVPN V3 をダウンロード&インストールしました。自分のシステム環境プラットフォームにあったものを選んでダウンロードしてください:
https://openvpn.net/vpn-client/#tab-windows


OpenVPN クライアントのインストールが環境したら起動します。初回起動時にプロファイルのインポート画面になるので、FILE タブを選んで"BROWSE" ボタンをクリックし、上で用意した OVPN ファイル(kkimura-client-vpn.ovpn)を指定します:
2023010401


OVPN ファイルが正しく作成され、また正しく編集できていれば鍵ファイルごと読み込まれてプロファイルのインポートが完了します。ここで "CONNECT" ボタンを押すと VPN 接続が開始します:
2023010402


設定にミスがなければ VPN 接続は一瞬で完了するはずです。"CONNECTED" と表示されていれば接続できていることになります:
2023010403


試しにこの VPN 接続ができている間を使ってプライベート OpenShift クラスタが正しく作られていることを確認してみます。IBM Cloud のダッシュボード画面に戻り、作成した OpenShift クラスタを選択して「OpenShift Web コンソール」ボタンをクリックしてみます(先ほどはエラーになったオペレーションです):
2023010401


今回は OpenShift のウェブコンソール画面が表示されるはずです。VPN 接続が有効になっているので、この URL にアクセスすることができました。なお IBM Cloud の OpenShift では URL のリージョン部分(例えば "jp-tok")の直前が "0000" であればパブリック、"i000" であればプライベートな URL になっているとのことで、今回は "****-i000-jp-tok.***" というパターンになっているので、ここでもプライベートな URL にアクセスできていることが確認できます:
2023010404


ついでに今回は「プライベートクラウド側からインターネット側へのアクセスは許可」するポリシーで環境を構築しました。上述のパブリックゲートウェイが有効になっているので、プライベートクラウド側から Docker ハブ等にもアクセスできるはずなので、それを確認してみます。まずはパースペクティブを切り替えるため、画面左の "Administrator" と書かれた部分をクリックして "Developer" に変更します:
2023010406


Developer パースペクティブの状態で「+追加」をクリックし、プロジェクト(例えば "default")を選択してから「コンテナイメージ」を選択します(新しいアプリケーションをコンテナイメージから作る、という指示を意味しています):
2023010407


今回動作検証用に使うアプリケーションのイメージはこれを使うことにします。私が作って Docker ハブで公開しているもので、HTTP でアクセスすると /etc/hostname の内容を読み取って text/plain で返す、というシンプルなアプリケーションです。イメージ名は dotnsf/hostname です:
2023010401


このイメージを指定します。OpenShift の画面には docker.io/dotnsf/hostname と入力します(Docker ハブ上の dotnsf/hostname という指定です)。入力後に「検証済み」と表示されるまで少し待ちます:
2023010402


これ以外のオプションは特に変更の必要はありませんが、名称などはお好きなように指定してください。ただ「生成するリソースタイプの選択」は「デプロイメント」を指定するようにしてください。最後に「作成」ボタンをクリックします:
2023010403


少し時間がかかりますが、以下のような画面が表示されればデプロイ完了です。アイコン右上のリンクボタンをクリックして動作確認してます:
2023010404


別のウィンドウタブが開いて、プライベート OpenShift 上にデプロイされた dotnsf/hostname アプリにアクセスできることを確認します。またこの URL パターンが "***.i000-jp-tok***" となっていて、プライベート OpenShift のパターンになっていることも合わせて確認します:
2023010405


無事にプライベート OpenShift 環境を構築することができました。VPN 接続を切る場合、Windows であればタスクバーなどから OpenVPN クライアントを選択して disconnect することもできます:
2023010405




 

このページのトップヘ