Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LOVE-1113 Using composability on basic AKS/EKS/GKE cluster blueprints #94

Merged
merged 17 commits into from Jul 17, 2019

Conversation

sffortytwo
Copy link
Contributor

LOVE-1113 Updating basic aws/azure/gcp cluster to use composability

LOVE-1113 Updated gcp/basic-gke-cluster to use composability

LOVE-1113 Added aws/basic-eks-cluster

LOVE-1113 Changed 'kubernetes-namespace' to a parameter

Definition of Done

This is the definition of done for (new and modified) blueprints to be accepted into the central XebiaLabs blueprints repository.

Value

This section describes how to determine whether a blueprint has enough value to be included in the central XebiaLabs blueprints repository.

  • The blueprint applies to a focused use case.
  • The blueprint uses at least one XebiaLabs product.
  • The blueprint depends on as few other products as possible. N.B.: This is part of the definition of done to keep the blueprint focused and applicable to as many users as possible. A blueprint that depends on one specific CI tool and one specific Java EE application server and one specific ticketing system can only be used by users that have all three products.
  • The blueprint can be used with content supplied by the user but also includes demo content. A blueprint that does not work with content supplied by the user is a demo or a showcase and does not help the user with their own work.

Technical

This section describes how to determine whether the blueprint has the right technical quality to be included in the central XebiaLabs blueprints repository.

  • The branch from which the PR is created is up-to-date with the development branch.
  • The blueprint contains a README.md file at the root of the blueprint folder that describes the blueprint, using the README template in the .github folder of this repository.
  • The blueprint generates a xebialabs/USAGE.md file which, at a minimum, explains how to use the blueprint after it is generated (like adding any missing steps, creating accounts, setting up Docker containers, applying the YAML using xl CLI, running release. etc.). N.B.: Do not use this document to describe how to instantiate the blueprint. It will only be available to the user after the blueprint has been instantiated.
  • If the blueprint depends on external products that can be started as a Docker container, the blueprint generates a docker/docker-compose.yml file so that it can be tested without having to manually install those products. Do not use this Docker Compose file to start XL Deploy, XL Release, Docker or Kubernetes.
  • The blueprint does not contain sensitive information such passwords, tokens, credentials or licenses.
  • The blueprint uses secret: true in the blueprint.yaml parameter definition for question that ask for sensitive information.
  • The blueprint does not contain the files xebialabs/.gitignore, xebialabs/values.xlvals and xebialabs/secrets.xlvals and does not refer to them from the files section of the blueprint.yaml file. These files will be generated when the blueprint is instantiated. To generate the xebialabs/values.xlvals file, use the saveInXlVals: true directive in the parameters section of the blueprint. To generate the xebialabs/secrets.xlvals file, use the secret: true directive .
  • The blueprint does not define parameters for trivial things like phase names, task names, folder names etc. Ask questions that add value and be opinionated where possible. For example, ask for a project name and derive folder names, task names etc from that.
  • Folder and file names must use kebab-case, for example: aws/sample-app-demo, xld-environment.yaml

Review and testing

This section describes how to determine whether the blueprint has been reviewed and tested well enough to be included in the central XebiaLabs blueprints repository.

  • Unit test is added in a __test__ folder for each blueprint. Refer the CONTRIBUTING.md file at the root of of this repository for more details.
  • The Travis CI for the PR is green
  • The blueprint has been reviewed by someone else in the team.
  • Both README and USAGE files have been reviewed by a technical writer and a product marketing manager.
  • The blueprint has been manually tested with the docker/docker-compose.yml that is generated as part of it.
  • The blueprint works on Linux, Mac and Windows.

LOVE-1113 Updating basic aws/azure/gcp cluster to use composability

LOVE-1113 Updated gcp/basic-gke-cluster to use composability

LOVE-1113 Added aws/basic-eks-cluster

LOVE-1113 Changed 'kubernetes-namespace' to a parameter
value: ap-southeast-1
- label: Asia Pacific (Sydney)
value: ap-southeast-2
- !expr "awsRegions('ecs')"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can use ECS here as EKS regions are not the same as ECS AFAIK

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have manually added the 13 regions that support EKS (https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

- name: Prefix
type: Input
prompt: "Specify the application prefix (use the default if you're not sure):"
default: aws-eks-
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we expect - at end of prefix, cant we just append that when using it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing Prefix

type: Confirm
prompt: "Do you want to provision Amazon Elastic File System?"
default: false
- name: Prefix
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this prefix used?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a throwback from Vincent-days. I think it can be removed

type: Select
prompt: "Select the AWS region:"
options:
- !expr "awsRegions('ecs')"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can use 'ecs' regions here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have manually added the 13 regions that support EKS (https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

aws/basic-eks-cluster/blueprint.yaml Show resolved Hide resolved
kubernetes/multicloud-pipeline/blueprint.yaml Show resolved Hide resolved
- GCP GKE
- Azure AKS

- name: ClusterName
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we just let the composed blueprints ask for this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The multicloud-pipeline blueprint needs this value in order to call the XLD resources from XLR

- name: Prefix
value: azure-aks-
type: Input
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this needs to be prompted, can't it be hidden?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removing Prefix

@@ -21,14 +21,19 @@ spec:
prompt: "What is the version of the application that you want to deploy?"
default: latest

- name: KubernetesResourcesFile
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are not letting the user choose the yaml files, then what is the point of letting them choose application name and version here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added it back so users can provide their own file again

kubernetes/multicloud-pipeline/blueprint.yaml Show resolved Hide resolved
@deepu105 deepu105 merged commit 6c7fed4 into master Jul 17, 2019
@deepu105 deepu105 deleted the LOVE-1113 branch July 17, 2019 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants