Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2023-01-18. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

Azure Kubernetes Service へのデプロイ

この記事では、次の� �目が扱われます。

継続的デプロイ (CD) ワークフローの一部として、プロジェクトを Azure Kubernetes Service (AKS) にデプロイできます。

注: GitHub ホステッド ランナーは、現在 GitHub Enterprise Server でサポートされていません。 GitHub public roadmap で、今後の計画的なサポートの詳細を確認できます。

はじめに

このガイドでは、GitHub Actions を使用して、プロジェクトを作成し、Azure Kubernetes Service にデプロイする方法について説明します。

前提条件

GitHub Actionsワークフローを作成する前に、まず以下のセットアップのステップを完了しておかなければなりません。

  1. ターゲット AKS クラスターと Azure Container Registry (ACR) を作成します。 詳細については、Azure ドキュメントの「クイック スタート:Azure portal を使用して AKS クラスターをデプロイする - Azure Kubernetes Service」、およびポータルでのレジストリの作成に関するクイックスタート (Azure Container Registry) を参照してく� さい。

  2. Azure 資� �情� �を� �納するための AZURE_CREDENTIALS という名前のシークレットを作成します。 この情� �の検索方法とシークレットの構成方法に関する詳細については、Azure/login アクションのドキュメントを参照してく� さい。

ワークフローの作成

必要な環境を整えたら、ワークフローの作成に進むことができます。

次のワークフローの例では、コードがリポジトリにプッシュされる� �合に、プロジェクトを作成し、Azure Kubernetes Service にデプロイする方法のデモを行います。

ワークフロー env キーで、次の値を変更します。

  • AZURE_CONTAINER_REGISTRY をコンテナー レジストリの名前に
  • PROJECT_NAME をプロジェクトの名前に
  • RESOURCE_GROUP を AKS クラスターを含むリソース グループに
  • CLUSTER_NAME を AKS クラスターの名前に

このワークフローでは、azure/k8s-bake アクションに、helm レンダリング エンジンを使用します。 helm レンダリング エンジンを使用する� �合は、CHART_PATH の値を helm ファイルへのパスに変更します。 CHART_OVERRIDE_PATH をオーバーライド ファイル パスの配列に変更します。 別のレンダリング エンジンを使用する� �合は、azure/k8s-bake アクションに送信される入力パラメーターを更新します。

YAML
# このワークフローはGitHubによって認定されていないアクションを使用します。
# それらはサードパーティによって提供され、
# 別個の利用規約、プライバシーポリシー、
# ドキュメントを参照してく� さい。

# GitHub では、コミット SHA にアクションをピン留めすることが推奨されます。
# 新しいバージョンを取得するには、SHA を更新する必要があります。
# タグまたはブランチを参照することもできますが、アクションは警告なしに変更される可能性があります。

name: Build and deploy to Azure Kubernetes Service

env:
  AZURE_CONTAINER_REGISTRY: MY_REGISTRY_NAME # set this to the name of your container registry
  PROJECT_NAME: MY_PROJECT_NAME              # set this to your project's name
  RESOURCE_GROUP: MY_RESOURCE_GROUP          # set this to the resource group containing your AKS cluster
  CLUSTER_NAME: MY_CLUSTER_NAME              # set this to the name of your AKS cluster
  REGISTRY_URL: MY_REGISTRY_URL              # set this to the URL of your registry
  # If you bake using helm:
  CHART_PATH: MY_HELM_FILE                   # set this to the path to your helm file
  CHART_OVERRIDE_PATH: MY_OVERRIDE_FILES     # set this to an array of override file paths

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Azure Login
      uses: azure/login@89d153571fe9a34ed70fcf9f1d95ab8debea7a73
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Build image on ACR
      uses: azure/CLI@7378ce2ca3c38b4b063feb7a4cbe384fef978055
      with:
        azcliversion: 2.29.1
        inlineScript: |
          az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
          az acr build -t  -t ${{ env.REGISTRY_URL }}/${{ env.PROJECT_NAME }}:${{ github.sha }}
    
    - name: Gets K8s context
      uses: azure/aks-set-context@4e5aec273183a197b181314721843e047123d9fa
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
          resource-group: ${{ env.RESOURCE_GROUP }}
          cluster-name: ${{ env.CLUSTER_NAME }}
      id: login

    - name: Configure deployment
      uses: azure/k8s-bake@773b6144a3732e3bf4c78b146a0bb9617b2e016b
      with:
        renderEngine: 'helm'
        helmChart: ${{ env.CHART_PATH }}
        overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
        overrides: |     
          replicas:2
        helm-version: 'latest' 
      id: bake

    - name: Deploys application
    - uses: Azure/k8s-deploy@c8fbd76ededaad2799c054a9fd5d0fa5d4e9aee4
      with:
        manifests: ${{ steps.bake.outputs.manifestsBundle }}
        images: |
          ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
        imagepullsecrets: |
          ${{ env.PROJECT_NAME }}

その他のリソース

以下のリソースも役に立つでしょう。