gopkg charm

gopkg-k8s is a Juju charm that operates the gopkg.in versioned Go import service on Kubernetes.

The service ships as a rock, a container image built with Rockcraft. Juju deploys the charm, and the charm runs that image, configures the public hostname the service advertises, and connects it to ingress. Like any Juju charm, it supports repeatable deployment, configuration, integration, and lifecycle management, on Kubernetes platforms from MicroK8s for local development to Charmed Kubernetes and public-cloud Kubernetes offerings.

gopkg.in gives Go programs stable, major-version-specific import paths: gopkg.in/yaml.v2 resolves to the newest v2 tag of the go-yaml/yaml repository. Canonical maintains this charm to run the public gopkg.in service. The service writes the configured hostname into its go-import metadata, so a deployment serves imports of that hostname, not of gopkg.in: code that already imports gopkg.in/... keeps using the public service. Operators use their own copy to mirror gopkg.in inside a network that cannot reach it, or to offer versioned import paths for GitHub repositories under their own domain.

In this documentation

Tutorial

Start here: deploy and verify gopkg-k8s on Kubernetes from a fresh environment.

Tutorial
How-to guides

Step-by-step guides for configuring ingress and the hostname, integrating with observability, and troubleshooting.

How-to guides
Reference

Technical information: configuration options, integration endpoints, and supported platforms and prerequisites.

Reference
Explanation

Discussion and clarification of how gopkg.in resolves imports and how ingress reaches the service.

Explanation

How this documentation is organized

This documentation uses the Diátaxis documentation structure.

  • The Tutorial takes you step-by-step through a complete deployment of gopkg-k8s.

  • How-to guides cover configuring the charm, monitoring it, and troubleshooting it.

  • Reference provides the configuration options, integration endpoints, and supported platforms.

  • Explanation includes topic overviews, background and context, and detailed discussion.

  • Release notes hold the release history.

Contributing to this documentation

Documentation is an important part of this project, and it takes the same open source approach as the code. Community contributions, suggestions, and constructive feedback are welcome; see Contribute for how to get started. If a topic you need is missing, please file a bug.

Project and community

gopkg-k8s is a member of the Ubuntu family. It is an open source project that warmly welcomes community projects, contributions, suggestions, fixes, and constructive feedback.

Governance and policies

Get involved

Thinking about using gopkg-k8s for your next project? Get in touch!