組織の Discourse を Kubernetes 上でセットアップしようとしています。しかし、いくつかの問題に直面しています。
ブートストラップされたイメージを Kubernetes にデプロイしようとすると、git pull pups や git pull discourse のような処理が行われますが、インターネットにアクセスできないプライベートネットワーク上ではこれらが機能せず、その結果、コンテナが起動しません。これらの処理をスキップしてデプロイする方法はありますか?
すでにブートストラップされたイメージをデプロイしていることは確かですか?おそらく、レジストリに誤ったイメージをプッシュしてしまったようです。
ええ、私は ./launcher bootstrap app で作成されたイメージを使用しています。
つまり、最終的にブートストラップされたイメージには、そのような依存関係が含まれていてはいけない、ということでしょうか?
いいえ、含まれません。ブートストラップ後、local_discourse/app というイメージが生成されます。これをレジストリにプッシュし、他の場所で使用する必要があるのはこのイメージです。
最後の疑問ですが、間違ったイメージをプッシュしていたようですね、私のミスです。実際のイメージをプッシュした後、Kubernetesデプロイ時にDISCOURSE_DB_HOSTなどの環境変数を変更できますか?私には別のPostgresクラスターとRedisクラスターがあるためです。
そんな経験はありますよ。ご安心ください、非常に一般的な間違いです。だから私が尋ねたのです ![]()
ええと、少し複雑です。
それらの値を上書きするのは簡単で、コンテナの実行時に必要な ENV 変数を追加するだけです。ただし、ブートストラップ中にマイグレーションが実行されます。ブートストラップ後にイメージを異なるデータベースを指すように変更しようとすると、データベーススキーマが完全に破綻してしまいます。こうすると、unsupported-install(非公式インストール)の領域に突入することになります。
すでにディスクコースのインスタンスがバーアールメタル上で動作していますが、これをK8sに移行し、バーアールメタルで使用していたのと同じデータベースに接続したいと考えています。
可能であれば、DISCOURSE_DB_HOST と DISCOURSE_DB_NAME を、物理サーバーが使用しているのと同じデータベースを指すようにして、ブートストラップを再度実行することはできますか?
それでうまくいくはずです!
その作業中は、データベースに接続されている現在の Discourse コンテナを停止しておくことをお勧めします。マイグレーションによって予期せぬ動作を引き起こす可能性があるためです。
新規の空のデータベースを作成してブートストラップする場合、UI(旧Discourseインスタンスと新DiscourseインスタンスのUI)から、例えば /admin/backups のようにデータを移行することは可能でしょうか?旧データベースを破損させたくありません。多くのユーザーがそのデータベースを使用しています。
UX からの移行はできません。
ポストデプロイメント移行の導入をご覧ください。これにより、新旧のコンテナの両方で動作するようにデータベースを移行し、デプロイ後に最終的な移行を行うことができます。
ええと、おっしゃった通り試してみました(ブートストラップされたイメージをプッシュしました)が、同じエラーが発生しているようです。
fatal: unable to access 'https://github.com/discourse/pups.git/': Failed to connect to github.com port 443: Connection timed out
私はプライベートネットワーク上にいるため、github.com にアクセスできません。
つまり、また間違ったイメージをプッシュしてしまったということです。
内部の /etc/hosts ファイルを変更して、必要なリソースを模倣し、その後必要な設定を追加するのがおすすめです。
さらに簡単なのは、4G/SIM 接続対応のモデム/ルーターを導入することです。内部ネットワークでこのデバイスをデフォルトルーターとして認識させ、接続して作業を行い、作業終了後に切断します。
非常にシンプルです。
では
Keith John Hutchison - Ceiteach Seán Mac Úistin
Bringing Data to Life Pty. Ltd. (BD2L)
今回は、かなり確信があります
./launcher bootstrap app の実行中に何らかのエラーが発生している可能性はありますか?
さらに、現在バーメタル上で稼働し、当社の Discourse ウェブサイトをホストしている最新の Discourse イメージを試しましたが、それを k8s 上で実行しても、上記と同じエラーが発生します。
ローカルマシンでも、インターネットに接続せずに
docker run local_discourse/app
を実行すると、上記のエラーが発生するようです。