Skip to content

Commit 01247c4

Browse files
authored
Added multi-arch support for 'amd64' and 'arm' (#6)
1 parent c80d32c commit 01247c4

File tree

5 files changed

+43
-4
lines changed

5 files changed

+43
-4
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim-arm32v7 AS base
2+
WORKDIR /app
3+
EXPOSE 80
4+
5+
FROM base AS final
6+
WORKDIR /app
7+
COPY /app .
8+
ENTRYPOINT ["dotnet", "ES.Kubernetes.Reflector.dll"]

ES.Kubernetes.Reflector/ES.Kubernetes.Reflector.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.2</TargetFramework>
55
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
6+
<RuntimeIdentifiers>linux-x64;linux-musl-x64;linux-arm</RuntimeIdentifiers>
67
</PropertyGroup>
78

89
<ItemGroup>

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ Reflector is a Kubernetes addon designed to monitor changes to resources (secret
1010
[![Docker Stars](https://img.shields.io/docker/stars/emberstack/es.kubernetes.reflector.svg?style=flat-square)](https://hub.docker.com/r/remberstack/es.kubernetes.reflector)
1111
[![license](https://img.shields.io/github/license/emberstack/ES.Kubernetes.Reflector.svg?style=flat-square)](LICENSE)
1212

13+
14+
> Supports both `amd64` and `arm`
15+
1316
### Extensions
1417
Reflector includes a cert-manager extension used to automatically annotate created secrets and allow reflection. See the `cert-manager` extension usage below for more details.
1518

azure-pipelines.yaml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ pool:
1010

1111
variables:
1212
buildConfiguration: 'Release'
13+
DOCKER_CLI_EXPERIMENTAL: 'enabled'
1314

1415
steps:
1516
- script: |
1617
mkdir -p deploy/helm
1718
mkdir -p deploy/manual
18-
workingDirectory: ' $(Build.ArtifactStagingDirectory)'
19+
workingDirectory: '$(Build.ArtifactStagingDirectory)'
1920
displayName: 'Create Artifacts directories'
20-
21+
2122
- task: HelmInstaller@0
2223
displayName: 'Install Helm'
2324
inputs:
@@ -42,13 +43,37 @@ steps:
4243
displayName: 'helm template'
4344

4445
- task: Docker@2
45-
displayName: 'Build and push image'
46+
displayName: 'Build and push amd64 image'
4647
inputs:
4748
containerRegistry: 'Emberstack Docker Hub'
4849
repository: emberstack/es.kubernetes.reflector
4950
Dockerfile: ES.Kubernetes.Reflector/Dockerfile
5051
buildContext: .
51-
tags: 'build-$(Build.BuildNumber)'
52+
tags: 'build-$(Build.BuildNumber)-amd64'
53+
54+
- script: 'docker run --entrypoint "/bin/cp" --rm -v $(System.DefaultWorkingDirectory):/filecopy emberstack/es.kubernetes.reflector:build-$(Build.BuildNumber)-amd64 -r /app /filecopy'
55+
displayName: 'Extract built app'
56+
57+
- task: Docker@2
58+
displayName: 'Build and push arm32v7 image'
59+
inputs:
60+
containerRegistry: 'Emberstack Docker Hub'
61+
repository: emberstack/es.kubernetes.reflector
62+
Dockerfile: ES.Kubernetes.Reflector/Dockerfile_arm32v7
63+
buildContext: .
64+
tags: 'build-$(Build.BuildNumber)-arm32v7'
65+
66+
- task: Docker@2
67+
displayName: 'Docker Hub login'
68+
inputs:
69+
containerRegistry: 'Emberstack Docker Hub'
70+
command: login
71+
72+
- script: |
73+
docker manifest create emberstack/es.kubernetes.reflector:build-$(Build.BuildNumber) emberstack/es.kubernetes.reflector:build-$(Build.BuildNumber)-amd64 emberstack/es.kubernetes.reflector:build-$(Build.BuildNumber)-arm32v7
74+
docker manifest push emberstack/es.kubernetes.reflector:build-$(Build.BuildNumber)
75+
displayName: 'Create and push multi-arch manifest'
76+
5277

5378
- task: PublishBuildArtifacts@1
5479
displayName: 'Publish Artifact: deploy-chart'

helm/reflector/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Introduction
22
[Reflector](https://github.com/EmberStack/ES.Kubernetes.Reflector) is a Kubernetes addon designed monitor changes to resources (secrets and configmaps) and reflect changes to mirror resources in the same or other namespaces.
33

4+
> Supports both `amd64` and `arm`
5+
46
### Extensions
57
Reflector includes a `cert-manager` extension used to automatically annotate created secrets and allow reflection.
68

0 commit comments

Comments
 (0)