Automation Pipelines 管理者または開発者は、Automation Pipelines および VMware Tanzu Kubernetes Grid Integrated Edition(旧称 VMware Enterprise PKS)を使用して、ソフトウェア プリケーションの Kubernetes クラスタへの展開を自動化できます。この使用事例では、アプリケーションのリリースを自動化するためのその他の方法を紹介します。
この使用事例では、2 つのステージを含むパイプラインを作成し、Jenkins を使用してアプリケーションをビルドして展開します。
- 最初のステージは開発用です。Jenkins を使用して、GitHub リポジトリ内のブランチからコードを取得し、ビルドおよびテストして、公開します。
- 2 番目のステージは、展開用です。パイプラインがアプリケーションを Kubernetes クラスタに展開する前に、主要なユーザーの承認を必要とするユーザー操作タスクを実行します。
パイプライン ワークスペースで Kubernetes API エンドポイントを使用する場合、Automation Pipelines は、継続的インテグレーション (CI) タスクまたはカスタム タスクを実行するために必要な ConfigMap、シークレット、ポッドなどの Kubernetes リソースを作成します。Automation Pipelines は、NodePort を使用してコンテナと通信します。
パイプラインの実行の間でデータを共有するには、パーシステント ボリュームの要求を指定する必要があります。Automation Pipelines はパーシステント ボリュームの要求をコンテナにマウントしてデータを保存し、以降のパイプラインの実行に使用します。
Automation Pipelines パイプライン ワークスペースでは、継続的インテグレーション タスクとカスタム タスクで Docker と Kubernetes がサポートされます。
ワークスペースの構成に関する詳細については、パイプライン ワークスペースの構成を参照してください。
パイプラインがアプリケーションをビルド、テスト、公開、および展開できるように、開発ツール、展開インスタンス、およびパイプライン YAML ファイルを使用できる必要があります。パイプラインは、Kubernetes クラスタの開発インスタンスと本番インスタンスにアプリケーションを展開します。
アプリケーションのリリースを自動化するその他の方法は次のとおりです。
- Jenkins を使用してアプリケーションをビルドする代わりに、Automation Pipelines のネイティブ ビルド機能と Docker ビルド ホストを使用できます。
- アプリケーションを Kubernetes クラスタに展開する代わりに、Amazon Web Services (AWS) クラスタに展開することができます。
Automation Pipelines のネイティブ ビルド機能と Docker ホストの使用方法の詳細については、次を参照してください。
前提条件
- 展開するアプリケーション コードが、運用中の GitHub リポジトリにあることを確認します。
- Jenkins の作業インスタンスがあることを確認します。
- 動作しているメール サーバがあることを確認します。
- Automation Pipelines で、メール サーバに接続するメール エンドポイントを作成します。
- 開発および本番環境用に、Amazon Web Services (AWS) 上に 2 つの Kubernetes クラスタを設定します。これにより、パイプラインでアプリケーションが展開されます。
- GitHub リポジトリにパイプラインの YAML コードが含まれていること、および環境用のメタデータと仕様を定義する YAML ファイルが含まれていることを確認します。
手順
結果
完了です。Kubernetes クラスタへのソフトウェア アプリケーションの展開が自動化されました。
例: Kubernetes クラスタにアプリケーションを展開するパイプライン YAML の例
この例で使用されるパイプラインのタイプについては、YAML は次のコードに似ています。
apiVersion: v1 kind: Namespace metadata: name: ${input.GIT_BRANCH_NAME} namespace: ${input.GIT_BRANCH_NAME} --- apiVersion: v1 data: .dockercfg: eyJzeW1waG9ueS10YW5nby1iZXRhMi5qZnJvZy5pbyI6eyJ1c2VybmFtZSI6InRhbmdvLWJldGEyIiwicGFzc3dvcmQiOiJhRGstcmVOLW1UQi1IejciLCJlbWFpbCI6InRhbmdvLWJldGEyQHZtd2FyZS5jb20iLCJhdXRoIjoiZEdGdVoyOHRZbVYwWVRJNllVUnJMWEpsVGkxdFZFSXRTSG8zIn19 kind: Secret metadata: name: jfrog namespace: ${input.GIT_BRANCH_NAME} type: kubernetes.io/dockercfg --- apiVersion: v1 kind: Service metadata: name: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: ports: - port: 80 selector: app: pipelines tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: selector: matchLabels: app: pipelines tier: frontend strategy: type: Recreate template: metadata: labels: app: pipelines tier: frontend spec: containers: - name: pipelines image: cas.jfrog.io/pipelines:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: pipelines imagePullSecrets: - name: jfrog
次のタスク
ソフトウェア アプリケーションを本番の Kubernetes クラスタに展開するには、手順を再度実行して、本番クラスタを選択します。
Automation Pipelines と Jenkins の統合の詳細については、Automation Pipelines を Jenkins と統合する方法を参照してください。