Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitea0843b

Browse files
Merge pull request#289 from codefresh-io/arm-builds
added arm builds
2 parents49eb090 +65e481d commitea0843b

File tree

1 file changed

+144
-0
lines changed

1 file changed

+144
-0
lines changed

‎_docs/administration/codefresh-runner.md‎

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1601,6 +1601,150 @@ Override environment variables for `dind-lv-monitor` daemonset if necessary:
16011601
-`KB_USAGE_THRESHOLD` - default 80 (percentage)
16021602
-`INODE_USAGE_THRESHOLD` - default 80
16031603

1604+
##ARM Builds
1605+
1606+
With hybrid runner it's possibe to run native ARM64v8 builds.
1607+
1608+
>**Note:** Running both amd64 and arm64 images within the same pipeline - it is not possible. We do not support multi-architecture builds. One runtime configuration - one architecture. Considering one pipeline can map only to one runtime, it is possible to run either amd64 or arm64, but not both within a one pipeline
1609+
1610+
The following scenario is an example of how to set up ARM Runner on existing EKS cluster:
1611+
#####Step 1 - Preparing nodes
1612+
Create new ARM nodegroup:
1613+
1614+
```shell
1615+
eksctl utils update-coredns --cluster<cluster-name>
1616+
eksctl utils update-kube-proxy --cluster<cluster-name> --approve
1617+
eksctl utils update-aws-node --cluster<cluster-name> --approve
1618+
1619+
eksctl create nodegroup \
1620+
--cluster<cluster-name> \
1621+
--region<region> \
1622+
--name<arm-ng> \
1623+
--node-type<a1.2xlarge> \
1624+
--nodes<3>\
1625+
--nodes-min<2>\
1626+
--nodes-max<4>\
1627+
--managed
1628+
```
1629+
1630+
Check nodes status:
1631+
1632+
```shell
1633+
kubectl get nodes -l kubernetes.io/arch=arm64
1634+
```
1635+
1636+
Also it's recommeded to label and taint the required ARM nodes:
1637+
1638+
```shell
1639+
kubectl taint nodes<node> arch=aarch64:NoSchedule
1640+
kubectl label nodes<node> arch=arm
1641+
```
1642+
1643+
#####Step 2 - Runner installation
1644+
Use[values.yaml](https://github.com/codefresh-io/venona/blob/release-1.0/venonactl/example/values-example.yaml) to inject`tolerations`,`kube-node-selector`,`build-node-selector` into the Runtime Environment spec.
1645+
1646+
`values-arm.yaml`
1647+
1648+
{% highlight yaml %}
1649+
{% raw %}
1650+
...
1651+
Namespace: codefresh
1652+
1653+
###NodeSelector --kube-node-selector: controls runner and dind-volume-provisioner pods
1654+
NodeSelector: arch=arm
1655+
1656+
###Tolerations --tolerations: controls runner, dind-volume-provisioner and dind-lv-monitor
1657+
Tolerations:
1658+
- key: arch
1659+
operator: Equal
1660+
value: aarch64
1661+
effect: NoSchedule
1662+
...
1663+
########################################################
1664+
###Codefresh Runtime ###
1665+
######
1666+
###configure engine and dind pods ###
1667+
########################################################
1668+
Runtime:
1669+
###NodeSelector --build-node-selector: controls engine and dind pods
1670+
NodeSelector:
1671+
arch: arm
1672+
###Tolerations for engine and dind pods
1673+
tolerations:
1674+
- key: arch
1675+
operator: Equal
1676+
value: aarch64
1677+
effect: NoSchedule
1678+
...
1679+
{% endraw %}
1680+
{% endhighlight %}
1681+
1682+
Install the Runner with:
1683+
```shell
1684+
codefresh runner init --values values-arm.yaml --exec-demo-pipelinefalse --skip-cluster-integrationtrue
1685+
```
1686+
1687+
#####Step 3 - Post-installation fixes
1688+
1689+
Change`engine` image version in Runtime Environment specification:
1690+
1691+
```shell
1692+
# get the latest engine ARM64 tag
1693+
curl -X GET"https://quay.io/api/v1/repository/codefresh/engine/tag/?limit=100" --silent| jq -r'.tags[].name'| grep"^1.*arm64$"
1694+
1.136.1-arm64
1695+
```
1696+
1697+
```shell
1698+
# get runtime spec
1699+
codefresh get re$RUNTIME_NAME -o yaml> runtime.yaml
1700+
```
1701+
1702+
under`runtimeScheduler.image` change image tag:
1703+
{% highlight yaml %}
1704+
{% raw %}
1705+
runtimeScheduler:
1706+
image: 'quay.io/codefresh/engine:1.136.1-arm64'
1707+
{% endraw %}
1708+
{% endhighlight %}
1709+
1710+
1711+
```shell
1712+
# patch runtime spec
1713+
codefresh patch re -f runtime.yaml
1714+
```
1715+
1716+
For`local` storage patch`dind-lv-monitor-runner` DaemonSet and add`nodeSelector`:
1717+
1718+
```shell
1719+
kubectl edit ds dind-lv-monitor-runner
1720+
```
1721+
{% highlight yaml %}
1722+
{% raw %}
1723+
spec:
1724+
nodeSelector:
1725+
arch: arm
1726+
{% endraw %}
1727+
{% endhighlight %}
1728+
1729+
#####Step 4 - Run Demo pipeline
1730+
1731+
Run a modified version of the*CF_Runner_Demo* pipeline:
1732+
{% highlight yaml %}
1733+
{% raw %}
1734+
version: '1.0'
1735+
stages:
1736+
- test
1737+
steps:
1738+
test:
1739+
stage: test
1740+
title: test
1741+
image: 'arm64v8/alpine'
1742+
commands:
1743+
- echo hello Codefresh Runner!
1744+
{% endraw %}
1745+
{% endhighlight %}
1746+
1747+
16041748
##Troubleshooting
16051749

16061750
-**Problem:** You receive an error regarding the provided token or CLI context used for this installation might not have enough permissions.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp