This documentation provides a comprehensive step-by-step guide for deploying the chainguard-dev/apko project in a production environment. The following outlines critical aspects of the deployment process, including commands execution and example code snippets.

Prerequisites

Ensure you satisfy the following conditions before proceeding:

  • Go is installed and properly configured.
  • The necessary shell environment to execute commands.
  • Make tool is installed for handling the build process.

Build the Project

  1. Setup the Environment
    Clone the repository if you haven’t already:

    git clone https://github.com/chainguard-dev/apko.git
    cd apko
    
  2. Run the Build Command
    Build the project using the provided Makefile. The following command compiles the application without using vendor mode:

    make apko
    

    This command generates the binary for the application. The resulting binary can be found in the working directory.

Sign Images

In production settings, it is crucial to ensure the integrity and authenticity of your images. Use the sign-image function to sign your images before deployment.

  1. Sign the Image
    Execute the following command to sign your image:

    make sign-image IMAGE=<your-image>
    

    Replace <your-image> with the actual image name you wish to sign.

Deploy the Application

  1. Local Deployment
    Deploy the application using the built binary. As an example, if your binary is named apko, you can run:

    ./apko
    

    Alternatively, for Kubernetes or containerized environments, use:

    make ko-local
    

    This command operates in a local context but simulates the production environment.

  2. Resolve Dependencies
    For resolving any required images or configurations, run:

    make ko-resolve
    

Create a Snapshot

Creating a snapshot is essential for backup and recovery. To create a snapshot of your current application state:

make snapshot

This command captures the current state, allowing you to restore or review changes made in production.

Install the Application

To install the application as a service in your production environment:

make install

This generally sets up the application in the desired location and registers it with the service manager.

Applying Configuration Changes

To apply any configuration changes that may have been edited, use:

make ko-apply

This command applies the latest changes to the running application service.

Clean Up

After deployment, it may be beneficial to clean unnecessary files and dependencies. Use:

make clean

This helps maintain a tidy project structure and prevent any conflicts in future deployments.

Running Tests

Before finalizing the deployment, it’s essential to test the application to ensure everything functions correctly. Execute:

make test

This command runs all the unit tests associated with the repository.

Linting the Code

To maintain code quality, run linting tools provided in the Makefile:

make golangci-lint

This command helps catch potential errors and maintain code standards prior to deployment.

Formatting Code

Make sure your Go code is properly formatted by executing:

make fmt

This applies standard formatting across all Go files.

Conclusion

After following the steps outlined, your application should be successfully deployed in a production environment. Utilize the commands judiciously and ensure adherence to best practices while maintaining your application.

Source: Makefile functions provided in the chainguard-dev/apko documentation.