Archived
Use a lockable state repository.
Also, make use of terraform workspaces.
This commit is contained in:
1 parent
3443833de1
commit
1425c98072
11 files changed
+179
-15
No files matched your search
@@ -50,6 +50,19 @@ For all the next commands, make sure to use the `AWS_PROFILE` environment variab
|
||||
$ export AWS_PROFILE=infra-test
|
||||
```
|
||||
|
||||
### State space initialization
|
||||
|
||||
This section can be skipped; If so, make sure to disable other projects' `init.tf`.
|
||||
|
||||
The `state` infra will create a s3 & dynamo space to store terraform state.
|
||||
|
||||
```sh
|
||||
$ cd state
|
||||
$ terraform init
|
||||
$ terraform plan -var "aws_profile=$AWS_PROFILE" -out tf.plan
|
||||
$ terraform apply tf.plan
|
||||
...
|
||||
```
|
||||
|
||||
### First: EKS
|
||||
|
||||
@@ -100,7 +113,9 @@ Once eks is deployed, and kubectl correctly configured, we can continue by deplo
|
||||
```sh
|
||||
$ cd ../k8s
|
||||
$ terraform init
|
||||
$ terraform plan -var enable_nginx=1 -out tf.plan
|
||||
# By default, it will install nginx; To disable it, use prod's workspace by:
|
||||
# $ terraform workspace new prod
|
||||
$ terraform plan -out tf.plan
|
||||
$ terraform apply
|
||||
...
|
||||
Apply complete! Resources: 3 added, 0 changed, 1 destroyed.
|
||||
@@ -109,19 +124,58 @@ Apply complete! Resources: 3 added, 0 changed, 1 destroyed.
|
||||
As a result, let's verify there is our stuff deployed:
|
||||
|
||||
```sh
|
||||
$ kubectl get pods --namespace testaroo
|
||||
$ kubectl get pods --namespace testaroo-default
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
alpine 1/1 Running 0 5m3s
|
||||
nginx-98cf9b965-l785s 1/1 Running 0 5m3s
|
||||
nginx-98cf9b965-smpkr 1/1 Running 0 5m3s
|
||||
|
||||
$ kubectl get deploy -n testaroo nginx -o wide
|
||||
$ kubectl get deploy -n testaroo-default nginx -o wide
|
||||
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
|
||||
nginx 2/2 2 2 5m46s nginx-container nginx app=Nginx
|
||||
|
||||
$ kubectl get svc -n testaroo -o wide
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
|
||||
nginx NodePort 172.20.10.182 <none> 80:31234/TCP 6m8s app=Nginx
|
||||
$ kubectl get svc -n testaroo-default -o wide
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
|
||||
nginx-lb LoadBalancer 172.20.0.75 a3a176133964a463db33dafb6c6e06a1-480398782.eu-west-3.elb.amazonaws.com 80:30512/TCP 57s app=Nginx
|
||||
nginx-np NodePort 172.20.227.6 <none> 80:31234/TCP 57s app=Nginx
|
||||
```
|
||||
|
||||
And now, as the `default` workspace was deployed, it is possible to switch to prod's:
|
||||
|
||||
```sh
|
||||
$ terraform workspace new prod
|
||||
$ terraform plan -out tf-prod.plan
|
||||
$ terraform apply tf-prod.plan
|
||||
$ kubectl get ns
|
||||
NAME STATUS AGE
|
||||
default Active 18m
|
||||
kube-node-lease Active 18m
|
||||
kube-public Active 18m
|
||||
kube-system Active 18m
|
||||
testaroo-default Active 3m10s
|
||||
testaroo-prod Active 14s
|
||||
|
||||
$ kubectl get pods -n testaroo-prod
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
alpine 1/1 Running 0 39s
|
||||
|
||||
```
|
||||
|
||||
No `nginx` for `prod`'s workspace, as it was disabled!
|
||||
|
||||
After using workspaces, it is possible to check the state files in s3:
|
||||
|
||||
```sh
|
||||
$ aws s3 ls terraform-state-infra-aws-eks
|
||||
PRE env:/
|
||||
PRE global/
|
||||
|
||||
$ aws s3 ls terraform-state-infra-aws-eks/global/s3/
|
||||
2022-02-19 16:29:43 33800 terraform.eks.tfstate
|
||||
2022-02-19 16:40:25 18754 terraform.k8s.tfstate
|
||||
|
||||
$ aws s3 ls terraform-state-infra-aws-eks/env:/prod/global/s3/
|
||||
2022-02-19 16:43:03 8392 terraform.k8s.tfstate
|
||||
```
|
||||
|
||||
### Reaching the app.
|
||||
@@ -157,7 +211,7 @@ $ kubectl get svc -n testaroo nginx-lb
|
||||
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
|
||||
nginx-lb LoadBalancer 172.20.149.132 a34059e68106b41a292730b5defe734b-581837320.eu-west-3.elb.amazonaws.com 80:31698/TCP 3m50s
|
||||
|
||||
$ terraform output 09:59:47
|
||||
$ terraform output
|
||||
lb-address = "a34059e68106b41a292730b5defe734b-581837320.eu-west-3.elb.amazonaws.com"
|
||||
```
|
||||
|
||||
|
||||
Reference in new issue
Block a user