In order to build EKS Distro, you will need to make sure several things are installed and configured.
Region Environment Variables
The build uses the new convention setting region with the AWS_REGION environment
variable. Some older utilities such as v1 of the AWS CLI use the environment
variable AWS_DEFAULT_REGION. To be safe, set and export both to the same value:
export AWS_REGION=us-west-2
export AWS_DEFAULT_REGION="${AWS_REGION}"Go Proxy Settings
If you are using an HTTP proxy like you might if you are on a corporate VPN,
you may need to set and export GOPROXY:
export GOPROXY=directAmazon ECR
If you are building container images and uploading or downloading from ECR, you
will need to configure buildctl to get registry credentials. While you could
periodically use the AWS CLI and run aws ecr
get-loginto populate credentials into your ~/.docker/config.json, it is much easier to
use the ECR Credential
Helper. To get up and
running easily, you can use the custom Docker config file provided in this repo.
After installing the ECR credential helper, make sure you have AWS credentials
configured in one the usual ways, and set the Docker config to the supplied
example:
cat ./development/config.json
{ "credsStore": "ecr-login"
}
# enables ecr push/pull
export DOCKER_CONFIG=$(pwd)/developmentTo create all the required ECR repositories for EKS Distro, run the/development/ecr/ecr-command.sh create-all-private-repositories script.
Qemu
In order to build and run multi-architecture containers, you will need to
install Qemu. On AmazonLinux2, this can be
installed with the qemu-user-static package, and then updating your host'sbinfmt_misc configuration.
GNU Tar
If you are on a Mac, you will need to brew install coreutils to get GNU
tar.
Build Options
The default target for make files uses buildkit to build containers. The
alternative to this is building and pushing containers with Docker.
buildkitd
The default target for make files builds withbuildkit. You can install the latest buildkit client from the GitHub releases page. To run a buildkit server locally, you can use docker-compose.
docker-compose -f development/buildkit-compose.yaml up -d
docker-compose -f development/buildkit-compose.yaml logs buildkitd
export BUILDKIT_HOST="tcp://127.0.0.1:1234"
buildctl debug workersNote: If you notice that RUN commands in image builds that require network
access are failing, your network may be blocking DNS lookups to Google DNS IPs
(8.8.8.8 and 8.8.4.4). If you see the log message from the buildkit server:
"No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4]Try adding your local nameservers and search domains to thedevelopment/buildkitd.toml file and the dns and dns_search, and volumesections of the development/buildkit-compose.yaml, and run docker-compose up
-d. If you are on macOS, you can run the following command to find your
nameservers and search domains.
scutil --dnsBuild with Docker
If you don't want to use buildkit, you will need
to install Docker to build containers.
Use the docker target for make files.