рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдЖрдпрд╛ рдерд╛, рдореБрд░реНрдЧреА рдпрд╛ рдЕрдВрдбрд╛? рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬрд╝-рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИ, рд╣реИ рдирд╛?
рдЕрдВрдбрд╛ рдХреНрдпрд╛ рд╣реИ?
рдЕрдХреНрд╕рд░, рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬрд╝-рдХреЛрдб (IaC) рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╣рдо рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рднрд╛рдЧ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдХред рдЗрд╕рд▓рд┐рдП IaC рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рд╡рдзрд╛рди. рдпреЗ рд╡реАрдПрдо, рдПрд╕3, рд╡реАрдкреАрд╕реА рдЖрджрд┐ рд╣реИрдВред рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдХрд░рдг:
terraform ╨╕рдмрд╛рджрд▓ рдирд┐рд░реНрдорд╛рдг . рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдиреНрдпрд╛рд╕ . рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдХрд░рдг:Ansible , рдмрд╛рд╡рд░реНрдЪреА, рдЖрджрд┐ред
рдХреЛрдИ рднреА рдХреЛрдб git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╣реИред рдФрд░ рджреЗрд░-рд╕рдмреЗрд░ рдЯреАрдо рд▓реАрдбрд░ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдЧрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рд░рд┐рдлреИрдХреНрдЯрд░ рдХрд░реЗрдЧрд╛. рдФрд░ рдпрд╣ рдХреБрдЫ рд╕рдВрд░рдЪрдирд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдЧрд╛. рдФрд░ рд╡рд╣ рджреЗрдЦреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИред
рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ
рдЕрдВрдбрд╛ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛?
рдЗрд╕рд▓рд┐рдП рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рдкрд░ рдкрд╣реБрдБрдЪ рд░рд╣реЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рдЖрдкрдХреЗ рд╕рд╣рд┐рдд рдЕрдиреНрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, GitOps рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ CI рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рдПрдВред
рдпрджрд┐ Git рдЕрднреА рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ?
- рдЗрд╕реЗ Git рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ?
- рд╕реАрдЖрдИ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ?
- рдпрджрд┐ рд╣рдо IaC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Kubernetes рдореЗрдВ рднреА Gitlab рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдВ?
- рдФрд░ рдЧрд┐рдЯрд▓реИрдм рд░рдирд░ рднреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ?
- рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдЖрдпрд╛: GitLab рдЬрд╣рд╛рдВ рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░реВрдВрдЧрд╛, рдпрд╛ рд╡рд╣ рдХреЛрдб рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ GitLab рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдЕрдВрдбреЗ рдХреЗ рд╕рд╛рде рдЪрд┐рдХрди
┬лрдУрдпрд╛рдХреЛрдбреЛрди 3 рдПрдХ рдбрд╛рдпрдирд╛рд╕реЛрд░ рдХреЗ рд╕рд╛рде" [" ]
рдЖрдЗрдП рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╡реНрдпрдВрдЬрди рдкрдХрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
TL, рдбреЙ
рдХреНрдпрд╛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдЯреАрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ?
$ export MY_SELECTEL_TOKEN=<token>
$ curl https://gitlab.com/chicken-or-egg/mks/make/-/snippets/2002106/raw | bash
рд╕рд╛рдордЧреНрд░реА:
- My.selectel.ru рд╕реЗ рдЦрд╛рддрд╛;
- рдЦрд╛рддрд╛ рдЯреЛрдХрди;
- рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреМрд╢рд▓;
- рд╣реЗрд▓реНрдо рдХреМрд╢рд▓;
- рдЯреЗрд░рд╛рдлрд╝реЙрд░реНрдо рдХреМрд╢рд▓;
- рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдЧрд┐рдЯрд▓реИрдм;
- рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдЧрд┐рдЯрд▓реИрдм рд░рдирд░ред
рдкрдХрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐:
- рдкреИрдирд▓ рд╕реЗ MY_SELECTEL_TOKEN рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ my.selectel.ru.
- рдЗрд╕рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рдЯреЛрдХрди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВред
- рдирд┐рд░реНрдорд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ KUBECONFIG рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ GitLab рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП GitLab рд╕реЗ GitLab-рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬрдбрд╝.
- GitLab-рдЯреЛрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ GitLab рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдПрдВред
- рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ GitLab рдкрд░ рдкреБрд╢ рдХрд░реЗрдВред
- ?
- рд▓рд╛рдн!
1 рдХрджрдо. рдЯреЛрдХрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
2 рдХрджрдо. рд╣рдо 2 рдиреЛрдбреНрд╕ рдХреЗ рд╕рдореВрд╣ рдХреЛ "рдмреЗрдХрд┐рдВрдЧ" рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЯреЗрд░рд╛рдлреЙрд░реНрдо рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЖрд╢реНрд╡рд╕реНрдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ, рддреЛ рдЖрдк рдСрдЯреЛ рдХреЛрдЯрд╛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
provider "selectel" {
token = var.my_selectel_token
}
variable "my_selectel_token" {}
variable "username" {}
variable "region" {}
resource "selectel_vpc_project_v2" "my-k8s" {
name = "my-k8s-cluster"
theme = {
color = "269926"
}
quotas {
resource_name = "compute_cores"
resource_quotas {
region = var.region
zone = "${var.region}a"
value = 16
}
}
quotas {
resource_name = "network_floatingips"
resource_quotas {
region = var.region
value = 1
}
}
quotas {
resource_name = "load_balancers"
resource_quotas {
region = var.region
value = 1
}
}
quotas {
resource_name = "compute_ram"
resource_quotas {
region = var.region
zone = "${var.region}a"
value = 32768
}
}
quotas {
resource_name = "volume_gigabytes_fast"
resource_quotas {
region = var.region
zone = "${var.region}a"
# (20 * 2) + 50 + (8 * 3 + 10)
value = 130
}
}
}
resource "selectel_mks_cluster_v1" "k8s-cluster" {
name = "k8s-cluster"
project_id = selectel_vpc_project_v2.my-k8s.id
region = var.region
kube_version = "1.17.9"
}
resource "selectel_mks_nodegroup_v1" "nodegroup_1" {
cluster_id = selectel_mks_cluster_v1.k8s-cluster.id
project_id = selectel_mks_cluster_v1.k8s-cluster.project_id
region = selectel_mks_cluster_v1.k8s-cluster.region
availability_zone = "${var.region}a"
nodes_count = 2
cpus = 8
ram_mb = 16384
volume_gb = 15
volume_type = "fast.${var.region}a"
labels = {
"project": "my",
}
}
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ:
resource "random_password" "my-k8s-user-pass" {
length = 16
special = true
override_special = "_%@"
}
resource "selectel_vpc_user_v2" "my-k8s-user" {
password = random_password.my-k8s-user-pass.result
name = var.username
enabled = true
}
resource "selectel_vpc_keypair_v2" "my-k8s-user-ssh" {
public_key = file("~/.ssh/id_rsa.pub")
user_id = selectel_vpc_user_v2.my-k8s-user.id
name = var.username
}
resource "selectel_vpc_role_v2" "my-k8s-role" {
project_id = selectel_vpc_project_v2.my-k8s.id
user_id = selectel_vpc_user_v2.my-k8s-user.id
}
рдЖрдЙрдЯрдкреБрдЯ:
output "project_id" {
value = selectel_vpc_project_v2.my-k8s.id
}
output "k8s_id" {
value = selectel_mks_cluster_v1.k8s-cluster.id
}
output "user_name" {
value = selectel_vpc_user_v2.my-k8s-user.name
}
output "user_pass" {
value = selectel_vpc_user_v2.my-k8s-user.password
}
рдЖрдЗрдП рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ:
$ env
TF_VAR_region=ru-3
TF_VAR_username=diamon
TF_VAR_my_selectel_token=<token>
terraform plan -out planfile
$ terraform apply -input=false -auto-approve planfile
3 рдХрджрдо. рд╣рдореЗрдВ рдХреНрдпреВрдмрдХреЙрдиреНрдлрд┐рдЧ рдорд┐рд▓рддрд╛ рд╣реИред
KUBECONFIG рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдУрдкрдирд╕реНрдЯреИрдХ рд╕реЗ рдПрдХ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
openstack token issue -c id -f value > token
рдФрд░ рдЗрд╕ рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рдкреНрд░рдмрдВрдзрд┐рдд рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗрд▓реЗрдХреНрдЯреЗрд▓ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред k8s_id рдмрд╛рд╣рд░ рджреЗрддрд╛ рд╣реИ terraform:
curl -XGET -H "x-auth-token: $(cat token)" "https://ru-3.mks.selcloud.ru/v1/clusters/$(cat k8s_id)/kubeconfig" -o kubeConfig.yaml
Cupconfig рдХреЛ рдкреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
4 рдХрджрдо. рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкрдХ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╕реЗ рд░рддрд╛рд▓реВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ:
- рдирд╛рдо рд╕реНрдерд╛рди,
- рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ
- рдкреЙрдб рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдЗрддреНрдпрд╛рджрд┐ред
рдЪреВрдБрдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рдореИрдВрдиреЗ рдЬрд╝реЛрди рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдерд╛ рдЖрд░рдпреВ-3рдП, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рд╕реНрдЯреЛрд░реЗрдЬ рдХреНрд▓рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: fast.ru-3a
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: cinder.csi.openstack.org
parameters:
type: fast.ru-3a
availability: ru-3a
allowVolumeExpansion: true
5 рдХрджрдо. рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ.
рд╣рдо рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ nginx-рдкреНрд░рд╡реЗрд╢. рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд░реНрджреЗрд╢ рдореМрдЬреВрдж рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗред
$ helm repo add nginx-stable https://helm.nginx.com/stable
$ helm upgrade nginx-ingress nginx-stable/nginx-ingress -n ingress --install -f ../internal/K8S-cluster/ingress/values.yml
рд╣рдо рд▓рдЧрднрдЧ 3-4 рдорд┐рдирдЯ рддрдХ рдмрд╛рд╣рд░реА рдЖрдИрдкреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
рдкреНрд░рд╛рдкреНрдд рдмрд╛рд╣рд░реА рдЖрдИрдкреА:
6 рдХрджрдо. рдЧрд┐рдЯрд▓реИрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ.
$ helm repo add gitlab https://charts.gitlab.io
$ helm upgrade gitlab gitlab/gitlab -n gitlab --install -f gitlab/values.yml --set "global.hosts.domain=gitlab.$EXTERNAL_IP.nip.io"
рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рднреА рдлрд▓рд┐рдпреЛрдВ рдХреЗ рдЙрдЧрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
kubectl get po -n gitlab
NAME READY STATUS RESTARTS AGE
gitlab-gitaly-0 0/1 Pending 0 0s
gitlab-gitlab-exporter-88f6cc8c4-fl52d 0/1 Pending 0 0s
gitlab-gitlab-runner-6b6867c5cf-hd9dp 0/1 Pending 0 0s
gitlab-gitlab-shell-55cb6ccdb-h5g8x 0/1 Init:0/2 0 0s
gitlab-migrations.1-2cg6n 0/1 Pending 0 0s
gitlab-minio-6dd7d96ddb-zd9j6 0/1 Pending 0 0s
gitlab-minio-create-buckets.1-bncdp 0/1 Pending 0 0s
gitlab-postgresql-0 0/2 Pending 0 0s
gitlab-prometheus-server-6cfb57f575-v8k6j 0/2 Pending 0 0s
gitlab-redis-master-0 0/2 Pending 0 0s
gitlab-registry-6bd77b4b8c-pb9v9 0/1 Pending 0 0s
gitlab-registry-6bd77b4b8c-zgb6r 0/1 Init:0/2 0 0s
gitlab-shared-secrets.1-pc7-5jgq4 0/1 Completed 0 20s
gitlab-sidekiq-all-in-1-v1-54dbcf7f5f-qbq67 0/1 Pending 0 0s
gitlab-task-runner-6fd6857db7-9x567 0/1 Pending 0 0s
gitlab-webservice-d9d4fcff8-hp8wl 0/2 Pending 0 0s
Waiting gitlab
./wait_gitlab.sh ../internal/gitlab/gitlab/.pods
waiting for pod...
waiting for pod...
waiting for pod...
рдлрд▓рд┐рдпрд╛рдБ рдЙрдЧ рдЖрдИрдВ:
7 рдХрджрдо. рд╣рдореЗрдВ GitLab-рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реЙрдЧрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдкрддрд╛ рдХрд░реЗрдВ:
kubectl get secret -n gitlab gitlab-gitlab-initial-root-password -o jsonpath='{.data.password}' | base64 --decode
рдЕрдм рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
python3 get_gitlab_token.py root $GITLAB_PASSWORD http://gitlab.gitlab.$EXTERNAL_IP.nip.io
8 рдХрджрдо. Gitlab рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд╣реА рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд▓рд╛рдирд╛ред
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдЧрд┐рдЯрд▓реИрдм рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдкрд╛рд╕ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд╣реИ
рдмрдЧ . рдлрд┐рд░ рдЖрдкрдХреЛ tf.state рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдХрдорд╛рдВрдб `$рдореЗрдХ рдСрд▓` рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЪрд▓рд╛рдПрдБ
9 рдХрджрдо. рд╣рдо рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
$ make push
[master (root-commit) b61d977] Initial commit
3 files changed, 46 insertions(+)
create mode 100644 .gitignore
create mode 100644 values.yml
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 770 bytes | 770.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
рд╕рдорд╛рдкреНрдд:
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рдордиреЗ рдпрд╣ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рд╣рд░ рдЪреАрдЬрд╝ рдХреЛ рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдореИрдВ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реАрдЖрдИ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдмрдЯрди рджрдмрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд░рд╛рдЬреНрдпреЛрдВ (рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд░рд╛рдЬреНрдп) рдХреЛ рд╕реАрдЖрдИ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ рдпрд╣ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣реИред
рд╣рдорд╛рд░реА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ
рдмреНрд▓реЙрдЧ рддрд╛рдХрд┐ рдирдП рд▓реЗрдЦреЛрдВ рдХреЗ рд╡рд┐рдореЛрдЪрди рд╕реЗ рди рдЪреВрдХреЗрдВ!
рд╕реНрд░реЛрдд: www.habr.com