Application Management

Provide developers with an easy and seamless way to deploy cloud-native applications.

Creating Applications

The definition below creates an application on Kubernetes using Shipa and GitHub Actions:

app:
  name: app1
  teamowner: shipa-team
  framework: aks-prod
ComponentTypeDescription
namestringThe name of the application.

Required: Yes
teamownerstringThe name of the team who will own the application.

Required: Yes
frameworkstringThe name of the policy framework that should be used for creating and deploying the application.

Required: Yes

Environment Variables

The definition below creates environment variables to an existing application on Shipa.

app-env:
  app: app1
  envs:
    - name: CR_ENV1
      value: test-1
    - name: CR_ENV3
      value: test-3
  norestart: true
  private: false
ComponentTypeDescription
appstringThe name of the existing application that should should receive the environment variables.

Required: Yes
envsenvsDetails of the environment variables that should be created.
norestartboolIf the application should be restarted when environment variables are added or removed.

If not specified, the application won't be restarted automatically.

Required: No
privateboolIf the values of the environment variables being set should be displayed encrypted.

If not specified, the environment variable values will be displayed in plain text.

Required: No

Application Variables

Multiple environment variables can be set at once when creating the environment variables.

ComponentTypeDescription
namestringThe name of the environment variable to be set.

Required: Yes
valuestringThe value that should be assigned to the environment variable

Required: Yes

Deploying Applications

The definition below deploys an application to Kubernetes using Shipa.

app-deploy:
  app: github-app-v3
  image: docker.io/shipasoftware/bulletinboard:1.0
  port: 8000
  private-image: false
  registry-user: [email protected]
  registry-secret: secret
  steps: 2
  step-weight: 1
  step-interval: 3m
  shipayaml: ./example/shipa.yaml
ComponentTypeDescription
appstringThe name of the application where deployment should happen.

Required: Yes
imagestringThe image URL that should be used by Shipa for deployment.

Required: Yes
portintA specific port that should be assigned to the application for it to be exposed.

If not specified, Shipa will automatically expose port 8888 to the application.

Required: No
private-imageboolIf the image is hosted in a private registry.

If not specified, Shipa will assume the image is hosted in a public registry and will not try to authenticate when pulling the image.

Required: No
registry-userstringThe username of the private registry for authentication, so Shipa can pull the image.

Required: No

Condition: Only when private-image is set to true
registry-secretstringThe password of the private registry for authentication, so Shipa can pull the image.

Required: No

Condition: Only when private-image is set to true
stepsintHow many steps should be used for deploying a new version to the application, when using canary.

If not used, Shipa will deploy the new version and shift 100% of the traffic to the new version.

Required: No
step-weightintThe weight of traffic that should shift to the new version on each step.

If not used, Shipa will deploy the new version and shift 100% of the traffic to the new version.

Required: No
step-intervalintThe wait time in minutes between each step.

If not used, Shipa will deploy the new version and shift 100% of the traffic to the new version.

Required: No
shipayamlfile pathPath to the shipa.yaml file to be added to the application deployment

Required: No

Network Policies

The definition below adds a network policy entry to an application at deployment:

network-policy:
  app: github-app-v3
  ingress:
    policy_mode: allow-custom-rules-only
    custom_rules:
      - id: gateway
        enabled: true
        description: gateway block test
        allowed_frameworks:
          - cinema-gateway
  egress:
    policy_mode: allow-all
  restart_app: false
ComponentTypeDescription
appstringThe application name to which the network policy should be applied to.
ingressIngress definition that will be applied to the application.

if not defined, Shipa will leverage the network policies defined at the policy framework level.

Required: No
policy_modestringThe policy mode that should be applied to your application network policy.

Options are:
- allow-all
- deny-all
- allow-custom-rules-only

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
custom_rulesIf policy_mode is set to allow-custom-rules-only, you can define custom rules for detailed ingress or egress configuration for the application.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
idstringThe name of the custom rule.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
enabledboolIf the custom rule is enabled by default or not for this application.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
descriptionstringThe description of the custom rule being enforced.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
allowed_appsstringThe specific applications that communicate with your application.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
portsPort configuration where your application can accept ingress or egress.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
portintSpecific port (or list of ports) where your application can accept ingress or egress.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
protocolstringThe protocol your application can accept ingress or egress.

Required: No

Condition: Only when policy_mode is set to allow-custom-rules-only
egressEgress definition that will be accepted by your application.

if not defined, Shipa will leverage the network policies defined at the policy framework level.

Required: No
restart_appboolIf the application should be restarted automatically once the network policy is defined.

Network policies are only in effect once the application is restarted.

Required: No

Managing CNAME

app-cname:
  app: gha-app
  cname: app-name.shipa.io
  encrypted: true
ComponentTypeDescription
appstringThe name of the application where the new CNAME should be added.

Required: Yes
cnamestringThe CNAME that should be assigned to the application.

Required: Yes
encryptedboolDefines if the new CNAME should be HTTP or HTTPS.

If encrypted, an HTTPS endpoint will be added to the application and a certificate will be automatically generated using Let's Encrypt.

Required: No

If not defined, an HTTP endpoint will be automatically generated.