|
Zadigは、KodeRoverがKubernetesをベースに設計・開発したオープンソースの分散型継続的デリバリー製品です。柔軟で使いやすい高並列ワークフロー、開発者向けのクラウドネイティブ環境、効率的で協調的なテスト管理、強力でメンテナンスフリーのテンプレートライブラリ、客観的かつ正確なパフォーマンス分析、クラウドネイティブIDEプラグインといった主要機能を誇り、エンジニアに統合されたコラボレーションプラットフォームを提供します。Zadigは、Kubernetes YAML、Helm Charts、ホストといった複雑なシナリオ向けのベストプラクティスを取り入れており、大規模なマイクロサービスや高頻度・高品質なデリバリーシナリオに適しています。 コアコンセプトZadig を使用する前に、まずその中核となる概念のいくつかを理解しましょう。
インストールここでは、インストールに Helm を使用することを選択します。 $ helm リポジトリにkoderover を追加します- チャートhttps://koderover.tencentcloudcr.com/chartrepo/chart チャート パッケージを取得します。 $ helm pull koderover - chart / zadig -- untar 以下のように値ファイル (ci/local-values.yaml) を作成します。 # ci / local - 値.yaml Zadig には MongoDB、MinIO、MySQL のサービスが必要です。外部サービスが利用できない場合は、組み込みサービスを使用できます。これらのサービスを有効にするかどうかは、`tags` のプロパティで設定できます。`endpoint.FQDN` は、Zadig サービスのアドレスを設定するために使用されます。その後、`values` ファイルを使用して Zadig をデプロイできます。 $ kubectl 作成ns zadig デプロイ後、Zadig 関連サービスのステータスを確認します。 $ kubectl ポッドを取得-n zadig ご覧のとおり、zadig には依存サービスが多数あります。デフォルトでは、zadig は gloo などの Ingress コントローラーを使用してサービスを公開し、zadig という名前の仮想サービス オブジェクトを作成します。これは基本的に Ingress のより高度なバージョンです。 $ kubectl get virtualservices zadig - n zadig ローカルクラスターにmetalbをデプロイしました。これにより、LoadBalancerタイプのIPアドレスがgateway-proxyサービスに自動的に割り当てられます。zadig.k8s.localドメイン名をこのIPアドレスに解決するだけで、ブラウザからアクセスできるようになります。 デフォルトのユーザー名はadmin、パスワードはzadigです。ログイン後、ホームページにアクセスできます。 基本的な使い方Zadig をインストールした後、コンテナ化された Nginx を例として、Zadig の基本的な使用方法を説明します。 統合コードソースまず、一般的な GitHub、GitLab などのコード ソースを追加する必要があります。 GitHubGitHubのコードソースを統合するには、まずhttps://github.com/settings/developersにアクセスし、新しいOAuthアプリを作成する必要があります。アプリケーション名は任意です。ここでは、ホームページURLはhttp://zadig.k8s.localです。さらに重要なのは、下記のコールバックURLです。http://zadig.k8s.local/api/directory/codehosts/callbackと入力してください。 アプリケーションが正常に作成されると、GitHub からアプリケーションの基本情報が返されます。「新しいクライアントシークレットを生成」をクリックして、クライアントシークレットを生成してください。 生成されたクライアントIDとクライアントシークレットを記録します。Zadigシステムに切り替えます。管理者は「システム設定」→「統合管理」→「コードソース統合ページ」をクリックし、「追加」ボタンをクリックします。ポップアップダイアログボックスで「GitHubコードソース」を選択し、上記で取得したクライアントIDとクライアントシークレットを入力します。 次に、「認証へ進む」ボタンをクリックします。クリックすると、GitHubの認証ページに自動的にリダイレクトされ、認証と承認を行う必要があります。承認後、Zadigのシステムページに自動的にリダイレクトされます。 ギットラボGitLabのソースコードを統合するには、認証アプリケーションも作成する必要があります。GitLabのアプリケーション管理ページ(http://git.k8s.local/-/profile/applications)にアクセスしてください。 ここでは、Zadig という名前の新しいアプリケーションを作成する必要があります。リダイレクト URI は http://zadig.k8s.local/api/directory/codehosts/callback であり、api、read_user、および read_repository の権限を選択する必要があります。 アプリケーションが正常に作成されると、GitLab はアプリケーション ID やシークレット情報など、アプリケーションに関する関連情報を返します。 次に、同じように、Zadig に移動して新しいソースコードを追加し、ダイアログボックスに GitLab 情報を入力します。 次に、「承認に移動」ボタンをクリックすると、承認と認証のために GitLab ページに自動的にリダイレクトされます。 承認を確認すると、自動的に Zadig にリダイレクトされ、追加されたコード ソースを確認できるようになります。 統合画像リポジトリソースコードを統合したら、Zadigにイメージリポジトリを追加する必要があります。Zadigは、Alibaba Cloud ACR、Tencent Cloud TCR、Huawei Cloud SWR、Amazon ECR、DockerHub、Harborなどのイメージリポジトリの統合をサポートしています。ここでは、同じKubernetesクラスターにデプロイされたHarborサービスを統合します。 まず、Zadig でビルドしたイメージを保存するために、Harbor に zadig という名前の新しいプロジェクトを作成します。 Zadig システム ページ http://zadig.k8s.local/v1/system/registry で、「作成」ボタンをクリックし、Harbor 情報を設定します。 Harborサービスは自己署名サービスなので、利便性のためSSL検証は有効化していません。保存ボタンをクリックするだけです。 新しいプロジェクト例として、シンプルなNginxアプリケーションを使用します。コードはGitLabでホストされており、リポジトリのアドレスはhttp://git.k8s.local/course/zadig-nginx-demoです。リポジトリにはDockerfileとindex.htmlファイルのみが含まれています。 nginx から: 安定版 ソースコードが準備できたら、プロジェクトを作成できます。Zadigのプロジェクトには、ワークフロー、環境、サービス、ビルド、テスト、バージョンなどのリソースが含まれます。ユーザーは、プロジェクト内でサービス開発、サービスデプロイ、統合テスト、バージョンリリースなどの操作を実行できます。 上記のプロジェクトリストが開き、新しいプロジェクトを作成できます。ここでは、K8s YAMLプロジェクトタイプを選択します。 「今すぐ新規作成」ボタンをクリックしてプロジェクト初期化ウィザードに入り、「次へ」をクリックしてサービスの作成を開始します。 「次へ」をクリックして、新しいサービスの作成を開始します。Zadigにおけるサービスは、サービス、デプロイメントなどのKubernetesリソースのグループ、またはHelm Chartパッケージとして理解できます。 新しいサービスを作成するには、次の 3 つの方法があります。
ここでの例は非常にシンプルなので、手動で直接入力してサービスを作成します。以下に示すように、 ここでは、デプロイメント リソースとサービス リソースを 1 つずつ作成するだけで済みます。対応するリソース マニフェスト ファイルを以下に示します。 apiバージョン: アプリ/ v1 次に「保存」ボタンをクリックします。保存すると、システム変数、YAMLのカスタム変数、サービスコンポーネントが自動的に読み込まれます。上記のYAMLファイルでは、変数「nginxVersion」を追加しており、Zadigはこれを自動的に読み取ります。 次に、変数領域で「ビルドの追加」をクリックして、サービスのビルド方法を設定します。 必要に応じてビルド環境を構成し、GitLab コード ソース、および以前のプロジェクト コード リポジトリとブランチを選択できます。 次に、以下の一般的なビルド スクリプトを設定できます。 cd $WORKSPACE / zadig - nginx - デモ $IMAGE変数は、前の変数($IMAGE)から読み取った現在のイメージバージョンです。設定が完了したら、「保存してビルド」をクリックします。 ご覧の通り、上記で作成したビルド情報にリンクされています。 次に、「次へ」をクリックして続行します。このステップでは、システムは2つの環境と3つのワークフローを自動的に作成します。2つの環境はそれぞれ日常的な開発プロセスとテスト/受入プロセスに使用でき、3つのワークフローは対応する環境に自動的にバインドされ、異なる環境間での継続的デリバリーを実現します。 Zadig は、Kubernetes クラスターに nginx-demo-env-dev と nginx-demo-env-qa という名前の 2 つの名前空間を作成します。 $ kubectl get ns | grep nginx - デモ 次のステップに進み、ワークフロー実行ページに入ると、それぞれ異なる環境に対応する、作成した 3 つのワークフローが表示されます。 たとえば、開発環境の継続的デリバリーを完了するために nginx-demo-workflow-dev ワークフローを選択する場合は、その横にある「実行」ボタンをクリックします。 実際のニーズに応じて、デプロイするサービスと対応するコード ブランチを選択し、[タスクの開始] をクリックしてビルド タスクを開始します。 タスク開始後、ビルドタスクを実行するためにPodが自動的に起動されることがわかります。これは基本的にJenkinsの動的スレーブと同じです。タスクが完了すると、Podは自動的に破棄されます。 $ kubectl ポッドを取得-n zadig タスクが完了すると、新しくビルドされたイメージ harbor.k8s.local/zadig/nginx:20220711184844-1-main が、前に構成したリソース リスト内のイメージ アドレスを置き換え、nginx-demo-env-dev 名前空間に自動的にデプロイされます。 $ kubectl get pods -n nginx -demo -env -dev このサービスの NodePort を介して nginx サービスにアクセスできます。 $ kubectl get svc -n nginx -demo -env -dev 同時に、開発環境のイメージ情報も上記で構築したイメージ情報に自動的に更新されます。 トリガー他の環境でのサービス配信も上記と同様です。次に、ワークフローの自動トリガーとバージョン配信を設定します。 開発ワークフロー構成ボタンをクリックして、ワークフロー構成ページに入ります。 左側の「+」ボタンをクリックしてトリガーの追加を開始し、「Webook」をチェックしてWebhookトリガーを追加します。 「設定を追加」をクリックしてトリガーを追加します。ここではGitLabコードリポジトリのトリガーを追加します。対応するコードリポジトリとブランチ情報を選択し、追加後に必ず保存してください。 ここで、GitLab コード リポジトリにプル リクエストを作成すると、対応する Zadig ワークフロー ステータスがマージ処理ページで自動的に関連付けられます。 タスク リンクをクリックすると、Zadig ワークフロー情報ページに移動します。 もちろん、この PR をメイン ブランチにマージすると、新しいタスクもトリガーされます。 Zadig を使用した基本的なアプリケーション配信はこれで完了です。Zadig は、さらに高度な機能やプラクティスも数多く提供しています。 |