Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Terms we've used so far:
- **Front page** *(noun):*
- **Application team** *(noun):*
- **Instance** *(noun):*
- **Prototype** *(noun):*

Naming
------
Expand Down
22 changes: 12 additions & 10 deletions features/adjusting-hosting-for-an-application.feature
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@ Feature: Adjusting hosting for an application
As an infrastructure-oriented developer
I want to modify the hosting details of my application

Scenario: Upgrading services my application instance relies on
Scenario: Modifying my application instance
Given an instance of my application is already running
And I am a developer authorized to modify the application instance's infrastructure
When I add a new persistent volume mount
Then my application is redeployed
And my new volume mount is in place

Scenario: Adding internal services to my application instance

Scenario: Removing internal services from my application instance

Scenario: Modifying the configuration of internal services in my application instance

Scenario: Viewing how internal services relate to one another within my application instance

Scenario: Modifying the replica count for my application instance
Scenario:
Given several instances of my application are running
And I am a developer authorized to view details about my application
When I check the configurations for my application's instances
Then I can see individual configurations
And I can see how any configurations differ from any other
12 changes: 12 additions & 0 deletions features/authentication.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Feature: authentication
We need to implement our own auth system, likely based on OAuth, that
manages tokens and ideally gives the option to download TTL'd
.kube/config files with the right tokens in place.

For developers looking only to deploy new releases, we should provide
enough indirect interfaces that we likely won't need to worry about
kubernetes's RBAC model (I'm talking here essentially about our own
application/service that does nothing other than deploy new releases).

For anyone needing direct access to kubernetes however, we'll need to
generate and manage tokens that kubernetes can understand and verify.
21 changes: 0 additions & 21 deletions features/deploying-an-application.feature
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ Feature: Deploying an application

Background:
Given hosting for my application is provisioned
(And there's an available namespace and user accounts are in place)
(And DNS and SSL are taken care of)
And I am a developer authorized to deploy this application
And I have a release of my application

Expand All @@ -33,22 +31,3 @@ Feature: Deploying an application
Given a deployment is active
When I check my application status
Then I can see the deployment's current state

Scenario: Deploying an application for the first time
Given no release of my application has been launched
And I have deployed my release
When my release successfully launches
Then I can access my release

Scenario: Upgrading to a new release
Given I can access an outdated release of my application
And I have deployed my release
When my release successfully launches
Then I can access my release
And I cannot access the outdated release

Scenario: Accessing a deployed web application
Given I have deployed my release
And my release successfully launches
When I access my application's front page via the web
Then I see its front page content
14 changes: 14 additions & 0 deletions features/dns-and-ssl.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Feature: provisioning DNS and SSL
I'm not sure that this is a feature that needs documenting here. At
least, not until we have more experience with Kubernetes Ingresses,
what they let us do, and how easy it is to do it.

In the end, most (if not all) public-facing services should be
accessed through an ingress. We can have as many ingresses as we want,
but each needs its own unique IP address, so I don't see why we'd want
more than one per cluster.

I imagine A&E would control the ingress, and adding DNS/SSL would be
part of provisioning. Given that we'll also need to set up DNS through
bind on sherry, I'm not sure how much of this we want to iron out
right now.
21 changes: 16 additions & 5 deletions features/provisioning-hosting-for-an-application.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,22 @@ Feature: Provisioning hosting for an application
I want to provision hosting for that application

Background:
Given an application team wants a new instance of their application
Given an application team wants a new testing instance of their foo application
And I am a sysadmin authorized to provision new instances

Scenario: Provisioning an instance of an application for the first time
Given no instances of this application are provisioned
Scenario:
Given no instances of foo are provisioned
When I check for existing configurations of foo
Then I can see that there are none

Scenario: Provisioning an instance of an already provisioned application
Given an instance of this application is already provisioned
Scenario:
Given foo-demo, foo-staging, and foo-production are already provisioned
When I check for existing configurations of foo
Then I can see the differences and similarities between the existing instances of foo

Scenario:
Given I have provisioned an instance called foo-development
And it is based on the rails prototype
When I check the configuration of foo-development
Then I can see that foo-development is based on our rails prototype
And its configuration does not differ from its prototype's
17 changes: 17 additions & 0 deletions features/tracking-provisioning-models-and-divergences.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Feature: Tracking prototypes and divergences
In order to understand how all our instances are configured without locking ourselves into a static set of deployment options
As a sysadmin
I want to track our prototypes separately from how each instance diverges

Scenario: Modifying a prototype
Given the app-production instance is based on the rails-with-database prototype
When I modify the rails-with-database prototype
Then the diff between app-production and its prototype changes
But the app-production instance itself is unaffected

Scenario: Rebasing an instance onto a new prototype
Given the app-production instance is based on the rails-with-database prototype
And I've created a new hyrax prototype
When I base app-production on hyrax instead of rails-with-database
Then app-production's diff is against hyrax instead of rails-with-database
But the app-production instance itself is unaffected