Deploying a Service¶
In order to run k9 deploy service
users must complete some set up beforehand.
Set up a helm repository with your application’s helm chart.
Edit app-config.yml, k9-helm-values.yml, and helm-values.yml in the application directory. Edit defaults.yml in the
k9/apps
(Optional) Create AWS secrets for the deployments.
Run
k9 deploy service
Helm Setup¶
k9 uses helm for deployments and must be able to run helm repo add
and helm install
. Users must manually create a helm repository, or add their chart to an existing repository.
File Editing¶
app-config.yml¶
See app-config.yml instructions here: app-config.yml
k9-helm-values.yml¶
repoUrl:
repoName:
chartName:
These values are simply what you would use when installing your helm chart manually.
helm repo add repoName repoUrl
helm install repoName/chartName
defaults.yml¶
jenkins:
jenkinsUrl:
clusterName:
clusters:
- clusterName: np
useBlueGreen: False
- clusterName: prd
useBlueGreen: True
This file is used by all applications to set up jobs on jenkins. k9 create cicd
will edit the jenkins section automatically. The clusters section may be updated to change which clusters should use blue-green deployment for the service deployments.
helm-values.yml¶
Fill this file with any information your helm chart supports in the values.yml file. The contents of this file will be copied exactly into all the generated yaml files used when running helm install.
Create AWS Secrets¶
As part of k9 deploy service
AWS secrets will be read and turned into kubernetes secrets. Users may define a secret in AWS named {env}-{appName}-secret
or {env}-{appName}-{customer}-secret
if the deployment is for a particular customer. k9 will read or create an empty AWS secret for each deployment instance, and then place the secret values into a kubernetes secret in each namespace.
Deploy Service¶
k9 deploy service
Run this command from your application directory. k9 will create a yaml file in the values/
directory for each deployment defined in app-config.yml. This file will be the combination of helm-values.yml and a k9
section full of helm information taken from k9-helm-values.yml. Extra values will be automatically added as well, to support blue-green deployment. Inside of each file there will be a k9 section filled in.
# empty example
k9:
chartName:
repoName:
repoUrl:
namespace:
releaseName:
The values here will be used to deploy the application to the correct namespace.
In addition to deploying your app, k9 deploy service
will
create an ECR in AWS
turn AWS application secrets from app-config.yml into kubernetes secrets in each deployment namespace
create a multibranch pipeline in jenkins linked to your git repository
prd Flag¶
This command can be run with a prd
flag when the production environment exists in a different account than the non-production deployment.
In order to run k9 deploy service -prd
users must complete some extra steps.
Create a prd-app-config.yml file by running
k9 create prd-configs
Edit prd-app-config.yml in the application directory.
Edit ecr-sync-values.yml with the non-production account information.
Run
k9 deploy service -prd