このドキュメントでは、Kubernetes クラスターでの JFrog Artifactory のセットアップに関するガイダンスを提供します。これは、開発者がローカル マシンで実行されている Kubernetes 環境に JFrog をインストールして構成するための基本的なチュートリアルとして機能します。
Docker コンテナを使用して、複数のアプリケーションの作業環境をセットアップします (セットアップ環境)。このアプローチにより、アプリケーション開発のための完全に分離された保守可能な環境が確保され、これらの環境を簡単に開始および終了できるようになります。以下は環境を作成するための Docker コマンドです。
docker run -it --name test-jfrog-envornment-box -v ${HOME}/root/ -v ${PWD}/work -w /work --net host developerhelperhub/kub-terr-work-env-box sh
コンテナにはDocker、Kubectl、Helm、Terraform、Kind、Gitが含まれています
すべての Terraform スクリプトを作成しました。これらは GitHub リポジトリで入手できます。 Docker コンテナ内でローカルに実行される Kubernetes クラスター上に Jenkins をダウンロードしてセットアップできます。
ローカル Linux マシンにリポジトリのクローンを作成しますを開始します。
git clone https://github.com/developerhelperhub/kuberentes-help.git cd kuberentes-help/kubenretes/tutorials/sections/0009/
Kind を使用して Docker コンテナに Kubernetes クラスタをセットアップします。クラスタに「devops-jfrog-cluster-control-plane」という名前を付けます。このクラスタはイングレスをサポートし、サービスへのアクセスを許可するためにポート 80 と 443 を公開します。クラスターの外から。
クラスタ作成 Terraform スクリプトが種類フォルダーで利用可能
cd kind terraform init #Install the required providers to set up the necessary resources. terraform plan #Verify the resources that will be installed on the system. terraform apply #Install resources on the system
次のコマンドでクラスターを確認します
kubectl cluster-info kubectl get nodes -o wide
Kubernetes クラスターで Nginx Ingress コントローラーをセットアップする
Kubernetes クラスター内のサービスへの外部アクセスを管理する NGINX Ingress コントローラー。これは、Kubernetes アプリケーションのエントリ ポイントとして機能し、外部 HTTP および HTTPS トラフィックをクラスター内の適切なサービスにルーティングします。
次のコマンドは、クラスターにイングレス コントローラーをインストールします
Ingress 作成スクリプトは「ingress」フォルダーで利用可能
cd ingress kubectl apply -f ingress-nginx.yaml
次のコマンドは nginx Ingress コントローラーを確認します
kubectl get -n ingress-nginx pod
出力
NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-5mt2k 0/1 Completed 0 53s ingress-nginx-admission-patch-w2rlk 0/1 Completed 0 53s ingress-nginx-controller-d45d995d4-gl65h 1/1 Running 0 53s
JFrog Artifactory OSS コミュニティ Helm リポジトリを追加します: まず、JFrog Artifactory OSS コミュニティ Helm リポジトリを Helm クライアントに追加する必要があります:
注: JFrog 作成スクリプトは「jfrog」フォルダーで利用できます
helm repo add jfrog https://charts.jfrog.io helm repo update
次のコマンドを使用して、クラスターにインストールされているサービスのアプリ バージョンとチャート バージョンを確認できます:
helm search repo artifactory-oss
この例では、カートのバージョンは「107.90.8」、アプリのバージョンは「7.90.8」です
NAME CHART VERSION APP VERSION DESCRIPTION jfrog/artifactory-oss 107.90.8 7.90.8 JFrog Artifactory OSS
helm-value.yaml という名前の Helm 値 YAML ファイルを作成します。これは、JFrog Artifactory OSS サービスの構成に使用されます。この構成ファイルは、クラスターにサービスをインストールするために Helm によって使用されます。
artifactory: postgresql: postgresqlPassword: postgres_password nginx: enabled: false ingress: enabled: false
上記の設定では、次の点を設定しました:
次の Helm コマンドは、Artifactory をクラスターにインストールするために使用されます。 「artifactory-oss」という名前空間を含む必要なリソースをクラスター内に作成し、この名前空間内にすべてのリソースをインストールします。
helm install artifactory-oss -f helm-value.yaml jfrog/artifactory-oss --namespace artifactory-oss --create-namespace
Helm チャートの値: https://github.com/jfrog/charts/blob/master/stable/artifactory-oss/values.yaml
すべてのリソースが「artifactory-oss」名前空間にインストールされていることを確認できます。 Artifactory サービス UI はポート 8082 で実行されていますが、Artifactory 自体はポート 8081 で動作しています。
kubectl get -n artifactory-oss all NAME READY STATUS RESTARTS AGE pod/artifactory-oss-0 0/7 Running 0 3m19s pod/artifactory-oss-postgresql-0 1/1 Running 0 3m19s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/artifactory-oss ClusterIP 10.96.170.638082/TCP,8025/TCP,8081/TCP 3m19s service/artifactory-oss-postgresql ClusterIP 10.96.95.36 5432/TCP 3m19s service/artifactory-oss-postgresql-headless ClusterIP None 5432/TCP 3m19s NAME READY AGE statefulset.apps/artifactory-oss 0/1 3m19s statefulset.apps/artifactory-oss-postgresql 1/1 3m19s
リクエストを Artifactory サービスにルーティングするための Ingress リソースを作成する必要があります。次の構成を ingress-resource.yaml ファイルに追加します。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: jfrog-ingress namespace: artifactory-oss annotations: nginx.ingress.kubernetes.io/proxy-body-size: "0" spec: ingressClassName: nginx rules: - host: jfrog.artifactory.devops.myapp.com http: paths: - path: / pathType: ImplementationSpecific backend: service: name: artifactory-oss port: number: 8082
proxy-body-size=0 を設定する必要があります。この設定は、ファイルを Artifactory にアップロードするときにファイル サイズに制限を課さないように Ingress に指示します。
次のコマンドを実行してクラスタにイングレスを適用します
kubectl apply -f ingress-resource.yaml
IP アドレスが設定されていることを確認します:
kubectl -n artifactory-oss get ingress NAME CLASS HOSTS ADDRESS PORTS AGE jfrog-ingress nginx jfrog.artifactory.devops.myapp.com localhost 80 2m53s
ローカル マシンの /etc/hosts ファイルの最後にドメインを追加します。この構成は、動作する Linux ボックス「test-jfrog-envornment-box」内に含めるべきではありません。これは個人用マシンの /etc/hosts ファイルに適用する必要があります。
(管理者アクセスが必要になります):
127.0.0.1 jfrog.artifactory.devops.myapp.com
ブラウザ「http://jfrog.artifactory.devops.myapp.com/」で Artifactory UI を開くことができます
デフォルトのユーザー名「admin」とパスワード「password」を使用してログインできます。初めてログインすると、Artifactory はデフォルトのパスワードを変更するように求めます。必ずパスワードを更新し、ベース URL を http://jfrog.artifactory.devops.myapp.com (Artifactory Ingress リソースで構成されたドメイン) に設定し、他の初期構成手順をスキップしてください。
依存関係とバイナリをアーティファクトリにプッシュするための初期リポジトリ設定を作成できます。
「Artifactory → Artifacts → Manage Repositories → Create Repository」に移動し、次のリポジトリを作成します。
リポジトリを維持するために Maven リポジトリを使用しています。設定に続いて、「my-app-snapshot」ローカル リポジトリを指定する必要があります
次の構成では、「my-app-central-snapshot」ローカル リポジトリを指定する必要があります
次の構成では、「my-app-virtual-snapshot」ローカル リポジトリを指定する必要があります
ローカル リポジトリとリモート リポジトリを仮想リポジトリに追加し、「デフォルトのデプロイメント リポジトリ」でローカル リポジトリを選択します。
すべてのリポジトリが作成されたら、メイン セクションの「Artifactory → Artifacts」でそれらを表示できます。仮想 URL http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ が Maven アプリケーションに使用されます。
Maven アプリケーションが Artifactory で認証できるようにするには、Maven 設定構成ファイル「~/.m2/settings.xml」で認証の詳細を構成する必要があります。
my-app-virtual-snapshot admin Give your artifactory admin passoword
注: 管理者ユーザーは UI および Artifactory へのアクセスに使用しないでください。代わりに、Artifactory での読み取りと書き込みのための適切な権限を持つカスタム ユーザーを作成します。
Maven アプリケーションの POM XML ファイル内に Maven リポジトリと配布管理タグを設定しました
false my-app-virtual-snapshot my-app-virtual-snapshot http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ default my-app-virtual-snapshot my-app-virtual-snapshot http://jfrog.artifactory.devops.myapp.com/artifactory/my-app-virtual-snapshot/ default
次のコマンドで Maven アプリケーションをデプロイできます
mvn clean deploy
Maven の次の出力が可能です:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3