CPへ届け Kubernetesで利用するソースコードホスティング Gitea

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは、サイオステクノロジーの前田です。アプリケーションのソースコードをGitで管理されている方が増えてます。CI/CD環境を作成するとコンテナの利点を大きく受けられます。その時にソースコードをGitで管理することが多いです。GitHubを使用する方も多いとは思いますが、外部ではなく自環境で使用したい方もおられると思います。今回はkubernets環境に構築するGitソースコードホスティングソリューションの一つGiteaのについて記載していきます。

Giteaについて

Gitを利用したホスティングサービスとして有名なものはGitHubがあります。GiteaはGitHubに似ている画面となっております。下記に参考画像を表示します。GitHubを利用しているユーザならば、違和感なく使用できるものだと考えています。GiteaはMITライセンスのため商用利用時に無料で利用することができ、リソース消費が軽量であるため、ユーザーのサーバーリソースとコストのリソースに負担が少ないです。

サイト情報: Gitea

Helmについて

今回はHelmを利用してKubernetes環境に構築していきます。HelmはKubernetesのパッケージマネージャです。Helmを利用することによりKubernetesのたくさんのyamlの設定をしなくてすみます。そのため、Kubernetesに詳しくなくても簡単にデプロイすることが可能です。Helmを使用するためにHelm CLIが必要になります。下記リンクを参考にインストールしてください。

参考サイト: Helmのインストール

Gitea構築概要

Giteaを構築する方法として、いくつかの方法があります。今回はHelmを利用して構築します。

Helmレポジトリから情報を取得しKubernetesクラスターへデプロイします。デプロイするときの注意点として、OKDは生Kubernetesよりセキュリティが高いので少し設定を追加した状態でデプロイします。そしてHelmのデプロイには外部アクセス設定がないため、外部からアクセスできるようにルートを作成しURLでアクセス可能な状態にします。作成したURL情報をGiteaに反映するためにHelmの設定を変更してアップグレードします。

デプロイした後の状態を下記に表示します。

  • 環境情報

    • Kubenetes基盤: OKD v4.10
    • プラットフォーム基盤: AWS
    • クライアントツール:  Helm
  • 詳細構築

    • Helmレポジトリ設定
    • OKDプロジェクト作成
      • SCC設定
    • Giteaデプロイ
      • Helmインストール
    • 外部アクセス設定
      • ルート設定
      • Gitea管理者ユーザ設定
    • Giteaドメイン修正

Gitea構築詳細

■1 Helmレポジトリ設定

Helmレポジトリの登録をします。

helm repo add gitea-charts https://dl.gitea.io/charts/

■2 OKDプロジェクト作成

アプリケーションをデプロイするプロジェクトを作成します。

oc new-project gitea

SCC(セキュリティコンテキスト制約)設定をします。

oc adm policy add-scc-to-user anyuid -z default
oc adm policy add-scc-to-user anyuid -z gitea-memcached

■3 Giteaデプロイ

Helmを利用してデプロイします。

helm install gitea gitea-charts/gitea

デプロイ結果(デプロイが完了するまで下記表示後に数分かかる場合があります)

WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /usr/local/src/okd/config/auth/kubeconfig
NAME: gitea
LAST DEPLOYED: Mon May 30 01:26:28 2022
NAMESPACE: gitea
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  echo "Visit http://127.0.0.1:3000 to use your application"
  kubectl --namespace gitea port-forward svc/gitea-http 3000:3000<br>

■4 外部アクセス設定

3の結果に表示は自端末とKubernetes環境を直接つなぐ方法になります。OKDはルートのリソースがあります。ルートを設定して外部公開します。下記に2パターンの公開方法を記載します。どちらかのルート設定を選択して設定してください。

ルート設定A(http)

oc expose svc gitea-http

ルート設定B (https)

oc create route edge --service=gitea-http

ルート情報の確認

oc get route
ルート情報の結果確認
NAME         HOST/PORT                                                            PATH   SERVICES     PORT   TERMINATION   WILDCARD
gitea-http   gitea-http-gitea.apps.xxxxxxx.xxxxxxx.xx.staging-test.xxxx.jp          gitea-http   http                 None

■Gitea管理者ユーザ作成

Giteaの管理者ユーザを作成するために、GiteaのPodにアクセスを行い、CLI操作で管理者ユーザを作成します。

Giteaのポッド内部にアクセス

oc rsh gitea-0

gitea コマンドが実行できるユーザに変更します。

su - git

giteaのユーザ(myname),パスワード(asecurepassword),メールアドレス(test@test.test)の情報で作成します

 gitea admin user create --username myname --password asecurepassword --email test@tetst.test

■5 Giteaドメイン修正

ルート情報のURLにアクセスしてGiteaのコンソールにアクセスします。

サインインします。

新規リポジトリを作成するために、新しいリポジトリ を選択します。

リポジトリ名 に名称を入力して、リポジトリの初期設定 のチェックボックスを選択し、その後 リポジトリを作成 を押下します。

リポジトリが作成されます。リポジトリのURLが「git.example.com」になっているためHelmの設定を更新します。

Helmの設定情報を取得します。

helm show values gitea-charts/gitea > helm_config_value.yaml

ドメイン名を変更します。

sed -i s/git.example.com/gitea-http-gitea.apps.xxxxxxx.xxxxxxx.xx.staging-test.xxxx.jp/ helm_config_value.yaml

アップグレードします。

helm upgrade gitea gitea-charts/gitea -f helm_config_value.yaml

再度ログインしてGitリポジトリのURLがルートのドメイン名と同じであることを確認します。

 

■6正常性確認

リポジトリの 新規ファイルを選択します。

ファイル名を index.htlm と入力して、ファイルの中身に Hello Git World と入力してください。 その後、変更をコミット を選択してください。

リポジトリが更新されて index.html が表示されます。

最後に

Giteaを使用することで、ソースコードの管理やイシューの管理、wiki等が使用できるようになります。そのため、生のkubernetseの状態よりコンテナの利点を生かせるコンテナプラットフォーム(CP)に近づきました。OKDはGiteaとカタログを利用することで、簡単な初期デプロイと更新デプロイが驚くほど簡単に行えます。Kubernets環境でのデプロイは以前より簡単にはなりましたが、まだまだ専門知識が多く必要です。Kubernetesのデプロイは大変ですが、本記事が読まれている方の不明点の解消の一つになれたら幸いです。

アバター画像
About 前田周哉 29 Articles
血液はみかん色。インフラを中心に対応、認証、DB、API、コンテナ基盤,クラウド、iotなど複数のシステムインフラを対応するサーバエンジニア。現在はOpenShift中心にkubernetesに関連する対応が中心。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる