When planning to deploy a solution in IBM Cloud, there are several areas to carefully consider.
These include how you will set up the account, which permissions to assign to users, how to log and monitor your systems, how to design the networking configuration, which compute options to use and how to automate deployments:
Establish an enterprise account structure and standards
An important step in preparing your project is to define how you are going to structure your account. IBM Cloud introduces the concepts of Enterprise, Account, Account Group, Users, Access Groups, Resource Groups and Tags. You will want to understand these concepts to make the right decisions for your enterprise.
A common approach is to define a blueprint for all projects, as shown in “Blueprinting the Onboarding of Cloud Projects Using Terraform.” With the concepts defined above, a blueprint could be as follows:
In this example, a project maps to an Account, and a set of standard Access Groups exist in every project to bring consistency across the Enterprise. Each Access Group would have specific IAM policies assigned based on their purpose. Resource groups could be dedicated to specify environments (e.g., Development, Test, Staging, Production):
Related links
- What is IBM Cloud Identity and Access Management?
- Managing resource groups
- Setting up access groups
- Best practices for organizing resources and assigning access
- Logging in with a federated ID
- Tutorial: Best practices for organizing users, teams, applications
- Blog: Blueprinting the Onboarding of Cloud Projects Using Terraform
- Blog: Characteristics of User and Access Tags on IBM Cloud
Identify and configure a set of shared services
No matter which compute options you are deploying to, there is likely a set of common shared services you are going to use. Typically, this would include services like log and metrics collection, auditing, certificate management and key management. When possible, use a dedicated resource group or account to host these services and configure compute resources to send their logs and metrics to the shared instances. Apply IAM policies to control which access groups can read/write from/to these instances:
Related links
- Deploying a Sysdig agent
- LogDNA agent
- Archiving logs to IBM Cloud Object Storage
- Tutorial: Analyze logs and monitor application health with LogDNA and Sysdig
Define your networking strategy
From IP addressing scheme to rules in network access lists and security groups, the scope of the networking configuration is not to be taken lightly. Do you need to interconnect your remote network environments with IBM Cloud? Will you go over a dedicated link? Through a virtual private network? How do you plan to isolate applications within the same account and across accounts? Which IP address ranges to use? Are there any conflicts? How to protect ingress traffic while ensuring high availability requirements are met?
Related links
- Tutorial: Team based privacy using IAM, VPC, Transit Gateway and DNS
- Tutorial: Securely access remote instances with a bastion host
- Tutorial: Strategies for resilient applications
- Tutorial: Resilient and secure multi-region Kubernetes clusters with IBM Cloud Internet Services
- Blog: Creating Virtual Private Endpoint Gateways with Terraform
Evaluate and improve security posture
Embed security checks into everyday workflows to help monitor for security and compliance. Configure Security and Compliance Center to monitor and govern the use of resources in your accounts. Set up base compliance policies, scans and schedules. Set up common approaches to the management of secrets, certificates and keys:
Related links
- Getting started with Security and Compliance Center
- Managing collectors
- Working with profiles
- Tutorial: Apply end to end security to a cloud application
- Tutorial: Enhance security of your deployed application
- Blog: Onboarding Cloud Projects: Security and Resource Considerations
- Blog: Getting More Out of Your VPC Flow Logs with Kentik Network Observability Cloud
Automate all steps
Once you have passed the initial discovery phase of a service, using either the user interface or the command line, and you’ve made the decision to use this service as part of your solution, make sure to rely on automation to integrate, configure and operate the service. From infrastructure provisioning to production deployment, whenever possible, capture these steps as code — as repeatable and auditable processes. Tools like the IBM Cloud CLI, Terraform and Ansible will play their part in this endeavor, together with Continuous Delivery and IBM Cloud Schematics:
Related links
- Tutorial: Plan, create and update deployment environments
- Tutorial: Install software on virtual server instances in VPC
- Blog: Tekton in the IBM Cloud: Part 1 – Getting Started
- Blog: Terraform Template for Monitoring with Sysdig Teams
Feedback, questions, and suggestions
If you have feedback, suggestions or questions about this post, please reach out to me on Twitter (@L2FProd).