プライベートネットワーク上のk8sに関する議論

組織の Discourse を Kubernetes 上でセットアップしようとしています。しかし、いくつかの問題に直面しています。
ブートストラップされたイメージを Kubernetes にデプロイしようとすると、git pull pupsgit pull discourse のような処理が行われますが、インターネットにアクセスできないプライベートネットワーク上ではこれらが機能せず、その結果、コンテナが起動しません。これらの処理をスキップしてデプロイする方法はありますか?

すでにブートストラップされたイメージをデプロイしていることは確かですか?おそらく、レジストリに誤ったイメージをプッシュしてしまったようです。

ええ、私は ./launcher bootstrap app で作成されたイメージを使用しています。

つまり、最終的にブートストラップされたイメージには、そのような依存関係が含まれていてはいけない、ということでしょうか?

いいえ、含まれません。ブートストラップ後、local_discourse/app というイメージが生成されます。これをレジストリにプッシュし、他の場所で使用する必要があるのはこのイメージです。

「いいね!」 5

最後の疑問ですが、間違ったイメージをプッシュしていたようですね、私のミスです。実際のイメージをプッシュした後、Kubernetesデプロイ時にDISCOURSE_DB_HOSTなどの環境変数を変更できますか?私には別のPostgresクラスターとRedisクラスターがあるためです。

そんな経験はありますよ。ご安心ください、非常に一般的な間違いです。だから私が尋ねたのです :stuck_out_tongue:

ええと、少し複雑です。

それらの値を上書きするのは簡単で、コンテナの実行時に必要な ENV 変数を追加するだけです。ただし、ブートストラップ中にマイグレーションが実行されます。ブートストラップ後にイメージを異なるデータベースを指すように変更しようとすると、データベーススキーマが完全に破綻してしまいます。こうすると、unsupported-install(非公式インストール)の領域に突入することになります。

「いいね!」 2

すでにディスクコースのインスタンスがバーアールメタル上で動作していますが、これをK8sに移行し、バーアールメタルで使用していたのと同じデータベースに接続したいと考えています。

可能であれば、DISCOURSE_DB_HOST と DISCOURSE_DB_NAME を、物理サーバーが使用しているのと同じデータベースを指すようにして、ブートストラップを再度実行することはできますか?

「いいね!」 1

それでうまくいくはずです!

その作業中は、データベースに接続されている現在の Discourse コンテナを停止しておくことをお勧めします。マイグレーションによって予期せぬ動作を引き起こす可能性があるためです。

「いいね!」 3

新規の空のデータベースを作成してブートストラップする場合、UI(旧Discourseインスタンスと新DiscourseインスタンスのUI)から、例えば /admin/backups のようにデータを移行することは可能でしょうか?旧データベースを破損させたくありません。多くのユーザーがそのデータベースを使用しています。

UX からの移行はできません。

ポストデプロイメント移行の導入をご覧ください。これにより、新旧のコンテナの両方で動作するようにデータベースを移行し、デプロイ後に最終的な移行を行うことができます。

「いいね!」 1

ええと、おっしゃった通り試してみました(ブートストラップされたイメージをプッシュしました)が、同じエラーが発生しているようです。

fatal: unable to access 'https://github.com/discourse/pups.git/': Failed to connect to github.com port 443: Connection timed out

私はプライベートネットワーク上にいるため、github.com にアクセスできません。

@pfaffman @Falco これは想定される動作でしょうか?これは k8s 上で実行しています。

つまり、また間違ったイメージをプッシュしてしまったということです。

内部の /etc/hosts ファイルを変更して、必要なリソースを模倣し、その後必要な設定を追加するのがおすすめです。

さらに簡単なのは、4G/SIM 接続対応のモデム/ルーターを導入することです。内部ネットワークでこのデバイスをデフォルトルーターとして認識させ、接続して作業を行い、作業終了後に切断します。

非常にシンプルです。

では

Keith John Hutchison - Ceiteach Seán Mac Úistin
Bringing Data to Life Pty. Ltd. (BD2L)

今回は、かなり確信があります :sweat_smile: ./launcher bootstrap app の実行中に何らかのエラーが発生している可能性はありますか?

さらに、現在バーメタル上で稼働し、当社の Discourse ウェブサイトをホストしている最新の Discourse イメージを試しましたが、それを k8s 上で実行しても、上記と同じエラーが発生します。

ローカルマシンでも、インターネットに接続せずに

docker run local_discourse/app

を実行すると、上記のエラーが発生するようです。