diff --git a/.DS_Store b/.DS_Store index 4ac0bf5..cbfccf7 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/infrastructure/dev-k8s-terraform/main.tf b/infrastructure/dev-k8s-terraform/main.tf new file mode 100644 index 0000000..40c2ea7 --- /dev/null +++ b/infrastructure/dev-k8s-terraform/main.tf @@ -0,0 +1,205 @@ +provider "aws" { + region = "us-east-1" +} + +module "iam" { + source = "./modules/IAM" +} + +resource "aws_security_group" "matt-kube-mutual-sg" { + name = "kube-mutual-sec-group-for-matt" +} + +resource "aws_security_group" "matt-kube-worker-sg" { + name = "kube-worker-sec-group-for-matt" + ingress { + protocol = "tcp" + from_port = 10250 + to_port = 10250 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 30000 + to_port = 32767 + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + protocol = "tcp" + from_port = 22 + to_port = 22 + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + protocol = "udp" + from_port = 8472 + to_port = 8472 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + + egress{ + protocol = "-1" + from_port = 0 + to_port = 0 + cidr_blocks = ["0.0.0.0/0"] + } + tags = { + Name = "kube-worker-secgroup" + "kubernetes.io/cluster/mattsCluster" = "owned" + } +} + +resource "aws_security_group" "matt-kube-master-sg" { + name = "kube-master-sec-group-for-matt" + + ingress { + protocol = "tcp" + from_port = 22 + to_port = 22 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 80 + to_port = 80 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 6443 + to_port = 6443 + cidr_blocks = ["0.0.0.0/0"] + #security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 443 + to_port = 443 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 2380 + to_port = 2380 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 2379 + to_port = 2379 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10250 + to_port = 10250 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10251 + to_port = 10251 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10252 + to_port = 10252 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 30000 + to_port = 32767 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "udp" + from_port = 8472 + to_port = 8472 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + egress { + protocol = "-1" + from_port = 0 + to_port = 0 + cidr_blocks = ["0.0.0.0/0"] + } + tags = { + Name = "kube-master-secgroup" + } +} + +resource "aws_instance" "kube-master" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.master_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-master-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "kube-master" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "master" + Id = "1" + environment = "dev" + } +} + +resource "aws_instance" "worker-1" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.worker_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-worker-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "worker-1" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "worker" + Id = "1" + environment = "dev" + } +} + +resource "aws_instance" "worker-2" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.worker_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-worker-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "worker-2" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "worker" + Id = "2" + environment = "dev" + } +} + +output kube-master-ip { + value = aws_instance.kube-master.public_ip + sensitive = false + description = "public ip of the kube-master" +} + +output worker-1-ip { + value = aws_instance.worker-1.public_ip + sensitive = false + description = "public ip of the worker-1" +} + +output worker-2-ip { + value = aws_instance.worker-2.public_ip + sensitive = false + description = "public ip of the worker-2" +} diff --git a/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_master.json b/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_master.json new file mode 100644 index 0000000..4a04df6 --- /dev/null +++ b/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_master.json @@ -0,0 +1,143 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "autoscaling:DescribeAutoScalingGroups", + "autoscaling:DescribeLaunchConfigurations", + "autoscaling:DescribeTags", + "ec2:DescribeInstances", + "ec2:DescribeRegions", + "ec2:DescribeRouteTables", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVolumes", + "ec2:CreateSecurityGroup", + "ec2:CreateTags", + "ec2:CreateVolume", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyVolume", + "ec2:AttachVolume", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateRoute", + "ec2:DeleteRoute", + "ec2:DeleteSecurityGroup", + "ec2:DeleteVolume", + "ec2:DetachVolume", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeVpcs", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:AttachLoadBalancerToSubnets", + "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:CreateLoadBalancerPolicy", + "elasticloadbalancing:CreateLoadBalancerListeners", + "elasticloadbalancing:ConfigureHealthCheck", + "elasticloadbalancing:DeleteLoadBalancer", + "elasticloadbalancing:DeleteLoadBalancerListeners", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DetachLoadBalancerFromSubnets", + "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:RegisterInstancesWithLoadBalancer", + "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeLoadBalancerPolicies", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:DescribeTargetHealth", + "elasticloadbalancing:ModifyListener", + "elasticloadbalancing:ModifyTargetGroup", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:SetLoadBalancerPoliciesOfListener", + "iam:CreateServiceLinkedRole", + "kms:DescribeKey", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy", + "s3:ListAccessPointsForObjectLambda", + "s3:GetObjectVersionTagging", + "s3:GetStorageLensConfigurationTagging", + "s3:GetObjectAcl", + "s3:GetBucketObjectLockConfiguration", + "s3:GetIntelligentTieringConfiguration", + "s3:GetObjectVersionAcl", + "s3:GetBucketPolicyStatus", + "s3:GetObjectRetention", + "s3:GetBucketWebsite", + "s3:GetJobTagging", + "s3:ListJobs", + "s3:GetMultiRegionAccessPoint", + "s3:GetObjectAttributes", + "s3:GetObjectLegalHold", + "s3:GetBucketNotification", + "s3:DescribeMultiRegionAccessPointOperation", + "s3:GetReplicationConfiguration", + "s3:ListMultipartUploadParts", + "s3:GetObject", + "s3:DescribeJob", + "s3:GetAnalyticsConfiguration", + "s3:GetObjectVersionForReplication", + "s3:GetAccessPointForObjectLambda", + "s3:GetStorageLensDashboard", + "s3:GetLifecycleConfiguration", + "s3:GetAccessPoint", + "s3:GetInventoryConfiguration", + "s3:GetBucketTagging", + "s3:GetAccessPointPolicyForObjectLambda", + "s3:GetBucketLogging", + "s3:ListBucketVersions", + "s3:ListBucket", + "s3:GetAccelerateConfiguration", + "s3:GetObjectVersionAttributes", + "s3:GetBucketPolicy", + "s3:GetEncryptionConfiguration", + "s3:GetObjectVersionTorrent", + "s3:GetBucketRequestPayment", + "s3:GetAccessPointPolicyStatus", + "s3:GetObjectTagging", + "s3:GetMetricsConfiguration", + "s3:GetBucketOwnershipControls", + "s3:GetBucketPublicAccessBlock", + "s3:GetMultiRegionAccessPointPolicyStatus", + "s3:ListBucketMultipartUploads", + "s3:GetMultiRegionAccessPointPolicy", + "s3:GetAccessPointPolicyStatusForObjectLambda", + "s3:ListAccessPoints", + "s3:GetBucketVersioning", + "s3:ListMultiRegionAccessPoints", + "s3:GetBucketAcl", + "s3:GetAccessPointConfigurationForObjectLambda", + "s3:ListStorageLensConfigurations", + "s3:GetObjectTorrent", + "s3:GetStorageLensConfiguration", + "s3:GetAccountPublicAccessBlock", + "s3:ListAllMyBuckets", + "s3:GetBucketCORS", + "s3:GetBucketLocation", + "s3:GetAccessPointPolicy", + "s3:GetObjectVersion" + ], + "Resource": [ + "*" + ] + } + ] +} diff --git a/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_worker.json b/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_worker.json new file mode 100644 index 0000000..b6f3028 --- /dev/null +++ b/infrastructure/dev-k8s-terraform/modules/IAM/policy_for_worker.json @@ -0,0 +1,136 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:CreateSnapshot", + "ec2:AttachVolume", + "ec2:DetachVolume", + "ec2:ModifyVolume", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInstances", + "ec2:DescribeSnapshots", + "ec2:DescribeTags", + "ec2:DescribeVolumes", + "ec2:DescribeVolumesModifications", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateTags" + ], + "Resource": [ + "arn:aws:ec2:*:*:volume/*", + "arn:aws:ec2:*:*:snapshot/*" + ], + "Condition": { + "StringEquals": { + "ec2:CreateAction": [ + "CreateVolume", + "CreateSnapshot" + ] + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteTags" + ], + "Resource": [ + "arn:aws:ec2:*:*:volume/*", + "arn:aws:ec2:*:*:snapshot/*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "aws:RequestTag/ebs.csi.aws.com/cluster": "true" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "aws:RequestTag/CSIVolumeName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/CSIVolumeName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/CSIVolumeSnapshotName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true" + } + } + } + ] + } + \ No newline at end of file diff --git a/infrastructure/dev-k8s-terraform/modules/IAM/roles.tf b/infrastructure/dev-k8s-terraform/modules/IAM/roles.tf new file mode 100644 index 0000000..fedb5b2 --- /dev/null +++ b/infrastructure/dev-k8s-terraform/modules/IAM/roles.tf @@ -0,0 +1,87 @@ +resource "aws_iam_policy" "policy_for_master_role" { + name = "policy_for_master_role" + policy = file("./modules/IAM/policy_for_master.json") +} + +resource "aws_iam_policy" "policy_for_worker_role" { + name = "policy_for_worker_role" + policy = file("./modules/IAM/policy_for_worker.json") +} + +resource "aws_iam_role" "role_for_master" { + name = "role_master_k8s" + + # Terraform "jsonencode" function converts a + # Terraform expression result to valid JSON syntax. + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "ec2.amazonaws.com" + } + }, + ] + }) + + tags = { + Name = "role_for_master" + } +} + +resource "aws_iam_role" "role_for_worker" { + name = "role_worker_k8s" + + # Terraform "jsonencode" function converts a + # Terraform expression result to valid JSON syntax. + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "ec2.amazonaws.com" + } + }, + ] + }) + + tags = { + Name = "role_for_worker" + } +} + +resource "aws_iam_policy_attachment" "attach_for_master" { + name = "attachment_for_master" + roles = [aws_iam_role.role_for_master.name] + policy_arn = aws_iam_policy.policy_for_master_role.arn +} + +resource "aws_iam_policy_attachment" "attach_for_worker" { + name = "attachment_for_worker" + roles = [aws_iam_role.role_for_worker.name] + policy_arn = aws_iam_policy.policy_for_worker_role.arn +} + +resource "aws_iam_instance_profile" "profile_for_master" { + name = "profile_for_master" + role = aws_iam_role.role_for_master.name +} + +resource "aws_iam_instance_profile" "profile_for_worker" { + name = "profile_for_worker" + role = aws_iam_role.role_for_worker.name +} + +output master_profile_name { + value = aws_iam_instance_profile.profile_for_master.name +} + +output worker_profile_name { + value = aws_iam_instance_profile.profile_for_worker.name +} diff --git a/infrastructure/qa-k8s-terraform/main.tf b/infrastructure/qa-k8s-terraform/main.tf new file mode 100644 index 0000000..349a93e --- /dev/null +++ b/infrastructure/qa-k8s-terraform/main.tf @@ -0,0 +1,205 @@ +provider "aws" { + region = "us-east-1" +} + +module "iam" { + source = "./modules/IAM" +} + +resource "aws_security_group" "matt-kube-mutual-sg" { + name = "kube-mutual-sec-group-for-matt" +} + +resource "aws_security_group" "matt-kube-worker-sg" { + name = "kube-worker-sec-group-for-matt" + ingress { + protocol = "tcp" + from_port = 10250 + to_port = 10250 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 30000 + to_port = 32767 + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + protocol = "tcp" + from_port = 22 + to_port = 22 + cidr_blocks = ["0.0.0.0/0"] + } + + ingress { + protocol = "udp" + from_port = 8472 + to_port = 8472 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + + egress{ + protocol = "-1" + from_port = 0 + to_port = 0 + cidr_blocks = ["0.0.0.0/0"] + } + tags = { + Name = "kube-worker-secgroup" + "kubernetes.io/cluster/mattsCluster" = "owned" + } +} + +resource "aws_security_group" "matt-kube-master-sg" { + name = "kube-master-sec-group-for-matt" + + ingress { + protocol = "tcp" + from_port = 22 + to_port = 22 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 80 + to_port = 80 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 6443 + to_port = 6443 + cidr_blocks = ["0.0.0.0/0"] + #security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 443 + to_port = 443 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "tcp" + from_port = 2380 + to_port = 2380 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 2379 + to_port = 2379 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10250 + to_port = 10250 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10251 + to_port = 10251 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 10252 + to_port = 10252 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + ingress { + protocol = "tcp" + from_port = 30000 + to_port = 32767 + cidr_blocks = ["0.0.0.0/0"] + } + ingress { + protocol = "udp" + from_port = 8472 + to_port = 8472 + security_groups = [aws_security_group.matt-kube-mutual-sg.id] + } + egress { + protocol = "-1" + from_port = 0 + to_port = 0 + cidr_blocks = ["0.0.0.0/0"] + } + tags = { + Name = "kube-master-secgroup" + } +} + +resource "aws_instance" "kube-master" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.master_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-master-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "kube-master" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "master" + Id = "1" + environment = "qa" + } +} + +resource "aws_instance" "worker-1" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.worker_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-worker-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "worker-1" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "worker" + Id = "1" + environment = "qa" + } +} + +resource "aws_instance" "worker-2" { + ami = "ami-013f17f36f8b1fefb" + instance_type = "t3a.medium" + iam_instance_profile = module.iam.worker_profile_name + vpc_security_group_ids = [aws_security_group.matt-kube-worker-sg.id, aws_security_group.matt-kube-mutual-sg.id] + key_name = "mattkey" + subnet_id = "subnet-0b44c52bb4b66253f" # select own subnet_id of us-east-1a + availability_zone = "us-east-1a" + tags = { + Name = "worker-2" + "kubernetes.io/cluster/mattsCluster" = "owned" + Project = "tera-kube-ans" + Role = "worker" + Id = "2" + environment = "qa" + } +} + +output kube-master-ip { + value = aws_instance.kube-master.public_ip + sensitive = false + description = "public ip of the kube-master" +} + +output worker-1-ip { + value = aws_instance.worker-1.public_ip + sensitive = false + description = "public ip of the worker-1" +} + +output worker-2-ip { + value = aws_instance.worker-2.public_ip + sensitive = false + description = "public ip of the worker-2" +} diff --git a/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_master.json b/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_master.json new file mode 100644 index 0000000..4a04df6 --- /dev/null +++ b/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_master.json @@ -0,0 +1,143 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "autoscaling:DescribeAutoScalingGroups", + "autoscaling:DescribeLaunchConfigurations", + "autoscaling:DescribeTags", + "ec2:DescribeInstances", + "ec2:DescribeRegions", + "ec2:DescribeRouteTables", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeVolumes", + "ec2:CreateSecurityGroup", + "ec2:CreateTags", + "ec2:CreateVolume", + "ec2:ModifyInstanceAttribute", + "ec2:ModifyVolume", + "ec2:AttachVolume", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateRoute", + "ec2:DeleteRoute", + "ec2:DeleteSecurityGroup", + "ec2:DeleteVolume", + "ec2:DetachVolume", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeVpcs", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:AttachLoadBalancerToSubnets", + "elasticloadbalancing:ApplySecurityGroupsToLoadBalancer", + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:CreateLoadBalancerPolicy", + "elasticloadbalancing:CreateLoadBalancerListeners", + "elasticloadbalancing:ConfigureHealthCheck", + "elasticloadbalancing:DeleteLoadBalancer", + "elasticloadbalancing:DeleteLoadBalancerListeners", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DetachLoadBalancerFromSubnets", + "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:RegisterInstancesWithLoadBalancer", + "elasticloadbalancing:SetLoadBalancerPoliciesForBackendServer", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:CreateListener", + "elasticloadbalancing:CreateTargetGroup", + "elasticloadbalancing:DeleteListener", + "elasticloadbalancing:DeleteTargetGroup", + "elasticloadbalancing:DescribeListeners", + "elasticloadbalancing:DescribeLoadBalancerPolicies", + "elasticloadbalancing:DescribeTargetGroups", + "elasticloadbalancing:DescribeTargetHealth", + "elasticloadbalancing:ModifyListener", + "elasticloadbalancing:ModifyTargetGroup", + "elasticloadbalancing:RegisterTargets", + "elasticloadbalancing:SetLoadBalancerPoliciesOfListener", + "iam:CreateServiceLinkedRole", + "kms:DescribeKey", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy", + "s3:ListAccessPointsForObjectLambda", + "s3:GetObjectVersionTagging", + "s3:GetStorageLensConfigurationTagging", + "s3:GetObjectAcl", + "s3:GetBucketObjectLockConfiguration", + "s3:GetIntelligentTieringConfiguration", + "s3:GetObjectVersionAcl", + "s3:GetBucketPolicyStatus", + "s3:GetObjectRetention", + "s3:GetBucketWebsite", + "s3:GetJobTagging", + "s3:ListJobs", + "s3:GetMultiRegionAccessPoint", + "s3:GetObjectAttributes", + "s3:GetObjectLegalHold", + "s3:GetBucketNotification", + "s3:DescribeMultiRegionAccessPointOperation", + "s3:GetReplicationConfiguration", + "s3:ListMultipartUploadParts", + "s3:GetObject", + "s3:DescribeJob", + "s3:GetAnalyticsConfiguration", + "s3:GetObjectVersionForReplication", + "s3:GetAccessPointForObjectLambda", + "s3:GetStorageLensDashboard", + "s3:GetLifecycleConfiguration", + "s3:GetAccessPoint", + "s3:GetInventoryConfiguration", + "s3:GetBucketTagging", + "s3:GetAccessPointPolicyForObjectLambda", + "s3:GetBucketLogging", + "s3:ListBucketVersions", + "s3:ListBucket", + "s3:GetAccelerateConfiguration", + "s3:GetObjectVersionAttributes", + "s3:GetBucketPolicy", + "s3:GetEncryptionConfiguration", + "s3:GetObjectVersionTorrent", + "s3:GetBucketRequestPayment", + "s3:GetAccessPointPolicyStatus", + "s3:GetObjectTagging", + "s3:GetMetricsConfiguration", + "s3:GetBucketOwnershipControls", + "s3:GetBucketPublicAccessBlock", + "s3:GetMultiRegionAccessPointPolicyStatus", + "s3:ListBucketMultipartUploads", + "s3:GetMultiRegionAccessPointPolicy", + "s3:GetAccessPointPolicyStatusForObjectLambda", + "s3:ListAccessPoints", + "s3:GetBucketVersioning", + "s3:ListMultiRegionAccessPoints", + "s3:GetBucketAcl", + "s3:GetAccessPointConfigurationForObjectLambda", + "s3:ListStorageLensConfigurations", + "s3:GetObjectTorrent", + "s3:GetStorageLensConfiguration", + "s3:GetAccountPublicAccessBlock", + "s3:ListAllMyBuckets", + "s3:GetBucketCORS", + "s3:GetBucketLocation", + "s3:GetAccessPointPolicy", + "s3:GetObjectVersion" + ], + "Resource": [ + "*" + ] + } + ] +} diff --git a/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_worker.json b/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_worker.json new file mode 100644 index 0000000..b6f3028 --- /dev/null +++ b/infrastructure/qa-k8s-terraform/modules/IAM/policy_for_worker.json @@ -0,0 +1,136 @@ +{ + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "ec2:CreateSnapshot", + "ec2:AttachVolume", + "ec2:DetachVolume", + "ec2:ModifyVolume", + "ec2:DescribeAvailabilityZones", + "ec2:DescribeInstances", + "ec2:DescribeSnapshots", + "ec2:DescribeTags", + "ec2:DescribeVolumes", + "ec2:DescribeVolumesModifications", + "ecr:GetDownloadUrlForLayer", + "ecr:BatchGetImage", + "ecr:BatchCheckLayerAvailability", + "ecr:PutImage", + "ecr:InitiateLayerUpload", + "ecr:UploadLayerPart", + "ecr:CompleteLayerUpload", + "ecr:DescribeRepositories", + "ecr:GetRepositoryPolicy", + "ecr:ListImages", + "ecr:DeleteRepository", + "ecr:BatchDeleteImage", + "ecr:SetRepositoryPolicy", + "ecr:DeleteRepositoryPolicy" + ], + "Resource": "*" + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateTags" + ], + "Resource": [ + "arn:aws:ec2:*:*:volume/*", + "arn:aws:ec2:*:*:snapshot/*" + ], + "Condition": { + "StringEquals": { + "ec2:CreateAction": [ + "CreateVolume", + "CreateSnapshot" + ] + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteTags" + ], + "Resource": [ + "arn:aws:ec2:*:*:volume/*", + "arn:aws:ec2:*:*:snapshot/*" + ] + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "aws:RequestTag/ebs.csi.aws.com/cluster": "true" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:CreateVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "aws:RequestTag/CSIVolumeName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/CSIVolumeName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteVolume" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/CSIVolumeSnapshotName": "*" + } + } + }, + { + "Effect": "Allow", + "Action": [ + "ec2:DeleteSnapshot" + ], + "Resource": "*", + "Condition": { + "StringLike": { + "ec2:ResourceTag/ebs.csi.aws.com/cluster": "true" + } + } + } + ] + } + \ No newline at end of file diff --git a/infrastructure/qa-k8s-terraform/modules/IAM/roles.tf b/infrastructure/qa-k8s-terraform/modules/IAM/roles.tf new file mode 100644 index 0000000..fedb5b2 --- /dev/null +++ b/infrastructure/qa-k8s-terraform/modules/IAM/roles.tf @@ -0,0 +1,87 @@ +resource "aws_iam_policy" "policy_for_master_role" { + name = "policy_for_master_role" + policy = file("./modules/IAM/policy_for_master.json") +} + +resource "aws_iam_policy" "policy_for_worker_role" { + name = "policy_for_worker_role" + policy = file("./modules/IAM/policy_for_worker.json") +} + +resource "aws_iam_role" "role_for_master" { + name = "role_master_k8s" + + # Terraform "jsonencode" function converts a + # Terraform expression result to valid JSON syntax. + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "ec2.amazonaws.com" + } + }, + ] + }) + + tags = { + Name = "role_for_master" + } +} + +resource "aws_iam_role" "role_for_worker" { + name = "role_worker_k8s" + + # Terraform "jsonencode" function converts a + # Terraform expression result to valid JSON syntax. + assume_role_policy = jsonencode({ + Version = "2012-10-17" + Statement = [ + { + Action = "sts:AssumeRole" + Effect = "Allow" + Sid = "" + Principal = { + Service = "ec2.amazonaws.com" + } + }, + ] + }) + + tags = { + Name = "role_for_worker" + } +} + +resource "aws_iam_policy_attachment" "attach_for_master" { + name = "attachment_for_master" + roles = [aws_iam_role.role_for_master.name] + policy_arn = aws_iam_policy.policy_for_master_role.arn +} + +resource "aws_iam_policy_attachment" "attach_for_worker" { + name = "attachment_for_worker" + roles = [aws_iam_role.role_for_worker.name] + policy_arn = aws_iam_policy.policy_for_worker_role.arn +} + +resource "aws_iam_instance_profile" "profile_for_master" { + name = "profile_for_master" + role = aws_iam_role.role_for_master.name +} + +resource "aws_iam_instance_profile" "profile_for_worker" { + name = "profile_for_worker" + role = aws_iam_role.role_for_worker.name +} + +output master_profile_name { + value = aws_iam_instance_profile.profile_for_master.name +} + +output worker_profile_name { + value = aws_iam_instance_profile.profile_for_worker.name +} diff --git a/infrastructure/rancher-cluster.rkestate b/infrastructure/rancher-cluster.rkestate index 68c200e..a997c8b 100644 --- a/infrastructure/rancher-cluster.rkestate +++ b/infrastructure/rancher-cluster.rkestate @@ -3,7 +3,7 @@ "rkeConfig": { "nodes": [ { - "address": "44.203.109.17", + "address": "172.31.6.220", "port": "22", "internalAddress": "172.31.6.220", "role": [ @@ -11,7 +11,7 @@ "etcd", "worker" ], - "hostnameOverride": "44.203.109.17", + "hostnameOverride": "172.31.6.220", "user": "ubuntu", "sshKeyPath": "~/.ssh/call-rancher.pem" } @@ -199,9 +199,9 @@ }, "certificatesBundle": { "kube-admin": { - "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDCjCCAfKgAwIBAgIIDS5Vf1XI2DEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTEyMDU4MzZaMC4xFzAV\nBgNVBAoTDnN5c3RlbTptYXN0ZXJzMRMwEQYDVQQDEwprdWJlLWFkbWluMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCGIdYQo6pw84TRXzPEwWhUaop2E\nepWO7ylfBwDFyJvDNB9pLxBKsTnTponrJpkFHstt3QItDKJj0DC33XpTcSO7jgqX\nzgIsqK9p0DVY9v55mH9bpESNla+sRPPzPR0ue13HPecyvwRdQuzUcmWbA5/07tie\nuW4DWLtUrLj3IKpHbwP3iqxiNXIvGW4tLmf4WERhbR+B0ggM5NrElc8IAU05yKNR\nNMnwnSAUwzBJZxGB2c6Q96EDhSK7AjuetFaIEgn1mxFrILNqqEnNnhWY9fParZNJ\nkwYaGqeYqGmdah+JDx87m8PCxcEWHY67Pu5dF4Us579iSDA7GLgD2XtSkQIDAQAB\no0gwRjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwHwYDVR0j\nBBgwFoAU07RwD/v/IGUc25CTSk9SzezrBrowDQYJKoZIhvcNAQELBQADggEBAJ+6\n0XJ/nuwRZXzn4HwbmZkf7akDzkYFdLChSUkNMvJm8kjdVdwxij6BFiMhw747p2CP\n97fqfpnM14UTb5w+UXvXVcg4LEaH0HoGlDXFtYq/LJ+vop2HGm21S7cOG00XduV2\ngAW9JpxC/jGi5DnOGsp33Cgb+ufAY50O3Gydhu365lToXJZ4uVOORWLOI099vVOA\nbrpjzs/ZG3sRRT/vOrdx8amwYe/QglqCcxZDmHLjHYT94I3IlSr1FppFo1TafIuM\n2qQZcR5FUZ6vk7Kz77Dq7rCtDe4lgu4M+JQZ9vYesSX1Z2ADlGKSORJQG9W5onzr\n+qAy5kk/Jp/xHkF9p00=\n-----END CERTIFICATE-----\n", + "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDCjCCAfKgAwIBAgIIZYb2JkTKKKkwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTUwMzU0NTJaMC4xFzAV\nBgNVBAoTDnN5c3RlbTptYXN0ZXJzMRMwEQYDVQQDEwprdWJlLWFkbWluMIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCGIdYQo6pw84TRXzPEwWhUaop2E\nepWO7ylfBwDFyJvDNB9pLxBKsTnTponrJpkFHstt3QItDKJj0DC33XpTcSO7jgqX\nzgIsqK9p0DVY9v55mH9bpESNla+sRPPzPR0ue13HPecyvwRdQuzUcmWbA5/07tie\nuW4DWLtUrLj3IKpHbwP3iqxiNXIvGW4tLmf4WERhbR+B0ggM5NrElc8IAU05yKNR\nNMnwnSAUwzBJZxGB2c6Q96EDhSK7AjuetFaIEgn1mxFrILNqqEnNnhWY9fParZNJ\nkwYaGqeYqGmdah+JDx87m8PCxcEWHY67Pu5dF4Us579iSDA7GLgD2XtSkQIDAQAB\no0gwRjAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwIwHwYDVR0j\nBBgwFoAU07RwD/v/IGUc25CTSk9SzezrBrowDQYJKoZIhvcNAQELBQADggEBACUT\n2whBbmu+dxACnyfO6XWg6j6/HzpXWTKqjYRhM72NyQZG01iRGQqhjDxuYQVQ5BkB\nd23WT9EzPWOkpFwI6K1JX0HnjhXpY+wrT1xcmBgC7FT8EcUwDyPywqqcDC+NOfOn\nRx+Y6p+p0xBP2IxO09R0r20csWmtDtPBhghNwA8wG/RI6ptsiWHgBFDum4Fz8DBS\ndtcF/v9pTGRBA0lbLcNRYFSfX/8BNemKf7PKtahihMafHalFOQgC5OkkHnHebqJ5\nLAB29iokYRvvelzGrP9AyUN0VBEzy3NS0R0NgGVr6Fl9MTDbcbNktUTUvWqwuMIm\nm3gd8WUtZRtHbwv7Axg=\n-----END CERTIFICATE-----\n", "keyPEM": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAxCGIdYQo6pw84TRXzPEwWhUaop2EepWO7ylfBwDFyJvDNB9p\nLxBKsTnTponrJpkFHstt3QItDKJj0DC33XpTcSO7jgqXzgIsqK9p0DVY9v55mH9b\npESNla+sRPPzPR0ue13HPecyvwRdQuzUcmWbA5/07tieuW4DWLtUrLj3IKpHbwP3\niqxiNXIvGW4tLmf4WERhbR+B0ggM5NrElc8IAU05yKNRNMnwnSAUwzBJZxGB2c6Q\n96EDhSK7AjuetFaIEgn1mxFrILNqqEnNnhWY9fParZNJkwYaGqeYqGmdah+JDx87\nm8PCxcEWHY67Pu5dF4Us579iSDA7GLgD2XtSkQIDAQABAoIBAQC32VsqFYWpTmV/\nEWrQULJrbub10kQSCMnghF5wmRfNkb0sydj2ZgYuFS/CJ/yGxN/Y2waUKmsCMeLw\nkAp6kSVQpBc28dUVJlKomS3OH4PSm/5tpczIsf4qd287f5XeDtG4kNKow2V9S2EE\n0C3hQj9J6ZJWpjY7SdXXQlsAQa5eLbvrL5jE5qQV90JyNOjwuI9yrwt0+K6jxn3i\nftckhWLmmcCxgE/siqq0go9NBCRcKFRkQjYm0BFSeuG7l5MG9+vQ0xxlpEQE9q6i\nIcyYB2gKQGvpei7bpatrJ3YOLivibpN5NAkVA96FGjlhCl8AnN9W+evRnqvQLCdG\nSTdTCHaVAoGBAOWRQQ0tZE6249Cxxx2rGnJlA9joI7vBcvFljl7ZQLkrJWXH8x2i\n7uoUxvtpmgQlZ9KpGGeoP2dOCGJ6injDi7Qfx5i1KkTLtJk0NXPItPxbrHtOmZrM\nv4drvCycOD1JImQLxEBmSKTBRkOtfLFwpP5Oq3ZOPvPkUFVWCNMBuf2rAoGBANq2\ntG0wkQBNWV18djiZKVwuks34DvtOcoFAJYPr++1RMR6gdewVQn6e3KxSl7o7J7E2\niwV7HEByxokPAIAgteFuqDPmCaWQ/sDQl6eOOkUCwWTjgse/t/PJaA5kgqSQNTsE\nO4famIS0ThcE/QxZC2rlGTEz950jRYP7GNibUNyzAoGBAIGgiYj1TqSb5PvcxsBb\n820Q2SFLw5GrZEomvEOWjVOBp3ZXd1IOxLVs0gb41DzvGjb7wIoXmOWuTFG/PB2A\n3YvyPfRep+V82ReBQYWFmZy97yEZeubMIoJHNVRDSgZhG4g+lKyAlRhjAlgIyFYx\ncxkeNvdwq19wVmQ5VnY/jVRNAoGAGt5FDgDgX0whRVXL5CoUpalnCXyGwqKheHVb\n5nfwC/hkc2G8+tKlx45Wh6jh0NQBjUipDXRRRS2UbDP2mMbr8RS5/x4sYzWLxj4Z\n01Cqod2zymQUpdtMittcOCBq2DKLB4P+mDLnd636xeMr/v9VYr1gOeYrbhduK8eG\nBt4VsfcCgYAW7a4WgLaVstYHeckMV9WLkVOS6bFL8L3Lgg/w5aemkzxOP9RMCFbx\nML7BPndcNfbycKl0qUoqZkwCkMWrEDRxHBv5OgfBREbzAtpdrJlVEWljm1B/o5pz\nS0S1HSB7bDluDNx3azBdI8gs5eQ0ldpImCZ4wj1RJxEy97JHnUGACQ==\n-----END RSA PRIVATE KEY-----\n", - "config": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n api-version: v1\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM0VENDQWNtZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFTTVJBd0RnWURWUVFERXdkcmRXSmwKTFdOaE1CNFhEVEl5TURNeE5ESXdOVGd6TkZvWERUTXlNRE14TVRJd05UZ3pORm93RWpFUU1BNEdBMVVFQXhNSAphM1ZpWlMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5KSUpyZkY4c2RqCnZMWHYwVTg3U1IxeHdtZHRvWGFsZUVObDcvVExIeGhQei9rSllMZkNVRG1nekJqMldnc2RGQUcwZUhnaDZIeUEKVXlBeisrM0tnUXlqV0JSSzNKTGZyQUV2SjJ2NG53aDBFTWVZV0YrdUVldWdCcmdqMTliZ3VCUkhucEpyZkx2OApCSWNTV1lGc3hPb2VTWUVncE1kaXN6djhPdUJiYjk4L1dzd29TUGNCbDdUMytqRnZraUhlcGljbS9NOVdhMXN5CjlzeWpoN0pxQVpYTFdiZU1zR2Ezb0NueVRYRUlXbkI4L3hKYWY1MVdIK3dVU2NDUXkxcDkwR3JWNEltazhBU0sKa254UEpnanVGWGtEUGlmV3Nva0x6R3V3Z3dKZHJ4WGxlc09VWmIrRmoybU9NbUprZnJzQUFWK3Y5ZHFOVnl2RQpHMHZ2cHpkdEg4a0NBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CCkFmOHdIUVlEVlIwT0JCWUVGTk8wY0EvNy95QmxITnVRazBwUFVzM3M2d2E2TUEwR0NTcUdTSWIzRFFFQkN3VUEKQTRJQkFRQmpYeXVZaFZETWZ6OFZ3UnlDRjQ5SmUwRy9tWGg5YXZrYWRtMTlkWTBJb2l6ZkRkQkNhRzFpcjdtdQpnckFzdkZEcG9jTWZjV1pMK0lJOGphQkZFOXlPUDFWbWd1a3RsKzUvNnVqTTU5cjZETkpxNDI2UzlTWWdDYzRKCmZSQkRONW5qbXJqM3JPL0pYSHdHRFBvZjNXd3duMEVTQXdCa0pOVjN6dmEvdFhRekVMclRMa05SVWVZMHJreTUKKzlpK0liR1Zta21PbHR6ckRtQVllVzRjNktET0ZMc3lFZjdFbWoyOU91TjduY21HVmxRc01uRTBrQ01DRWd3WApEY3RNVklDZjQ2a2ZSejBBREk3b3Fxay9MZW9lNXk1cEpXMlJQbUJnU1Fwb2lsbjd0VTlYK21na3ZJajJXSmlxCllKMzQ1Z0RBU2VTMk55cXFkVTE5VnF2d2ErajgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n server: \"https://44.203.109.17:6443\"\n name: \"local\"\ncontexts:\n- context:\n cluster: \"local\"\n user: \"kube-admin-local\"\n name: \"local\"\ncurrent-context: \"local\"\nusers:\n- name: \"kube-admin-local\"\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDakNDQWZLZ0F3SUJBZ0lJRFM1VmYxWEkyREV3RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHlNakF6TVRReU1EVTRNelJhRncwek1qQXpNVEV5TURVNE16WmFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXhDR0lkWVFvNnB3ODRUUlh6UEV3V2hVYW9wMkUKZXBXTzd5bGZCd0RGeUp2RE5COXBMeEJLc1RuVHBvbnJKcGtGSHN0dDNRSXRES0pqMERDMzNYcFRjU083amdxWAp6Z0lzcUs5cDBEVlk5djU1bUg5YnBFU05sYStzUlBQelBSMHVlMTNIUGVjeXZ3UmRRdXpVY21XYkE1LzA3dGllCnVXNERXTHRVckxqM0lLcEhid1AzaXF4aU5YSXZHVzR0TG1mNFdFUmhiUitCMGdnTTVOckVsYzhJQVUwNXlLTlIKTk1ud25TQVV3ekJKWnhHQjJjNlE5NkVEaFNLN0FqdWV0RmFJRWduMW14RnJJTE5xcUVuTm5oV1k5ZlBhclpOSgprd1lhR3FlWXFHbWRhaCtKRHg4N204UEN4Y0VXSFk2N1B1NWRGNFVzNTc5aVNEQTdHTGdEMlh0U2tRSURBUUFCCm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3SHdZRFZSMGoKQkJnd0ZvQVUwN1J3RC92L0lHVWMyNUNUU2s5U3plenJCcm93RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUorNgowWEovbnV3UlpYem40SHdibVprZjdha0R6a1lGZExDaFNVa05NdkptOGtqZFZkd3hpajZCRmlNaHc3NDdwMkNQCjk3ZnFmcG5NMTRVVGI1dytVWHZYVmNnNExFYUgwSG9HbERYRnRZcS9MSit2b3AySEdtMjFTN2NPRzAwWGR1VjIKZ0FXOUpweEMvakdpNURuT0dzcDMzQ2diK3VmQVk1ME8zR3lkaHUzNjVsVG9YSlo0dVZPT1JXTE9JMDk5dlZPQQpicnBqenMvWkczc1JSVC92T3JkeDhhbXdZZS9RZ2xxQ2N4WkRtSExqSFlUOTRJM0lsU3IxRnBwRm8xVGFmSXVNCjJxUVpjUjVGVVo2dms3S3o3N0RxN3JDdERlNGxndTRNK0pRWjl2WWVzU1gxWjJBRGxHS1NPUkpRRzlXNW9uenIKK3FBeTVray9KcC94SGtGOXAwMD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeENHSWRZUW82cHc4NFRSWHpQRXdXaFVhb3AyRWVwV083eWxmQndERnlKdkROQjlwCkx4QktzVG5UcG9uckpwa0ZIc3R0M1FJdERLSmowREMzM1hwVGNTTzdqZ3FYemdJc3FLOXAwRFZZOXY1NW1IOWIKcEVTTmxhK3NSUFB6UFIwdWUxM0hQZWN5dndSZFF1elVjbVdiQTUvMDd0aWV1VzREV0x0VXJMajNJS3BIYndQMwppcXhpTlhJdkdXNHRMbWY0V0VSaGJSK0IwZ2dNNU5yRWxjOElBVTA1eUtOUk5NbnduU0FVd3pCSlp4R0IyYzZRCjk2RURoU0s3QWp1ZXRGYUlFZ24xbXhGcklMTnFxRW5ObmhXWTlmUGFyWk5Ka3dZYUdxZVlxR21kYWgrSkR4ODcKbThQQ3hjRVdIWTY3UHU1ZEY0VXM1NzlpU0RBN0dMZ0QyWHRTa1FJREFRQUJBb0lCQVFDMzJWc3FGWVdwVG1WLwpFV3JRVUxKcmJ1YjEwa1FTQ01uZ2hGNXdtUmZOa2Iwc3lkajJaZ1l1RlMvQ0oveUd4Ti9ZMndhVUttc0NNZUx3CmtBcDZrU1ZRcEJjMjhkVVZKbEtvbVMzT0g0UFNtLzV0cGN6SXNmNHFkMjg3ZjVYZUR0RzRrTktvdzJWOVMyRUUKMEMzaFFqOUo2WkpXcGpZN1NkWFhRbHNBUWE1ZUxidnJMNWpFNXFRVjkwSnlOT2p3dUk5eXJ3dDArSzZqeG4zaQpmdGNraFdMbW1jQ3hnRS9zaXFxMGdvOU5CQ1JjS0ZSa1FqWW0wQkZTZXVHN2w1TUc5K3ZRMHh4bHBFUUU5cTZpCkljeVlCMmdLUUd2cGVpN2JwYXRySjNZT0xpdmlicE41TkFrVkE5NkZHamxoQ2w4QW5OOVcrZXZSbnF2UUxDZEcKU1RkVENIYVZBb0dCQU9XUlFRMHRaRTYyNDlDeHh4MnJHbkpsQTlqb0k3dkJjdkZsamw3WlFMa3JKV1hIOHgyaQo3dW9VeHZ0cG1nUWxaOUtwR0dlb1AyZE9DR0o2aW5qRGk3UWZ4NWkxS2tUTHRKazBOWFBJdFB4YnJIdE9tWnJNCnY0ZHJ2Q3ljT0QxSkltUUx4RUJtU0tUQlJrT3RmTEZ3cFA1T3EzWk9QdlBrVUZWV0NOTUJ1ZjJyQW9HQkFOcTIKdEcwd2tRQk5XVjE4ZGppWktWd3VrczM0RHZ0T2NvRkFKWVByKysxUk1SNmdkZXdWUW42ZTNLeFNsN283SjdFMgppd1Y3SEVCeXhva1BBSUFndGVGdXFEUG1DYVdRL3NEUWw2ZU9Pa1VDd1dUamdzZS90L1BKYUE1a2dxU1FOVHNFCk80ZmFtSVMwVGhjRS9ReFpDMnJsR1RFejk1MGpSWVA3R05pYlVOeXpBb0dCQUlHZ2lZajFUcVNiNVB2Y3hzQmIKODIwUTJTRkx3NUdyWkVvbXZFT1dqVk9CcDNaWGQxSU94TFZzMGdiNDFEenZHamI3d0lvWG1PV3VURkcvUEIyQQozWXZ5UGZSZXArVjgyUmVCUVlXRm1aeTk3eUVaZXViTUlvSkhOVlJEU2daaEc0ZytsS3lBbFJoakFsZ0l5Rll4CmN4a2VOdmR3cTE5d1ZtUTVWblkvalZSTkFvR0FHdDVGRGdEZ1gwd2hSVlhMNUNvVXBhbG5DWHlHd3FLaGVIVmIKNW5md0MvaGtjMkc4K3RLbHg0NVdoNmpoME5RQmpVaXBEWFJSUlMyVWJEUDJtTWJyOFJTNS94NHNZeldMeGo0WgowMUNxb2QyenltUVVwZHRNaXR0Y09DQnEyREtMQjRQK21ETG5kNjM2eGVNci92OVZZcjFnT2VZcmJoZHVLOGVHCkJ0NFZzZmNDZ1lBVzdhNFdnTGFWc3RZSGVja01WOVdMa1ZPUzZiRkw4TDNMZ2cvdzVhZW1renhPUDlSTUNGYngKTUw3QlBuZGNOZmJ5Y0tsMHFVb3Faa3dDa01XckVEUnhIQnY1T2dmQlJFYnpBdHBkckpsVkVXbGptMUIvbzVwegpTMFMxSFNCN2JEbHVETngzYXpCZEk4Z3M1ZVEwbGRwSW1DWjR3ajFSSnhFeTk3SkhuVUdBQ1E9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", + "config": "apiVersion: v1\nkind: Config\nclusters:\n- cluster:\n api-version: v1\n certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM0VENDQWNtZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFTTVJBd0RnWURWUVFERXdkcmRXSmwKTFdOaE1CNFhEVEl5TURNeE5ESXdOVGd6TkZvWERUTXlNRE14TVRJd05UZ3pORm93RWpFUU1BNEdBMVVFQXhNSAphM1ZpWlMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5KSUpyZkY4c2RqCnZMWHYwVTg3U1IxeHdtZHRvWGFsZUVObDcvVExIeGhQei9rSllMZkNVRG1nekJqMldnc2RGQUcwZUhnaDZIeUEKVXlBeisrM0tnUXlqV0JSSzNKTGZyQUV2SjJ2NG53aDBFTWVZV0YrdUVldWdCcmdqMTliZ3VCUkhucEpyZkx2OApCSWNTV1lGc3hPb2VTWUVncE1kaXN6djhPdUJiYjk4L1dzd29TUGNCbDdUMytqRnZraUhlcGljbS9NOVdhMXN5CjlzeWpoN0pxQVpYTFdiZU1zR2Ezb0NueVRYRUlXbkI4L3hKYWY1MVdIK3dVU2NDUXkxcDkwR3JWNEltazhBU0sKa254UEpnanVGWGtEUGlmV3Nva0x6R3V3Z3dKZHJ4WGxlc09VWmIrRmoybU9NbUprZnJzQUFWK3Y5ZHFOVnl2RQpHMHZ2cHpkdEg4a0NBd0VBQWFOQ01FQXdEZ1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CCkFmOHdIUVlEVlIwT0JCWUVGTk8wY0EvNy95QmxITnVRazBwUFVzM3M2d2E2TUEwR0NTcUdTSWIzRFFFQkN3VUEKQTRJQkFRQmpYeXVZaFZETWZ6OFZ3UnlDRjQ5SmUwRy9tWGg5YXZrYWRtMTlkWTBJb2l6ZkRkQkNhRzFpcjdtdQpnckFzdkZEcG9jTWZjV1pMK0lJOGphQkZFOXlPUDFWbWd1a3RsKzUvNnVqTTU5cjZETkpxNDI2UzlTWWdDYzRKCmZSQkRONW5qbXJqM3JPL0pYSHdHRFBvZjNXd3duMEVTQXdCa0pOVjN6dmEvdFhRekVMclRMa05SVWVZMHJreTUKKzlpK0liR1Zta21PbHR6ckRtQVllVzRjNktET0ZMc3lFZjdFbWoyOU91TjduY21HVmxRc01uRTBrQ01DRWd3WApEY3RNVklDZjQ2a2ZSejBBREk3b3Fxay9MZW9lNXk1cEpXMlJQbUJnU1Fwb2lsbjd0VTlYK21na3ZJajJXSmlxCllKMzQ1Z0RBU2VTMk55cXFkVTE5VnF2d2ErajgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n server: \"https://172.31.6.220:6443\"\n name: \"local\"\ncontexts:\n- context:\n cluster: \"local\"\n user: \"kube-admin-local\"\n name: \"local\"\ncurrent-context: \"local\"\nusers:\n- name: \"kube-admin-local\"\n user:\n client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURDakNDQWZLZ0F3SUJBZ0lJWlliMkprVEtLS2t3RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHlNakF6TVRReU1EVTRNelJhRncwek1qQXpNVFV3TXpVME5USmFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXhDR0lkWVFvNnB3ODRUUlh6UEV3V2hVYW9wMkUKZXBXTzd5bGZCd0RGeUp2RE5COXBMeEJLc1RuVHBvbnJKcGtGSHN0dDNRSXRES0pqMERDMzNYcFRjU083amdxWAp6Z0lzcUs5cDBEVlk5djU1bUg5YnBFU05sYStzUlBQelBSMHVlMTNIUGVjeXZ3UmRRdXpVY21XYkE1LzA3dGllCnVXNERXTHRVckxqM0lLcEhid1AzaXF4aU5YSXZHVzR0TG1mNFdFUmhiUitCMGdnTTVOckVsYzhJQVUwNXlLTlIKTk1ud25TQVV3ekJKWnhHQjJjNlE5NkVEaFNLN0FqdWV0RmFJRWduMW14RnJJTE5xcUVuTm5oV1k5ZlBhclpOSgprd1lhR3FlWXFHbWRhaCtKRHg4N204UEN4Y0VXSFk2N1B1NWRGNFVzNTc5aVNEQTdHTGdEMlh0U2tRSURBUUFCCm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3SHdZRFZSMGoKQkJnd0ZvQVUwN1J3RC92L0lHVWMyNUNUU2s5U3plenJCcm93RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUNVVAoyd2hCYm11K2R4QUNueWZPNlhXZzZqNi9IenBYV1RLcWpZUmhNNzJOeVFaRzAxaVJHUXFoakR4dVlRVlE1QmtCCmQyM1dUOUV6UFdPa3BGd0k2SzFKWDBIbmpoWHBZK3dyVDF4Y21CZ0M3RlQ4RWNVd0R5UHl3cXFjREMrTk9mT24KUngrWTZwK3AweEJQMkl4TzA5UjByMjBjc1dtdER0UEJoZ2hOd0E4d0cvUkk2cHRzaVdIZ0JGRHVtNEZ6OERCUwpkdGNGL3Y5cFRHUkJBMGxiTGNOUllGU2ZYLzhCTmVtS2Y3UEt0YWhpaE1hZkhhbEZPUWdDNU9ra0huSGVicUo1CkxBQjI5aW9rWVJ2dmVsekdyUDlBeVVOMFZCRXp5M05TMFIwTmdHVnI2Rmw5TVREYmNiTmt0VVRVdldxd3VNSW0KbTNnZDhXVXRaUnRIYnd2N0F4Zz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=\n client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeENHSWRZUW82cHc4NFRSWHpQRXdXaFVhb3AyRWVwV083eWxmQndERnlKdkROQjlwCkx4QktzVG5UcG9uckpwa0ZIc3R0M1FJdERLSmowREMzM1hwVGNTTzdqZ3FYemdJc3FLOXAwRFZZOXY1NW1IOWIKcEVTTmxhK3NSUFB6UFIwdWUxM0hQZWN5dndSZFF1elVjbVdiQTUvMDd0aWV1VzREV0x0VXJMajNJS3BIYndQMwppcXhpTlhJdkdXNHRMbWY0V0VSaGJSK0IwZ2dNNU5yRWxjOElBVTA1eUtOUk5NbnduU0FVd3pCSlp4R0IyYzZRCjk2RURoU0s3QWp1ZXRGYUlFZ24xbXhGcklMTnFxRW5ObmhXWTlmUGFyWk5Ka3dZYUdxZVlxR21kYWgrSkR4ODcKbThQQ3hjRVdIWTY3UHU1ZEY0VXM1NzlpU0RBN0dMZ0QyWHRTa1FJREFRQUJBb0lCQVFDMzJWc3FGWVdwVG1WLwpFV3JRVUxKcmJ1YjEwa1FTQ01uZ2hGNXdtUmZOa2Iwc3lkajJaZ1l1RlMvQ0oveUd4Ti9ZMndhVUttc0NNZUx3CmtBcDZrU1ZRcEJjMjhkVVZKbEtvbVMzT0g0UFNtLzV0cGN6SXNmNHFkMjg3ZjVYZUR0RzRrTktvdzJWOVMyRUUKMEMzaFFqOUo2WkpXcGpZN1NkWFhRbHNBUWE1ZUxidnJMNWpFNXFRVjkwSnlOT2p3dUk5eXJ3dDArSzZqeG4zaQpmdGNraFdMbW1jQ3hnRS9zaXFxMGdvOU5CQ1JjS0ZSa1FqWW0wQkZTZXVHN2w1TUc5K3ZRMHh4bHBFUUU5cTZpCkljeVlCMmdLUUd2cGVpN2JwYXRySjNZT0xpdmlicE41TkFrVkE5NkZHamxoQ2w4QW5OOVcrZXZSbnF2UUxDZEcKU1RkVENIYVZBb0dCQU9XUlFRMHRaRTYyNDlDeHh4MnJHbkpsQTlqb0k3dkJjdkZsamw3WlFMa3JKV1hIOHgyaQo3dW9VeHZ0cG1nUWxaOUtwR0dlb1AyZE9DR0o2aW5qRGk3UWZ4NWkxS2tUTHRKazBOWFBJdFB4YnJIdE9tWnJNCnY0ZHJ2Q3ljT0QxSkltUUx4RUJtU0tUQlJrT3RmTEZ3cFA1T3EzWk9QdlBrVUZWV0NOTUJ1ZjJyQW9HQkFOcTIKdEcwd2tRQk5XVjE4ZGppWktWd3VrczM0RHZ0T2NvRkFKWVByKysxUk1SNmdkZXdWUW42ZTNLeFNsN283SjdFMgppd1Y3SEVCeXhva1BBSUFndGVGdXFEUG1DYVdRL3NEUWw2ZU9Pa1VDd1dUamdzZS90L1BKYUE1a2dxU1FOVHNFCk80ZmFtSVMwVGhjRS9ReFpDMnJsR1RFejk1MGpSWVA3R05pYlVOeXpBb0dCQUlHZ2lZajFUcVNiNVB2Y3hzQmIKODIwUTJTRkx3NUdyWkVvbXZFT1dqVk9CcDNaWGQxSU94TFZzMGdiNDFEenZHamI3d0lvWG1PV3VURkcvUEIyQQozWXZ5UGZSZXArVjgyUmVCUVlXRm1aeTk3eUVaZXViTUlvSkhOVlJEU2daaEc0ZytsS3lBbFJoakFsZ0l5Rll4CmN4a2VOdmR3cTE5d1ZtUTVWblkvalZSTkFvR0FHdDVGRGdEZ1gwd2hSVlhMNUNvVXBhbG5DWHlHd3FLaGVIVmIKNW5md0MvaGtjMkc4K3RLbHg0NVdoNmpoME5RQmpVaXBEWFJSUlMyVWJEUDJtTWJyOFJTNS94NHNZeldMeGo0WgowMUNxb2QyenltUVVwZHRNaXR0Y09DQnEyREtMQjRQK21ETG5kNjM2eGVNci92OVZZcjFnT2VZcmJoZHVLOGVHCkJ0NFZzZmNDZ1lBVzdhNFdnTGFWc3RZSGVja01WOVdMa1ZPUzZiRkw4TDNMZ2cvdzVhZW1renhPUDlSTUNGYngKTUw3QlBuZGNOZmJ5Y0tsMHFVb3Faa3dDa01XckVEUnhIQnY1T2dmQlJFYnpBdHBkckpsVkVXbGptMUIvbzVwegpTMFMxSFNCN2JEbHVETngzYXpCZEk4Z3M1ZVEwbGRwSW1DWjR3ajFSSnhFeTk3SkhuVUdBQ1E9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=", "name": "kube-admin", "commonName": "kube-admin", "ouName": "system:masters", @@ -210,10 +210,10 @@ "keyEnvName": "KUBE_ADMIN_KEY", "keyPath": "/etc/kubernetes/ssl/kube-admin-key.pem", "configEnvName": "KUBECFG_KUBE_ADMIN", - "configPath": "./kube_config_cluster.yml" + "configPath": "./kube_config_rancher-cluster.yml" }, "kube-apiserver": { - "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDkDCCAnigAwIBAgIISdxqe2KNiiwwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTEyMDU4MzVaMBkxFzAV\nBgNVBAMTDmt1YmUtYXBpc2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAqsz+dPbO+eYhao0NVktKi8IcWZ7CzEq8bIXZ4XQw3jUhZbdP+5Tp+16g\n1YW4VnAT2JLSrtgvIw2lkv7a7EjZwhWc3wqDzxmOLF/N7MI7N5haQLA0fSwiX5Tj\ngFY05IflziFqNUMUtyL93K8uG4TGfNilFFdumJVhR/WJLwJ+qC3vOYjmCnD/EC+e\njK/Gl6HkYbZaoNGw78UsaKGzmkeb91upx5RveILrPeD0h21Ds9kGOI8tXDrq+L1B\nSSpAQskSsPJAbb+xLFpvTKqH6m/dxp3J5hlUpxSK6hxqtTMEUymoF5iTgfKHdCUk\n/aZgRdiNbGhSMPAWaiD1WLT6ajN1bQIDAQABo4HiMIHfMA4GA1UdDwEB/wQEAwIF\noDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU07Rw\nD/v/IGUc25CTSk9SzezrBrowgYwGA1UdEQSBhDCBgYIJbG9jYWxob3N0ggprdWJl\ncm5ldGVzghJrdWJlcm5ldGVzLmRlZmF1bHSCFmt1YmVybmV0ZXMuZGVmYXVsdC5z\ndmOCJGt1YmVybmV0ZXMuZGVmYXVsdC5zdmMuY2x1c3Rlci5sb2NhbIcELMttEYcE\nrB8G3IcEfwAAAYcECisAATANBgkqhkiG9w0BAQsFAAOCAQEAiOlyRFcupcb9hLWL\n0e/hVTiH2qO/h3vSJ87kNmU/hNJnLPzqU0HNVXVEwiUhZGf/g3/3kl+QSwgxR/Fv\nkrFxEdOjKBwqskHmmrKpurAamDtQlqsNlSpTmoCDvP3xpWv4qdLtF6nSIJ4f/AVk\nKS5NIA5GEOnNB45s69b7tOpdq0qEuRCn09egOkPAkoZ5yWoeWm83Qf9L8L57JreJ\n7AI1arEqT3WRCufc4KonhooWKfQ9qwiI29Y+bz6u65buYPonmv1mh3gmyppa3zjm\nmMi7BSQZkaDlXS+DpxZRJoKih/5KDoq//N9X+94P2Efui2OndCwtHW+kOy2GmJxZ\nL8TEMQ==\n-----END CERTIFICATE-----\n", + "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDiDCCAnCgAwIBAgIIYJ7AihRLHmgwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTUwMzQ0MzlaMBkxFzAV\nBgNVBAMTDmt1YmUtYXBpc2VydmVyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAqsz+dPbO+eYhao0NVktKi8IcWZ7CzEq8bIXZ4XQw3jUhZbdP+5Tp+16g\n1YW4VnAT2JLSrtgvIw2lkv7a7EjZwhWc3wqDzxmOLF/N7MI7N5haQLA0fSwiX5Tj\ngFY05IflziFqNUMUtyL93K8uG4TGfNilFFdumJVhR/WJLwJ+qC3vOYjmCnD/EC+e\njK/Gl6HkYbZaoNGw78UsaKGzmkeb91upx5RveILrPeD0h21Ds9kGOI8tXDrq+L1B\nSSpAQskSsPJAbb+xLFpvTKqH6m/dxp3J5hlUpxSK6hxqtTMEUymoF5iTgfKHdCUk\n/aZgRdiNbGhSMPAWaiD1WLT6ajN1bQIDAQABo4HaMIHXMA4GA1UdDwEB/wQEAwIF\noDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwHwYDVR0jBBgwFoAU07Rw\nD/v/IGUc25CTSk9SzezrBrowgYQGA1UdEQR9MHuCCWxvY2FsaG9zdIIKa3ViZXJu\nZXRlc4ISa3ViZXJuZXRlcy5kZWZhdWx0ghZrdWJlcm5ldGVzLmRlZmF1bHQuc3Zj\ngiRrdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWyHBKwfBtyHBH8A\nAAGHBAorAAEwDQYJKoZIhvcNAQELBQADggEBACBwX9lB65eW19Fi1S3QZHBREjlP\npMRPL20WYUQZ8306pB9B3zR8iSyYCH0rhGYQ3+6GF7iR8aNNQ9IoY8iEFeKyrGRI\nQlrnwr0En+yKJFEcHAP1n9q/ODLo5cRdCuQqA6RM/PKcULfp6OKxEkuoPA2v2ItA\nEfzJRO3wylNLRGn6jIvP1l31NJ1n/NDyF9i4XGWncOTn2CvGx6WmQZK5aAd8/JLp\nIUmhLmsaMiSwg580Oj6Pc7ppTnQ8KBL4h6ddEcTvBr8rRTEq0fOxjRlP1ue10k/P\nWNXBL5y8aLryC6vMEZQhNlTC9ibGRKk4cGTu7gvsDe/j3FwRIDdxEDGQEeU=\n-----END CERTIFICATE-----\n", "keyPEM": "-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAqsz+dPbO+eYhao0NVktKi8IcWZ7CzEq8bIXZ4XQw3jUhZbdP\n+5Tp+16g1YW4VnAT2JLSrtgvIw2lkv7a7EjZwhWc3wqDzxmOLF/N7MI7N5haQLA0\nfSwiX5TjgFY05IflziFqNUMUtyL93K8uG4TGfNilFFdumJVhR/WJLwJ+qC3vOYjm\nCnD/EC+ejK/Gl6HkYbZaoNGw78UsaKGzmkeb91upx5RveILrPeD0h21Ds9kGOI8t\nXDrq+L1BSSpAQskSsPJAbb+xLFpvTKqH6m/dxp3J5hlUpxSK6hxqtTMEUymoF5iT\ngfKHdCUk/aZgRdiNbGhSMPAWaiD1WLT6ajN1bQIDAQABAoIBABb+iBdJDu5XzBHj\nMXN3qW6NUHHETOdh/GID1yRiFx4jOv7Nogf1sVZ1E+QLH5kLd7CFe7WsRxRKBwt2\nIhUDbcWSUU85xCsCfsB8mWWRdJV0floNHtPnOC10BvjFIlPN8+M/XmQTRtus605l\niyiLRImURQ0rBCmomrMsXC6nAFQ1uprm+9JZZcti/XNVjGKjAL0SZOFenD4LhMBh\n9JHhKnkBRzcyk3Dr3vcSn0X4VgCpT8iUUnJuEZMeJTPUmB6EY1DfGOyLY6q5RArC\necr5SxLLVH5d8Zz3EnPbCVQ7wQqV1knll+RyHRZ32RwXg5XJnFBpLxSlzwtb2KVC\nHAgV1cECgYEA1Ew5p1D5DwJssZo57ZfAuMLjsJSSmAR/bAeXqEa+Im1wgQa5GaGg\n2LHRXjUPa40VKTCgktoi4kDRa6n0MyWZ7jvWmkFBdtDvkaD7F+Y7H+nJV6as48vo\nV7tuiAa3h0pVDLv5ifUCYmyqGM8WGNbh2yi71t1P53lD3k+ly766bPECgYEAzfXw\nX60LL17zrPWffg+YL8RznLydaFfiAOlU4CCuZpZB2Y6yHYkkhS/zM04c2fNP724B\nBwCzYXDt8XoiwfYzwrom4kY/1uPgljwbeUJak3CmZBjg/ram3RFUsBJKtMM6E4Rc\noL84lG4jSgs0g4PR345m8oaFeCuJCH7s9xI/gD0CgYBsCtL4lNv7yIcap9u9UBLT\ntNN9xU8JsJhMmVyUVlRjXwD3mT1QjxI11eEwqZ5MZQOU79t4gS1pqgUqXtcZxJQf\nSzK/VGCFoHWbzqqbEh+a8Tb3taqdT+PR6mCpN4nlf23jSjMIA7oP7y9t6s5bG9jb\n2VInWoBU1EE2/Z/qHgnwcQKBgGL3/126RVmqAuXl0ZI95B9wAy4Z5HmzYUKW3NYm\nXielpFbqnuRadlYZyH+q1WpV5N9kuNGooIn+Phh/XBxgNlcoJG8u2pZkQhNvJrSK\nEgQvaYVH/zXmhyBLp6pD3+oktc+TFv+XY5TPp914rO9VdJA8WXPI+HHaWarfcvb2\nqdTxAoGAUYZzF6VbXPtAkgok8sqHWttJp1+MphfG7Z21AtQvvmiTjAVg/hq/d2HV\na/wi50dyX7g2AypIJYoRO5G52RgnN5RZWzONdWwQKqWdyMh9+ERJOn5OT54PMZYE\nDxTIC4deucuhG52f5857lwjdxp2hBQ3GExw0MUqdvFS4/6524q0=\n-----END RSA PRIVATE KEY-----\n", "config": "", "name": "kube-apiserver", @@ -283,7 +283,7 @@ "configPath": "/etc/kubernetes/ssl/kubecfg-kube-controller-manager.yaml" }, "kube-etcd-172-31-6-220": { - "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDizCCAnOgAwIBAgIIQDCI3bBdPXEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTEyMDU4MzZaMBQxEjAQ\nBgNVBAMTCWt1YmUtZXRjZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJjXyiO88dT79nZZZG/U4ofDqb8/Xqq3wwIAdlMSlkYXjFTWBne2OgO3gk3oRvPL\nXK80S6XKOh05nN43v40aBfxaarWp6AvG3eZS4kP3efY/3buZ2uIiiDnALs+logyR\nV987yKsQY12OzG2cJcubDqDNcBqvDGAQFPUqqDYNqdeW5JDmlLUtpuiPeoD+8CHA\n/rfmuTX61/bdtPfX6Ytkys8bthpO7+gPxSFLC9V4JJRjPpixbl6/MkR6UxPM7+XF\nNKcdCw5PgiFJyEAjXRi/6ts37BqsEw03HOP6qGr3UfOArZnsMo5nH1LW55noWEg3\nlmlbNLo9IgM6/gBtroFLTXkCAwEAAaOB4jCB3zAOBgNVHQ8BAf8EBAMCBaAwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFNO0cA/7/yBl\nHNuQk0pPUs3s6wa6MIGMBgNVHREEgYQwgYGCCWxvY2FsaG9zdIIKa3ViZXJuZXRl\nc4ISa3ViZXJuZXRlcy5kZWZhdWx0ghZrdWJlcm5ldGVzLmRlZmF1bHQuc3ZjgiRr\ndWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWyHBCzLbRGHBKwfBtyH\nBH8AAAGHBAorAAEwDQYJKoZIhvcNAQELBQADggEBAAUWUZ3nqcA77zP7Nx7ojmDE\nbYhNRN6SJBDZQS9ifERqGl+7XUonWi165mU3NU4oG5+ANpZ/Tk0QDzAgIkUQwh1o\nXPvMp9wyp1+Ui5Knthqf6WJzTc9EXBVuP7uhcDVgS7S1za4gSX1T9QMk36a3k+9Q\n8LiDWVuJfn20Eeylmn+JKfYH3q98nLim5LcTrbQ3jLNZjewgplYU1NvNgMkcIN88\n8dg1smplWnyqOXF1Xtzw1LZW51auboeKvx4OeBfKKYbV4x59PDEzhoHnksQda230\nq9e6vccaRybeM2KtBlw2hamwZmrDKJC3dsaCExK5Lj3tTtZJIWa1SB1gLIHbEag=\n-----END CERTIFICATE-----\n", + "certificatePEM": "-----BEGIN CERTIFICATE-----\nMIIDgzCCAmugAwIBAgIIIy9VUdW2NLEwDQYJKoZIhvcNAQELBQAwEjEQMA4GA1UE\nAxMHa3ViZS1jYTAeFw0yMjAzMTQyMDU4MzRaFw0zMjAzMTUwMzQ0MzlaMBQxEjAQ\nBgNVBAMTCWt1YmUtZXRjZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAJjXyiO88dT79nZZZG/U4ofDqb8/Xqq3wwIAdlMSlkYXjFTWBne2OgO3gk3oRvPL\nXK80S6XKOh05nN43v40aBfxaarWp6AvG3eZS4kP3efY/3buZ2uIiiDnALs+logyR\nV987yKsQY12OzG2cJcubDqDNcBqvDGAQFPUqqDYNqdeW5JDmlLUtpuiPeoD+8CHA\n/rfmuTX61/bdtPfX6Ytkys8bthpO7+gPxSFLC9V4JJRjPpixbl6/MkR6UxPM7+XF\nNKcdCw5PgiFJyEAjXRi/6ts37BqsEw03HOP6qGr3UfOArZnsMo5nH1LW55noWEg3\nlmlbNLo9IgM6/gBtroFLTXkCAwEAAaOB2jCB1zAOBgNVHQ8BAf8EBAMCBaAwHQYD\nVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMB8GA1UdIwQYMBaAFNO0cA/7/yBl\nHNuQk0pPUs3s6wa6MIGEBgNVHREEfTB7gglsb2NhbGhvc3SCCmt1YmVybmV0ZXOC\nEmt1YmVybmV0ZXMuZGVmYXVsdIIWa3ViZXJuZXRlcy5kZWZhdWx0LnN2Y4Ika3Vi\nZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FshwSsHwbchwR/AAABhwQK\nKwABMA0GCSqGSIb3DQEBCwUAA4IBAQB6QQXAJrtOXhjHHVHvVaN/agSQdliYPE7f\nsCaM71X0kXQ91FsoYNF97DEqDIyQ9GaAo9X5l/ygE4lMzqU/ucAGcjK0aQxGR8qk\n7DAlq6NHb4OWlNok8BZrYFnqEixGW9fusBEtQVgYA9kwKAPMwUicSpLKQKB7jiNi\nWU1GG+2wqKfFE8URmBvDRyxuaBK/6dvyrH52cg35abdS0LTf9mSlsUYhV2OxevVw\nzlJQxXHT+Iq2iKBSdEpLwdxqY6eSZZDhPSAxUQNP80zh4HQB7VAhnE2minSleGY9\nXmuybPGkMqlQqPFwH3nGMKezkeJQCDuuThPuBLrJuJgI7lCJGjSK\n-----END CERTIFICATE-----\n", "keyPEM": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAmNfKI7zx1Pv2dllkb9Tih8Opvz9eqrfDAgB2UxKWRheMVNYG\nd7Y6A7eCTehG88tcrzRLpco6HTmc3je/jRoF/FpqtanoC8bd5lLiQ/d59j/du5na\n4iKIOcAuz6WiDJFX3zvIqxBjXY7MbZwly5sOoM1wGq8MYBAU9SqoNg2p15bkkOaU\ntS2m6I96gP7wIcD+t+a5NfrX9t2099fpi2TKzxu2Gk7v6A/FIUsL1XgklGM+mLFu\nXr8yRHpTE8zv5cU0px0LDk+CIUnIQCNdGL/q2zfsGqwTDTcc4/qoavdR84Ctmewy\njmcfUtbnmehYSDeWaVs0uj0iAzr+AG2ugUtNeQIDAQABAoIBAHON0dmrI/quc+uO\nMg0KmimimFdrBZt0Sw7cYpjz2IEtlH8fQMyJDNt6hh14mwv+mBguJXM2rTEjOaIX\n6841+oiLo1mtFy6wL1vPFhnkpGS0bGNFMuL80Jk43ytGQnnV+OVhQZlzTmyRZaUJ\nBNomZKzWJQdHiMen4PBqS7pyIhJHa2/snLQsHG64zHHeXdNOPmwSQTGFCiAmvnpW\nmk0GPUGTFwc1lcft4eq4sC+46pyqjpjk01Vd+h7R14RQ8cLCErx+itHf2UsOt/km\nmf7y0WgGD82W5lWAZpCnNmISL2yIoVJIIKEaZidAXYOthqGjT2jjkvwEP/ORIfQK\nT9X7PrECgYEAyAzBTDy1oxvU2SAtcc6GgPRHg2ih3Kvrg8am8/zb9zP/lOBnw7Pn\nBXwufuIfevKQ2Lc5LwBQoM+Eh5C+L89WK3KT+2wfOfltRiUwbZ5pfLBsIxeTZ0pw\n+7tbvWwRK/u3Ge1N3LhH93E4Vqbuuk1In3g8TCLCWr3FIXCQQUuYVfsCgYEAw5cY\nzA1efPmxlSZ7ZaPpUt5XM014au3Gh70+qHNlaZtQlD7xS1dA0ODDYP13pptI/O/7\nFopiK7XANugDP7Ty/GYw8PY6D8L3QZA9lqTTDKrEjX5RlnjQW/iU9iYvCFFQ2jH0\nESIuPxTmxauDnkYb/gJHikqFMdSX3w59Pmsl9BsCgYEAiwWSL1DhSYDF4j4iVryX\nbHZWXFQSaDBxcxpSW6yVkK1qKCPq+G3FVmJ+TV8HUYHQd0qdSrSFU7vi9fL4uHD2\nCSuO+2KgMMHN1rlxdjxoQma4P4ravSVWbxo9Ht5C8LX1AOeQ/Jp0KNldtZo8vOuI\nVIpSHPbq6fSHUj3PghDuxJECgYAA+dUG1548E2bebqW4+Rtl7XQT7nQGXI9cCAaz\nAnhkEYFSbAn6LUJGiIiRCFK7gxTXJj9jemdI/owp+fhiLf30YnImEaRyha+EJTsZ\ncFMZQhTe+91eWdX4T4I2xDQB353+qLcmCryeVfVc0SFD/eeP2eUPfJWzjPMBCup3\nEEPNNwKBgQCCVBw5PBtJSdKbvmL8yM2L1Yy2vlYgPZHdQNRYQKnPHbYYlR+jWBEi\n0AGEqZFOhMohW4CtxMm0rqYdiebU3YJiTVJnL8mCC3ipLjnTxLQCjUhmJpiNS9L7\nZR40/2jbzzGaeh+EkVUt7/Fq+Ebm4yAhI4UfLWnm4UVQAS/tC1svkg==\n-----END RSA PRIVATE KEY-----\n", "config": "", "name": "kube-etcd-172-31-6-220", diff --git a/jenkins/build-prod-docker-images-for-ecr.sh b/jenkins/build-prod-docker-images-for-ecr.sh new file mode 100644 index 0000000..908ae67 --- /dev/null +++ b/jenkins/build-prod-docker-images-for-ecr.sh @@ -0,0 +1,10 @@ +docker build --force-rm -t "${IMAGE_TAG_ADMIN_SERVER}" "${WORKSPACE}/spring-petclinic-admin-server" +docker build --force-rm -t "${IMAGE_TAG_API_GATEWAY}" "${WORKSPACE}/spring-petclinic-api-gateway" +docker build --force-rm -t "${IMAGE_TAG_CONFIG_SERVER}" "${WORKSPACE}/spring-petclinic-config-server" +docker build --force-rm -t "${IMAGE_TAG_CUSTOMERS_SERVICE}" "${WORKSPACE}/spring-petclinic-customers-service" +docker build --force-rm -t "${IMAGE_TAG_DISCOVERY_SERVER}" "${WORKSPACE}/spring-petclinic-discovery-server" +docker build --force-rm -t "${IMAGE_TAG_HYSTRIX_DASHBOARD}" "${WORKSPACE}/spring-petclinic-hystrix-dashboard" +docker build --force-rm -t "${IMAGE_TAG_VETS_SERVICE}" "${WORKSPACE}/spring-petclinic-vets-service" +docker build --force-rm -t "${IMAGE_TAG_VISITS_SERVICE}" "${WORKSPACE}/spring-petclinic-visits-service" +docker build --force-rm -t "${IMAGE_TAG_GRAFANA_SERVICE}" "${WORKSPACE}/docker/grafana" +docker build --force-rm -t "${IMAGE_TAG_PROMETHEUS_SERVICE}" "${WORKSPACE}/docker/prometheus" diff --git a/jenkins/build-staging-docker-images-for-ecr.sh b/jenkins/build-staging-docker-images-for-ecr.sh new file mode 100644 index 0000000..908ae67 --- /dev/null +++ b/jenkins/build-staging-docker-images-for-ecr.sh @@ -0,0 +1,10 @@ +docker build --force-rm -t "${IMAGE_TAG_ADMIN_SERVER}" "${WORKSPACE}/spring-petclinic-admin-server" +docker build --force-rm -t "${IMAGE_TAG_API_GATEWAY}" "${WORKSPACE}/spring-petclinic-api-gateway" +docker build --force-rm -t "${IMAGE_TAG_CONFIG_SERVER}" "${WORKSPACE}/spring-petclinic-config-server" +docker build --force-rm -t "${IMAGE_TAG_CUSTOMERS_SERVICE}" "${WORKSPACE}/spring-petclinic-customers-service" +docker build --force-rm -t "${IMAGE_TAG_DISCOVERY_SERVER}" "${WORKSPACE}/spring-petclinic-discovery-server" +docker build --force-rm -t "${IMAGE_TAG_HYSTRIX_DASHBOARD}" "${WORKSPACE}/spring-petclinic-hystrix-dashboard" +docker build --force-rm -t "${IMAGE_TAG_VETS_SERVICE}" "${WORKSPACE}/spring-petclinic-vets-service" +docker build --force-rm -t "${IMAGE_TAG_VISITS_SERVICE}" "${WORKSPACE}/spring-petclinic-visits-service" +docker build --force-rm -t "${IMAGE_TAG_GRAFANA_SERVICE}" "${WORKSPACE}/docker/grafana" +docker build --force-rm -t "${IMAGE_TAG_PROMETHEUS_SERVICE}" "${WORKSPACE}/docker/prometheus" diff --git a/jenkins/jenkinsfile-petclinic-prod b/jenkins/jenkinsfile-petclinic-prod new file mode 100644 index 0000000..ad5d3cc --- /dev/null +++ b/jenkins/jenkinsfile-petclinic-prod @@ -0,0 +1,91 @@ +pipeline { + agent any + environment { + PATH=sh(script:"echo $PATH:/usr/local/bin", returnStdout:true).trim() + APP_NAME="petclinic" + APP_REPO_NAME="clarusway-repo/petclinic-app-prod" + AWS_ACCOUNT_ID=sh(script:'export PATH="$PATH:/usr/local/bin" && aws sts get-caller-identity --query Account --output text', returnStdout:true).trim() + AWS_REGION="us-east-1" + ECR_REGISTRY="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com" + RANCHER_URL="https://rancher.cloudevops.link" + // Get the project-id from Rancher UI (petclinic-cluster-staging namespace, View in API, copy projectId ) + RANCHER_CONTEXT="c-vgs2t:p-pfw9d" + //First part of projectID + CLUSTERID="c-vgs2t" + RANCHER_CREDS=credentials('rancher-petclinic-credentials') + } + stages { + stage('Package Application') { + steps { + echo 'Packaging the app into jars with maven' + sh ". ./jenkins/package-with-maven-container.sh" + } + } + stage('Prepare Tags for Production Docker Images') { + steps { + echo 'Preparing Tags for Production Docker Images' + script { + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-admin-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_ADMIN_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:admin-server-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-api-gateway/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_API_GATEWAY="${ECR_REGISTRY}/${APP_REPO_NAME}:api-gateway-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-config-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_CONFIG_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:config-server-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-customers-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_CUSTOMERS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:customers-service-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-discovery-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_DISCOVERY_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:discovery-server-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-hystrix-dashboard/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_HYSTRIX_DASHBOARD="${ECR_REGISTRY}/${APP_REPO_NAME}:hystrix-dashboard-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-vets-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_VETS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:vets-service-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-visits-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_VISITS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:visits-service-v${MVN_VERSION}-b${BUILD_NUMBER}" + env.IMAGE_TAG_GRAFANA_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:grafana-service" + env.IMAGE_TAG_PROMETHEUS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:prometheus-service" + } + } + } + stage('Build App Production Docker Images') { + steps { + echo 'Building App Production Images' + sh ". ./jenkins/build-prod-docker-images-for-ecr.sh" + sh 'docker image ls' + } + } + stage('Push Images to ECR Repo') { + steps { + echo "Pushing ${APP_NAME} App Images to ECR Repo" + sh ". ./jenkins/push-prod-docker-images-to-ecr.sh" + } + } + stage('Deploy App on Petclinic Kubernetes Cluster'){ + steps { + echo 'Deploying App on K8s Cluster' + sh "rancher login $RANCHER_URL --context $RANCHER_CONTEXT --token $RANCHER_CREDS_USR:$RANCHER_CREDS_PSW" + sh "envsubst < k8s/petclinic_chart/values-template.yaml > k8s/petclinic_chart/values.yaml" + sh "sed -i s/HELM_VERSION/${BUILD_NUMBER}/ k8s/petclinic_chart/Chart.yaml" + sh "rancher kubectl delete secret regcred -n petclinic-prod-ns || true" + sh """ + rancher kubectl create secret generic regcred -n petclinic-prod-ns \ + --from-file=.dockerconfigjson=$JENKINS_HOME/.docker/config.json \ + --type=kubernetes.io/dockerconfigjson + """ + sh "rm -f k8s/config" + sh "rancher cluster kf $CLUSTERID > k8s/config" + sh "chmod 400 k8s/config" + sh "helm repo add stable-petclinic s3://skoc-petclinic-helmchart/stable/myapp/" + sh "helm package k8s/petclinic_chart" + sh "helm s3 push petclinic_chart-${BUILD_NUMBER}.tgz stable-petclinic" + sh "helm repo update" + sh "AWS_REGION=$AWS_REGION helm upgrade --install petclinic-app-release stable-petclinic/petclinic_chart --version ${BUILD_NUMBER} --namespace petclinic-prod-ns --kubeconfig k8s/config" + } + } + } + post { + always { + echo 'Deleting all local images' + sh 'docker image prune -af' + } + } +} diff --git a/jenkins/jenkinsfile-petclinic-staging b/jenkins/jenkinsfile-petclinic-staging new file mode 100644 index 0000000..b61a5e4 --- /dev/null +++ b/jenkins/jenkinsfile-petclinic-staging @@ -0,0 +1,91 @@ +pipeline { + agent any + environment { + PATH=sh(script:"echo $PATH:/usr/local/bin", returnStdout:true).trim() + APP_NAME="petclinic" + APP_REPO_NAME="clarusway-repo/petclinic-app-staging" + AWS_ACCOUNT_ID=sh(script:'export PATH="$PATH:/usr/local/bin" && aws sts get-caller-identity --query Account --output text', returnStdout:true).trim() + AWS_REGION="us-east-1" + ECR_REGISTRY="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com" + RANCHER_URL="https://rancher.cloudevops.link" + // Get the project-id from Rancher UI (petclinic-cluster-staging namespace, View in API, copy projectId ) + RANCHER_CONTEXT="c-ggrt9:p-sn29v" + //First part of projectID + CLUSTERID="c-ggrt9" + RANCHER_CREDS=credentials('rancher-petclinic-credentials') + } + stages { + stage('Package Application') { + steps { + echo 'Packaging the app into jars with maven' + sh ". ./jenkins/package-with-maven-container.sh" + } + } + stage('Prepare Tags for Staging Docker Images') { + steps { + echo 'Preparing Tags for Staging Docker Images' + script { + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-admin-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_ADMIN_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:admin-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-api-gateway/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_API_GATEWAY="${ECR_REGISTRY}/${APP_REPO_NAME}:api-gateway-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-config-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_CONFIG_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:config-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-customers-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_CUSTOMERS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:customers-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-discovery-server/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_DISCOVERY_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:discovery-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-hystrix-dashboard/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_HYSTRIX_DASHBOARD="${ECR_REGISTRY}/${APP_REPO_NAME}:hystrix-dashboard-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-vets-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_VETS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:vets-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + MVN_VERSION=sh(script:'. ${WORKSPACE}/spring-petclinic-visits-service/target/maven-archiver/pom.properties && echo $version', returnStdout:true).trim() + env.IMAGE_TAG_VISITS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:visits-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" + env.IMAGE_TAG_GRAFANA_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:grafana-service" + env.IMAGE_TAG_PROMETHEUS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:prometheus-service" + } + } + } + stage('Build App Staging Docker Images') { + steps { + echo 'Building App Staging Images' + sh ". ./jenkins/build-staging-docker-images-for-ecr.sh" + sh 'docker image ls' + } + } + stage('Push Images to ECR Repo') { + steps { + echo "Pushing ${APP_NAME} App Images to ECR Repo" + sh ". ./jenkins/push-staging-docker-images-to-ecr.sh" + } + } + stage('Deploy App on Petclinic Kubernetes Cluster'){ + steps { + echo 'Deploying App on K8s Cluster' + sh "rancher login $RANCHER_URL --context $RANCHER_CONTEXT --token $RANCHER_CREDS_USR:$RANCHER_CREDS_PSW" + sh "envsubst < k8s/petclinic_chart/values-template.yaml > k8s/petclinic_chart/values.yaml" + sh "sed -i s/HELM_VERSION/${BUILD_NUMBER}/ k8s/petclinic_chart/Chart.yaml" + sh "rancher kubectl delete secret regcred -n petclinic-staging-ns || true" + sh """ + rancher kubectl create secret generic regcred -n petclinic-staging-ns \ + --from-file=.dockerconfigjson=$JENKINS_HOME/.docker/config.json \ + --type=kubernetes.io/dockerconfigjson + """ + sh "rm -f k8s/config" + sh "rancher cluster kf $CLUSTERID > k8s/config" + sh "chmod 400 k8s/config" + sh "helm repo add stable-petclinic s3://skoc-petclinic-helmchart/stable/myapp/" + sh "helm package k8s/petclinic_chart" + sh "helm s3 push petclinic_chart-${BUILD_NUMBER}.tgz stable-petclinic" + sh "helm repo update" + sh "AWS_REGION=$AWS_REGION helm upgrade --install petclinic-app-release stable-petclinic/petclinic_chart --version ${BUILD_NUMBER} --namespace petclinic-staging-ns --kubeconfig k8s/config" + } + } + } + post { + always { + echo 'Deleting all local images' + sh 'docker image prune -af' + } + } +} diff --git a/jenkins/prepare-tags-ecr-for-prod-docker-images.sh b/jenkins/prepare-tags-ecr-for-prod-docker-images.sh new file mode 100644 index 0000000..7fbe249 --- /dev/null +++ b/jenkins/prepare-tags-ecr-for-prod-docker-images.sh @@ -0,0 +1,18 @@ +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-admin-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_ADMIN_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:admin-server-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-api-gateway/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_API_GATEWAY="${ECR_REGISTRY}/${APP_REPO_NAME}:api-gateway-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-config-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_CONFIG_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:config-server-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-customers-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_CUSTOMERS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:customers-service-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-discovery-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_DISCOVERY_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:discovery-server-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-hystrix-dashboard/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_HYSTRIX_DASHBOARD="${ECR_REGISTRY}/${APP_REPO_NAME}:hystrix-dashboard-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-vets-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_VETS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:vets-service-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-visits-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_VISITS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:visits-service-v${MVN_VERSION}-b${BUILD_NUMBER}" +export IMAGE_TAG_GRAFANA_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:grafana-service" +export IMAGE_TAG_PROMETHEUS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:prometheus-service" diff --git a/jenkins/prepare-tags-ecr-for-staging-docker-images.sh b/jenkins/prepare-tags-ecr-for-staging-docker-images.sh new file mode 100644 index 0000000..7887e14 --- /dev/null +++ b/jenkins/prepare-tags-ecr-for-staging-docker-images.sh @@ -0,0 +1,18 @@ +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-admin-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_ADMIN_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:admin-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-api-gateway/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_API_GATEWAY="${ECR_REGISTRY}/${APP_REPO_NAME}:api-gateway-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-config-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_CONFIG_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:config-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-customers-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_CUSTOMERS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:customers-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-discovery-server/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_DISCOVERY_SERVER="${ECR_REGISTRY}/${APP_REPO_NAME}:discovery-server-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-hystrix-dashboard/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_HYSTRIX_DASHBOARD="${ECR_REGISTRY}/${APP_REPO_NAME}:hystrix-dashboard-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-vets-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_VETS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:vets-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +MVN_VERSION=$(. ${WORKSPACE}/spring-petclinic-visits-service/target/maven-archiver/pom.properties && echo $version) +export IMAGE_TAG_VISITS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:visits-service-staging-v${MVN_VERSION}-b${BUILD_NUMBER}" +export IMAGE_TAG_GRAFANA_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:grafana-service" +export IMAGE_TAG_PROMETHEUS_SERVICE="${ECR_REGISTRY}/${APP_REPO_NAME}:prometheus-service" diff --git a/jenkins/push-prod-docker-images-to-ecr.sh b/jenkins/push-prod-docker-images-to-ecr.sh new file mode 100644 index 0000000..d9d82b0 --- /dev/null +++ b/jenkins/push-prod-docker-images-to-ecr.sh @@ -0,0 +1,11 @@ +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY} +docker push "${IMAGE_TAG_ADMIN_SERVER}" +docker push "${IMAGE_TAG_API_GATEWAY}" +docker push "${IMAGE_TAG_CONFIG_SERVER}" +docker push "${IMAGE_TAG_CUSTOMERS_SERVICE}" +docker push "${IMAGE_TAG_DISCOVERY_SERVER}" +docker push "${IMAGE_TAG_HYSTRIX_DASHBOARD}" +docker push "${IMAGE_TAG_VETS_SERVICE}" +docker push "${IMAGE_TAG_VISITS_SERVICE}" +docker push "${IMAGE_TAG_GRAFANA_SERVICE}" +docker push "${IMAGE_TAG_PROMETHEUS_SERVICE}" diff --git a/jenkins/push-staging-docker-images-to-ecr.sh b/jenkins/push-staging-docker-images-to-ecr.sh new file mode 100644 index 0000000..d9d82b0 --- /dev/null +++ b/jenkins/push-staging-docker-images-to-ecr.sh @@ -0,0 +1,11 @@ +aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY} +docker push "${IMAGE_TAG_ADMIN_SERVER}" +docker push "${IMAGE_TAG_API_GATEWAY}" +docker push "${IMAGE_TAG_CONFIG_SERVER}" +docker push "${IMAGE_TAG_CUSTOMERS_SERVICE}" +docker push "${IMAGE_TAG_DISCOVERY_SERVER}" +docker push "${IMAGE_TAG_HYSTRIX_DASHBOARD}" +docker push "${IMAGE_TAG_VETS_SERVICE}" +docker push "${IMAGE_TAG_VISITS_SERVICE}" +docker push "${IMAGE_TAG_GRAFANA_SERVICE}" +docker push "${IMAGE_TAG_PROMETHEUS_SERVICE}" diff --git a/k8s/petclinic_chart/templates/mysql-server-deployment.yaml b/k8s/mysql-server-deployment.yaml similarity index 78% rename from k8s/petclinic_chart/templates/mysql-server-deployment.yaml rename to k8s/mysql-server-deployment.yaml index 783b4e6..092f388 100644 --- a/k8s/petclinic_chart/templates/mysql-server-deployment.yaml +++ b/k8s/mysql-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null labels: @@ -17,7 +17,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null labels: @@ -34,9 +34,9 @@ spec: ports: - containerPort: 3306 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] restartPolicy: Always status: {} diff --git a/k8s/petclinic_chart/Chart.yaml b/k8s/petclinic_chart/Chart.yaml index f956ed4..5f77e81 100644 --- a/k8s/petclinic_chart/Chart.yaml +++ b/k8s/petclinic_chart/Chart.yaml @@ -15,7 +15,7 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.1.2 +version: HELM_VERSION # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to diff --git a/k8s/petclinic_chart/templates/admin-server-deployment.yaml b/k8s/petclinic_chart/templates/admin-server-deployment.yaml index bc630a4..c7f9640 100644 --- a/k8s/petclinic_chart/templates/admin-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/admin-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -31,10 +31,10 @@ spec: ports: - containerPort: 9090 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/admin-server-service.yaml b/k8s/petclinic_chart/templates/admin-server-service.yaml index 29c6caa..fff54bb 100644 --- a/k8s/petclinic_chart/templates/admin-server-service.yaml +++ b/k8s/petclinic_chart/templates/admin-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/api-gateway-deployment.yaml b/k8s/petclinic_chart/templates/api-gateway-deployment.yaml index 397b9cd..279d9cd 100644 --- a/k8s/petclinic_chart/templates/api-gateway-deployment.yaml +++ b/k8s/petclinic_chart/templates/api-gateway-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.service.expose: '{{ .Values.DNS_NAME }}' kompose.service.type: nodeport @@ -20,7 +20,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.service.expose: '{{ .Values.DNS_NAME }}' kompose.service.type: nodeport @@ -35,10 +35,10 @@ spec: ports: - containerPort: 8080 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/api-gateway-ingress.yaml b/k8s/petclinic_chart/templates/api-gateway-ingress.yaml index 07e5be8..f791f86 100644 --- a/k8s/petclinic_chart/templates/api-gateway-ingress.yaml +++ b/k8s/petclinic_chart/templates/api-gateway-ingress.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.service.expose: '{{ .Values.DNS_NAME }}' kompose.service.type: nodeport diff --git a/k8s/petclinic_chart/templates/api-gateway-service.yaml b/k8s/petclinic_chart/templates/api-gateway-service.yaml index f5fdee5..c36a979 100644 --- a/k8s/petclinic_chart/templates/api-gateway-service.yaml +++ b/k8s/petclinic_chart/templates/api-gateway-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.service.expose: '{{ .Values.DNS_NAME }}' kompose.service.type: nodeport diff --git a/k8s/petclinic_chart/templates/config-server-deployment.yaml b/k8s/petclinic_chart/templates/config-server-deployment.yaml index 2780e33..17b79e0 100644 --- a/k8s/petclinic_chart/templates/config-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/config-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/config-server-service.yaml b/k8s/petclinic_chart/templates/config-server-service.yaml index 80aef2d..35b7c47 100644 --- a/k8s/petclinic_chart/templates/config-server-service.yaml +++ b/k8s/petclinic_chart/templates/config-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/customers-service-deployment.yaml b/k8s/petclinic_chart/templates/customers-service-deployment.yaml index b723b56..b610691 100644 --- a/k8s/petclinic_chart/templates/customers-service-deployment.yaml +++ b/k8s/petclinic_chart/templates/customers-service-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -31,10 +31,10 @@ spec: ports: - containerPort: 8081 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/customers-service-service.yaml b/k8s/petclinic_chart/templates/customers-service-service.yaml index 0340d08..88d967b 100644 --- a/k8s/petclinic_chart/templates/customers-service-service.yaml +++ b/k8s/petclinic_chart/templates/customers-service-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/discovery-server-deployment.yaml b/k8s/petclinic_chart/templates/discovery-server-deployment.yaml index 32eb8c0..6817076 100644 --- a/k8s/petclinic_chart/templates/discovery-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/discovery-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -32,9 +32,9 @@ spec: - containerPort: 8761 resources: {} initContainers: - - name: init-config-server - image: busybox - command: ['sh', '-c', 'until nc -z config-server:8888; do echo waiting for config-server; sleep 2; done;'] + - name: init-config-server + image: busybox + command: ['sh', '-c', 'until nc -z config-server:8888; do echo waiting for config-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/discovery-server-service.yaml b/k8s/petclinic_chart/templates/discovery-server-service.yaml index ede45dc..86a4d04 100644 --- a/k8s/petclinic_chart/templates/discovery-server-service.yaml +++ b/k8s/petclinic_chart/templates/discovery-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/grafana-server-deployment.yaml b/k8s/petclinic_chart/templates/grafana-server-deployment.yaml index 79debc8..82393bc 100644 --- a/k8s/petclinic_chart/templates/grafana-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/grafana-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -31,10 +31,10 @@ spec: ports: - containerPort: 3000 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/grafana-server-service.yaml b/k8s/petclinic_chart/templates/grafana-server-service.yaml index 45acbb2..8aeaf02 100644 --- a/k8s/petclinic_chart/templates/grafana-server-service.yaml +++ b/k8s/petclinic_chart/templates/grafana-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/hystrix-dashboard-deployment.yaml b/k8s/petclinic_chart/templates/hystrix-dashboard-deployment.yaml index b56a320..7791e46 100644 --- a/k8s/petclinic_chart/templates/hystrix-dashboard-deployment.yaml +++ b/k8s/petclinic_chart/templates/hystrix-dashboard-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -32,9 +32,9 @@ spec: - containerPort: 7979 resources: {} initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/hystrix-dashboard-service.yaml b/k8s/petclinic_chart/templates/hystrix-dashboard-service.yaml index 89463b7..6be7d1d 100644 --- a/k8s/petclinic_chart/templates/hystrix-dashboard-service.yaml +++ b/k8s/petclinic_chart/templates/hystrix-dashboard-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/mysql-server-service.yaml b/k8s/petclinic_chart/templates/mysql-server-service.yaml index 928ea39..2d9d755 100644 --- a/k8s/petclinic_chart/templates/mysql-server-service.yaml +++ b/k8s/petclinic_chart/templates/mysql-server-service.yaml @@ -2,18 +2,11 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose-local-db.yml kompose.version: 1.26.1 (a9d05d509) - creationTimestamp: null labels: io.kompose.service: mysql-server name: mysql-server spec: - ports: - - name: "3306" - port: 3306 - targetPort: 3306 - selector: - io.kompose.service: mysql-server -status: - loadBalancer: {} + type: ExternalName + externalName: petclinicdb.c7mnqunej0lj.us-east-1.rds.amazonaws.com # Change this line with the endpoint of your RDS. \ No newline at end of file diff --git a/k8s/petclinic_chart/templates/prometheus-server-deployment.yaml b/k8s/petclinic_chart/templates/prometheus-server-deployment.yaml index daec58f..63b4120 100644 --- a/k8s/petclinic_chart/templates/prometheus-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/prometheus-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -31,10 +31,10 @@ spec: ports: - containerPort: 9090 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/prometheus-server-service.yaml b/k8s/petclinic_chart/templates/prometheus-server-service.yaml index c30d807..f574d5a 100644 --- a/k8s/petclinic_chart/templates/prometheus-server-service.yaml +++ b/k8s/petclinic_chart/templates/prometheus-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/tracing-server-deployment.yaml b/k8s/petclinic_chart/templates/tracing-server-deployment.yaml index ca9cf53..a3eb415 100644 --- a/k8s/petclinic_chart/templates/tracing-server-deployment.yaml +++ b/k8s/petclinic_chart/templates/tracing-server-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null labels: @@ -17,7 +17,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null labels: @@ -32,9 +32,9 @@ spec: ports: - containerPort: 9411 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] restartPolicy: Always status: {} diff --git a/k8s/petclinic_chart/templates/tracing-server-service.yaml b/k8s/petclinic_chart/templates/tracing-server-service.yaml index 4d30910..3b5a7ad 100644 --- a/k8s/petclinic_chart/templates/tracing-server-service.yaml +++ b/k8s/petclinic_chart/templates/tracing-server-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null labels: diff --git a/k8s/petclinic_chart/templates/vets-service-deployment.yaml b/k8s/petclinic_chart/templates/vets-service-deployment.yaml index a93ea42..936bdff 100644 --- a/k8s/petclinic_chart/templates/vets-service-deployment.yaml +++ b/k8s/petclinic_chart/templates/vets-service-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -32,9 +32,9 @@ spec: - containerPort: 8083 resources: {} initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/vets-service-service.yaml b/k8s/petclinic_chart/templates/vets-service-service.yaml index c84ef13..2c08071 100644 --- a/k8s/petclinic_chart/templates/vets-service-service.yaml +++ b/k8s/petclinic_chart/templates/vets-service-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/templates/visits-service-deployment.yaml b/k8s/petclinic_chart/templates/visits-service-deployment.yaml index e9236e6..608cf97 100644 --- a/k8s/petclinic_chart/templates/visits-service-deployment.yaml +++ b/k8s/petclinic_chart/templates/visits-service-deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -18,7 +18,7 @@ spec: template: metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null @@ -31,10 +31,10 @@ spec: ports: - containerPort: 8082 resources: {} - initContainers: - - name: init-discovery-server - image: busybox - command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] + initContainers: + - name: init-discovery-server + image: busybox + command: ['sh', '-c', 'until nc -z discovery-server:8761; do echo waiting for discovery-server; sleep 2; done;'] imagePullSecrets: - name: regcred restartPolicy: Always diff --git a/k8s/petclinic_chart/templates/visits-service-service.yaml b/k8s/petclinic_chart/templates/visits-service-service.yaml index 483265b..9053737 100644 --- a/k8s/petclinic_chart/templates/visits-service-service.yaml +++ b/k8s/petclinic_chart/templates/visits-service-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: annotations: - kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates + kompose.cmd: kompose convert -f docker-compose.yml -o petclinic_chart/templates/ kompose.image-pull-secret: regcred kompose.version: 1.26.1 (a9d05d509) creationTimestamp: null diff --git a/k8s/petclinic_chart/values-template.yaml b/k8s/petclinic_chart/values-template.yaml index 2e051da..58be873 100644 --- a/k8s/petclinic_chart/values-template.yaml +++ b/k8s/petclinic_chart/values-template.yaml @@ -8,4 +8,4 @@ IMAGE_TAG_ADMIN_SERVER: "${IMAGE_TAG_ADMIN_SERVER}" IMAGE_TAG_HYSTRIX_DASHBOARD: "${IMAGE_TAG_HYSTRIX_DASHBOARD}" IMAGE_TAG_GRAFANA_SERVICE: "${IMAGE_TAG_GRAFANA_SERVICE}" IMAGE_TAG_PROMETHEUS_SERVICE: "${IMAGE_TAG_PROMETHEUS_SERVICE}" -DNS_NAME: "cloudevops.link" +DNS_NAME: "petclinic.cloudevops.link" diff --git a/k8s/petclinic_chart/values.yaml b/k8s/petclinic_chart/values.yaml index c779cdd..5953911 100644 --- a/k8s/petclinic_chart/values.yaml +++ b/k8s/petclinic_chart/values.yaml @@ -8,4 +8,4 @@ IMAGE_TAG_ADMIN_SERVER: "testing-image-7" IMAGE_TAG_HYSTRIX_DASHBOARD: "testing-image-8" IMAGE_TAG_GRAFANA_SERVICE: "testing-image-9" IMAGE_TAG_PROMETHEUS_SERVICE: "testing-image-10" -DNS_NAME: "cloudevops.link" +DNS_NAME: "petclinic.cloudevops.link" diff --git a/k8s/tls-cluster-issuer-prod.yml b/k8s/tls-cluster-issuer-prod.yml new file mode 100644 index 0000000..667e7f9 --- /dev/null +++ b/k8s/tls-cluster-issuer-prod.yml @@ -0,0 +1,19 @@ +apiVersion: cert-manager.io/v1 +kind: ClusterIssuer +metadata: + name: letsencrypt-prod + namespace: cert-manager +spec: + acme: + # The ACME server URL + server: https://acme-v02.api.letsencrypt.org/directory + # Email address used for ACME registration + email: skoc@clarusway.com + # Name of a secret used to store the ACME account private key + privateKeySecretRef: + name: letsencrypt-prod + # Enable the HTTP-01 challenge provider + solvers: + - http01: + ingress: + class: nginx \ No newline at end of file