Skip to content

Commit d09fdf0

Browse files
authored
ci: add iptables block signed image (#4049)
* add iptables block to signed image * fix syntax * mariner version
1 parent d66b2f9 commit d09fdf0

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

.pipelines/build/dockerfiles/azure-iptables-monitor.Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,6 @@ ARG ARTIFACT_DIR
1414
COPY --from=iptables /usr/sbin/*tables* /usr/sbin/
1515
COPY --from=iptables /usr/lib /usr/lib
1616
COPY ${ARTIFACT_DIR}/bin/azure-iptables-monitor /azure-iptables-monitor
17+
COPY ${ARTIFACT_DIR}/bin/azure-block-iptables /azure-block-iptables
1718

1819
ENTRYPOINT ["/azure-iptables-monitor"]

.pipelines/build/ob-prepare.steps.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ steps:
6666
echo "##vso[task.setvariable variable=azureIptablesMonitorVersion;isOutput=true]$AZUREIPTABLESMONITORVERSION"
6767
echo "azureIptablesMonitorVersion: $AZUREIPTABLESMONITORVERSION"
6868
69+
AZUREBLOCKIPTABLESVERSION=$(make azure-block-iptables-version)
70+
echo "##vso[task.setvariable variable=azureBlockIptablesVersion;isOutput=true]$AZUREBLOCKIPTABLESVERSION"
71+
echo "azureBlockIptablesVersion: $AZUREBLOCKIPTABLESVERSION"
72+
6973
CNIVERSION=$(make cni-version)
7074
echo "##vso[task.setvariable variable=cniVersion;isOutput=true]$CNIVERSION"
7175
echo "cniVersion: $CNIVERSION"

.pipelines/build/scripts/azure-iptables-monitor.sh

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ set -eux
55
FILE_EXT=''
66

77
export CGO_ENABLED=0
8+
export C_INCLUDE_PATH=/usr/include/bpf
89

910
mkdir -p "$OUT_DIR"/bin
1011
mkdir -p "$OUT_DIR"/files
@@ -16,3 +17,57 @@ pushd "$REPO_ROOT"/azure-iptables-monitor
1617
-gcflags="-dwarflocationlists=true" \
1718
.
1819
popd
20+
21+
echo "Building azure-block-iptables binary..."
22+
23+
# Debian/Ubuntu
24+
if [[ -f /etc/debian_version ]]; then
25+
26+
apt-get update -y
27+
apt-get install -y --no-install-recommends llvm clang linux-libc-dev linux-headers-generic libbpf-dev libc6-dev nftables iproute2
28+
29+
if [[ $ARCH =~ amd64 ]]; then
30+
apt-get install -y --no-install-recommends gcc-multilib
31+
ARCH_GNU=x86_64-linux-gnu
32+
elif [[ $ARCH =~ arm64 ]]; then
33+
apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu
34+
ARCH_GNU=aarch64-linux-gnu
35+
fi
36+
37+
# Create symlinks for architecture-specific includes
38+
for dir in /usr/include/"$ARCH_GNU"/*; do
39+
if [[ -d "$dir" || -f "$dir" ]]; then
40+
ln -sfn "$dir" /usr/include/$(basename "$dir")
41+
fi
42+
done
43+
44+
# Mariner
45+
else
46+
tdnf install -y llvm clang libbpf-devel nftables gcc binutils iproute glibc
47+
48+
if [[ $ARCH =~ amd64 ]]; then
49+
ARCH_GNU=x86_64-linux-gnu
50+
elif [[ $ARCH =~ arm64 ]]; then
51+
ARCH_GNU=aarch64-linux-gnu
52+
fi
53+
54+
# Create symlinks for architecture-specific includes
55+
for dir in /usr/include/"$ARCH_GNU"/*; do
56+
if [[ -d "$dir" || -f "$dir" ]]; then
57+
ln -sfn "$dir" /usr/include/$(basename "$dir")
58+
fi
59+
done
60+
fi
61+
62+
pushd "$REPO_ROOT"
63+
# Generate BPF objects
64+
GOOS="$OS" CGO_ENABLED=0 go generate ./bpf-prog/azure-block-iptables/...
65+
66+
# Build the binary
67+
GOOS="$OS" CGO_ENABLED=0 go build -a \
68+
-o "$OUT_DIR"/bin/azure-block-iptables"$FILE_EXT" \
69+
-trimpath \
70+
-ldflags "-s -w -X main.version=$AZURE_BLOCK_IPTABLES_VERSION" \
71+
-gcflags="-dwarflocationlists=true" \
72+
./bpf-prog/azure-block-iptables/cmd/azure-block-iptables
73+
popd

.pipelines/run-pipeline.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ stages:
3939
AZURE_IPAM_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIpamVersion'] ]
4040
AZURE_IP_MASQ_MERGER_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIpMasqMergerVersion'] ]
4141
AZURE_IPTABLES_MONITOR_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIptablesMonitorVersion'] ]
42+
AZURE_BLOCK_IPTABLES_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureBlockIptablesVersion'] ]
4243
CNI_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.cniVersion'] ]
4344
CNS_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.cnsVersion'] ]
4445
IPV6_HP_BPF_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.ipv6HpBpfVersion'] ]
@@ -204,6 +205,7 @@ stages:
204205
AZURE_IPAM_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIpamVersion'] ]
205206
AZURE_IP_MASQ_MERGER_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIpMasqMergerVersion'] ]
206207
AZURE_IPTABLES_MONITOR_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureIptablesMonitorVersion'] ]
208+
AZURE_BLOCK_IPTABLES_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.azureBlockIptablesVersion'] ]
207209
CNI_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.cniVersion'] ]
208210
CNS_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.cnsVersion'] ]
209211
IPV6_HP_BPF_VERSION: $[ stageDependencies.setup.env.outputs['EnvironmentalVariables.ipv6HpBpfVersion'] ]

0 commit comments

Comments
 (0)