Skip to content

Commit

Permalink
add kustomize & CI/CD
Browse files Browse the repository at this point in the history
  • Loading branch information
hknots committed Mar 13, 2024
1 parent a6e8321 commit 5293a1b
Show file tree
Hide file tree
Showing 6 changed files with 213 additions and 0 deletions.
114 changes: 114 additions & 0 deletions .github/workflows/CD.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: CD

on:
workflow_dispatch:

repository_dispatch:
types: [trigger-cd]

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
name: Build and push Docker image
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
outputs:
tags: ${{ steps.meta.outputs.tags }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
uses: docker/metadata-action@v5
id: meta
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=sha-,suffix=,format=short
latest
- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

deploy-to-aks:
name: deploy for ${{ matrix.org }} to ${{ matrix.cluster }}
runs-on: ubuntu-latest
needs: build-and-push
permissions:
contents: read
packages: write
strategy:
matrix:
org:
- fintlabs-no
cluster:
# - aks-alpha-fint-2021-11-18
- aks-beta-fint-2021-11-23
# - aks-api-fint-2022-02-08
# - aks-pwf-fint-2021-10-20

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Get environment
uses: actions/github-script@v6
id: environment
with:
script: return '${{ matrix.cluster }}'.split('-')[1]
result-encoding: string

- name: Get resource group name
uses: actions/github-script@v6
id: resource-group
with:
script: return 'rg-aks-${{ steps.environment.outputs.result }}'
result-encoding: string

- name: Bake manifests with Kustomize
id: bake
uses: azure/k8s-bake@v2
with:
renderEngine: 'kustomize'
kustomizationPath: 'kustomize/overlays/${{ steps.environment.outputs.result }}'

- uses: azure/login@v1
with:
creds: "${{ secrets[format('AKS_{0}_FINT_GITHUB', steps.environment.outputs.result)] }}"

- uses: azure/use-kubelogin@v1.1
with:
kubelogin-version: 'v0.0.26'

- name: Set the target cluster
uses: azure/aks-set-context@v3
with:
cluster-name: '${{ matrix.cluster }}'
resource-group: '${{ steps.resource-group.outputs.result }}'
admin: 'true'
use-kubelogin: 'true'

- name: Deploy
uses: azure/k8s-deploy@v4.9
with:
action: deploy
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: ${{ needs.build-and-push.outputs.tags }}
namespace: ${{ matrix.org }}
33 changes: 33 additions & 0 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: CI

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '18'

- name: Install Dependencies
run: npm install

- name: Build
run: npm run build

- name: Start deployment
if: github.ref == 'refs/heads/main'
uses: peter-evans/repository-dispatch@v2.1.1
with:
token: ${{ secrets.GITHUBACTION_TOKEN }}
repository: ${{ github.repository }}
event-type: trigger-cd
24 changes: 24 additions & 0 deletions kustomize/base/flais.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: fintlabs.no/v1alpha1
kind: Application
metadata:
name: fint-admin-portal-frontend
namespace: fintlabs-no
labels:
app.kubernetes.io/name: fint-admin-portal-frontend
app.kubernetes.io/instance: fint-admin-portal-frontend_fintlabs_no
app.kubernetes.io/version: latest
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: fint-core
fintlabs.no/team: core
fintlabs.no/org-id: fintlabs.no
spec:
port: 8000
imagePullPolicy: Always
orgId: fintlabs.no
image: ghcr.io/fintlabs/fint-admin-portal-frontend:latest
url:
hostname: admin-beta.fintlabs.no
ingress:
enabled: true
middlewares:
- fint-admin-portal-sso
5 changes: 5 additions & 0 deletions kustomize/base/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- flais.yaml
- sso.yaml
15 changes: 15 additions & 0 deletions kustomize/base/sso.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: fintlabs.no/v1alpha1
kind: FLAISSso
metadata:
name: fint-admin-portal-frontend-sso
labels:
app.kubernetes.io/name: fint-admin-portal-frontend-sso
app.kubernetes.io/instance: fint-admin-portal-frontend-sso_fintlabs_no
app.kubernetes.io/version: latest
app.kubernetes.io/component: sso
app.kubernetes.io/part-of: fint-core
fintlabs.no/team: core
fintlabs.no/org-id: fintlabs.no
spec:
hostname: admin-beta.fintlabs.no
loggingLevel: debug
22 changes: 22 additions & 0 deletions kustomize/overlays/beta/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: fintlabs-no
resources:
- ../../base
commonLabels:
app.kubernetes.io/name: fint-admin-portal-frontend
app.kubernetes.io/instance: fint-admin-portal-frontend_fintlabs_no
app.kubernetes.io/version: latest
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: fint-core
fintlabs.no/team: core
fintlabs.no/org-id: fintlabs.no

patches:
- patch: |-
- op: replace
path: "/spec/url/hostname"
value: 'admin-beta.fintlabs.no'
target:
kind: Application
name: fint-admin-portal-frontend

0 comments on commit 5293a1b

Please sign in to comment.