Kubernetes(K8s) オペレーターを書こうという思いが私の心の中でどんどん大きくなっていきました。私は記事を読み、GitHub リポジトリを調べ、同僚に相談し始めました。完全に成功したとは言えませんが、意図はそこにありました。
Kubernetes を毎日扱うバックエンド開発者として、私は自分の知識の境界を広げるためにオペレーターを書きたいと常に思っていました。しかし、この目標を達成するのを妨げる障害が発生しました。 これは私が兵役中に gobackup-operator を書いた経緯です。 tl;dr: 「詳細プロジェクト」セクションに直接スキップします ナイフを研いでも薪割りは遅れないKubernetes(K8s) オペレーターを書こうという思いが私の心の中でどんどん大きくなっていきました。私は記事を読み、GitHub リポジトリを調べ、同僚に相談し始めました。完全に成功したとは言えませんが、意図はそこにありました。 この努力の成果は、私の GitHub アカウントに保存されている一連のチュートリアル プロジェクトです。 実践プロセスは、私が初めて Kubernetes に出会った約 1 年前に始まったことを述べておきます。 CKAD について学ぶために、まず Guru のチュートリアルを見て、次に Nana の YouTube チュートリアルを見ました。 灰に帰した私は軍隊に配属されました。 インターネット接続も、電子機器も一つもありませんでした。その代わりに、私たちを楽しませてくれたのは、ハードカバーの本、バレーボール、そして素晴らしい日の出と日の入りの景色だけでした。 この場合、オペレーターを作成するという考えは消えつつあります。私が気にしているのは、食べること、読書すること、そして時々の自由(休暇)を楽しむことだけです。しかし、時にはこの自由は長くは続かなかった。司令官はかつてこうコメントした。
研修コースが終了し、オフィスで社員として働き始めましたが、そこでもインターネット接続の不足を感じました。夜はオフィスを出て、好きな仕事をします。限られた時間内でより良いパフォーマンスが得られることもあります。それで、午後4時から午後9時まで、何か特別なものを作らなければなりませんでした。私にとって、それは本当に特別なことです! 音を立てなければ、結局、このシリーズの助けを借りて、チュートリアルから別の Kubernetes オペレーターを作成することができましたが、今回は違ったものでした。 同僚がバックアップシステムを開発しましたが、あまりうまく機能していないようです。そこで彼らは別の解決策を模索し、定期的にデータベースをバックアップしてストレージにプッシュするように設計された gobackup というプロジェクトに出会いました。問題は、プロジェクトに etcd データベースのサポートが含まれていないことです。そのため、彼らは要件を満たすために etcd サポートを追加することでプロジェクトに貢献することを決定しました。最終的に、これが新しいバージョンにつながりました。 私が不在の間、彼らはその上に Kubernetes オペレーターを開発することに決めました。これは私にとって重要な一歩です。彼らがそれを私と共有したとき、私は熱心にプロジェクトをチェックし、「ついにこれだ。オペレーターが作成されようとしている。やったー!」と思いました。 プロジェクトを読んでいるときに、プロジェクトの README に質問があることに気付きました。リンクの 1 つは 404 ページを指しています。私はこの問題を解決するために率先してプルリクエストを送信しました。 オーナーはそれを受け入れました。 :) このようなオープンな姿勢に出会った後、同僚の一人が、このオペレーターを gobackup 組織の下に置いて、より多くの人が開発に貢献できるようにしたらどうかと提案しました。 私は問題を提起し、gobackup 組織の下にリポジトリを提案しましたが、コラボレーションの余地はまだ残っています。 昼間は軍隊に勤務し、夜は gobackup-operator プロジェクトに取り組んでいます。 プロジェクトの詳細まず環境を整えました。 幸運なことに、私のコンピューターにはすでに Golang、Docker、kubectl がインストールされていました。これまでの経験を通じて、ローカル マシンの Kubernetes クラスター (Kind など) とオペレーターを作成するためのツール (kubebuilder など) についてはすでに精通しています。 そこで、オペレータコードを開始しました。 次に、オペレーターの API を作成しました。 データベースとストレージについても同様です。 APIの変更プロジェクトの特定の要件に応じて API を変更しました。 次に、Reconcileメソッドを変更します
テストテストする前に、バックアップ可能なテスト データベースを準備する必要があります。したがって、gobackup-operator-postgres-deployment.yaml ファイルを使用して PostgreSQL デプロイメントを作成します。 マニフェスト内の POSTGRES_USER と POSTGRES_PASSWORD を変更して適用することを忘れないでください。 さらに、Kubernetes クラスターでテストするためのリソース (デプロイメント、ロール、クラスター ロール、サービス アカウントなど) をいくつか追加しました。これらはすべて gobackup-operator/example/ ディレクトリにあります。 したがって、次のチェックリストを適用して基本的なリソースを追加します。 次に、ストレージとデータベースのリストが表示されます。 次のマニフェストを使用して、ローカル マシン上でオペレーターを実行できました。 したがって、Backup オブジェクトまたは CronBackup オブジェクトが作成または変更されるたびに、オペレーターは必要なタスクを実行します。 バックアップ構成を設定するためのバックアップ モデルを作成するには: gobackup-operator/example/gobackup-operator ディレクトリ内のマニフェスト (backup または cronbackup) のいずれかを適用すると、オペレーターがバックアップを実行するようになります。 結論は最初は、README にこのような小さな変更を加えることに恥ずかしさを感じました。 Hacktoberfest への応募に参加するためだけに作成した PR の 1 つのように感じます。 しかし、私はその有効性について考えました。単一行のコミットでも影響がありました。 README ファイルにその変更を加えていなかったら、オペレーターを作成しなかったかもしれません。 |
>>: 高度にスケーラブルなクラウドネイティブアプリケーションを構築するための 5 つのヒント
分散アーキテクチャとクラウドネイティブは、どちらも現在のテクノロジー分野で注目されているトピックです...
昨日、その友人は、私のウェブサイトにいくつかのコラムを追加して、私のWebサイトを見せてくれたことを...
時は経つのが早いもので、2011 年もあっという間に過ぎ、あと数日で 2012 年の春節がやってきま...
北京時間8月5日、海外メディアの報道によると、フォーブス誌は以前、マーケティング専門家ケン・クローグ...
クラスタリングと分散は、実際にはまったく異なる概念です。 [[284886]]クラスタビジネスは複数...
最近、部署の社員が百度重みについて議論しているのをよく耳にします。私は、ウェブサイトの百度重みの変化...
今、また別の子供たちが大学入試に合格しました。彼らにはまた別の明るい未来が待っているはずです。しかし...
「私にとって最も辛いのは、廃棄される在庫1000万相当の契約を自らの手で締結したことだ」と、すでに破...
WeChatパブリックプラットフォームの立ち上げは、草の根起業家に朗報をもたらした。大手メディアが自...
raksmart は、米国サーバー (米国独立サーバー、米国物理マシン) の期間限定フラッシュセール...
多くの場合、数か月間独自に外部リンクを投稿し、コンテンツを作成しているのに、Web サイトがまったく...
パブリック クラウドは、マルチテナント クラウド コンピューティング環境として、大量のデータを持つ企...
自分のウェブサイトを構築するのが好きな人は、特別なブログを持っているでしょう。今日は、なぜブログを頻...
国内の共同購入サイトの数は2010年8月以降1,000サイトを突破した。非合理的な発展により、201...
急速な発展とデジタル化の緊急のニーズに駆り立てられ、今日のデジタル企業は、迅速な変革を実現するために...