рдкреНрд░рдердо рдХрд╛рдп рдЖрд▓реЗ - рдХреЛрдВрдмрдбреА рдХреА рдЕрдВрдбреА? рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬ-рдХреЛрдб рдмрджреНрджрд▓рдЪреНрдпрд╛ рд▓реЗрдЦрд╛рдЪреА рдЕрдЧрджреА рд╡рд┐рдЪрд┐рддреНрд░ рд╕реБрд░реБрд╡рд╛рдд, рдирд╛рд╣реА рдХрд╛?
рдЕрдВрдбреА рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?
рдмрд╣реБрддреЗрдХрджрд╛, рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░-рдПрдЬ-рдХреЛрдб (IaC) рд╣рд╛ рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рддреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣реА рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рднрд╛рдЧрд╛рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдКрди рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирд╕рд╣ рд╕рдорд╛рдкреНрдд рд╣реЛрдгрд╛рд░реНтАНрдпрд╛ рд╕реНрдерд┐рддреАрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ. рдореНрд╣рдгреВрди IaC рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ:
- рд╕рдВрд╕рд╛рдзрди рддрд░рддреВрдж. рд╣реЗ VM, S3, VPC рдЗ. рдХрд╛рдорд╛рд╕рд╛рдареА рдореВрд▓рднреВрдд рд╕рд╛рдзрдиреЗ:
рдЯреЗрд░рд╛рдлреЙрд░реНрдо ╨╕рдХреНрд▓рд╛рдЙрдбрдлреЙрд░реНрдореЗрд╢рди . рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди . рдореВрд▓рднреВрдд рд╕рд╛рдзрдиреЗ:рдЙрддреНрддрд░ рджреНрдпрд╛ , рд╢реЗрдл рдЗ.
рдХреЛрдгрддрд╛рд╣реА рдХреЛрдб рдЧрд┐рдЯ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдордзреНрдпреЗ рдЕрд╕рддреЛ. рдЖрдгрд┐ рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рдЯреАрдо рд▓реАрдбрд░ рдард░рд╡реЗрд▓ рдХреА рддреНрдпрд╛рдВрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдареЗрд╡рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рддреЛ рд░рд┐рдлреЕрдХреНрдЯрд░ рдХрд░реЗрд▓. рдЖрдгрд┐ рддреНрдпрд╛рддреВрди рдХрд╛рд╣реА рд░рдЪрдирд╛ рддрдпрд╛рд░ рд╣реЛрдИрд▓. рдЖрдгрд┐ рддреЛ рдкрд╛рд╣реАрд▓ рдХреА рд╣реЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ.
рддреЗ рдЖрдзреАрдЪ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ рд╣реЗ рджреЗрдЦреАрд▓ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ
рдЕрдВрдбреА рдХреБрдареВрди рдЖрд▓реА?
рддреНрдпрд╛рдореБрд│реЗ рдЖрдкрдг рд╣рд│реВрд╣рд│реВ рдореБрдЦреНрдп рдкреНрд░рд╢реНрдирд╛рдХрдбреЗ рдЬрд╛рдд рдЖрд╣реЛрдд.
рд╕рд░реНрд╡ рдкреНрд░рдердо, рдЖрдкрдгрд╛рд╕ рдЖрдкрд▓реНрдпрд╛рд╕рд╣ рдЗрддрд░ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдЬрдЪреНрдпрд╛ рд╕рдВрд░рдЪрдиреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░реНрдпрд╛ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдЕрд░реНрдерд╛рддрдЪ, GitOps рдЪрд╛ рднрд╛рдЧ рдореНрд╣рдгреВрди, рддреБрдореНрд╣рд╛рд▓рд╛ CI рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдмрджрд▓ рдЖрдкреЛрдЖрдк рдЕрдВрдорд▓рд╛рдд рдпреЗрддреАрд▓.
Git рдЕрдЬреВрди рддрдпрд╛рд░ рдЭрд╛рд▓реЗ рдирд╕реЗрд▓ рддрд░?
- рддреЗ Git рдордзреНрдпреЗ рдХрд╕реЗ рд╕рд╛рдард╡рд╛рдпрдЪреЗ?
- рд╕реАрдЖрдп рдХрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ?
- рдЬрд░ рдЖрдореНрд╣реА IaC рд╡рд╛рдкрд░реВрди рдЧрд┐рдЯрд▓реЕрдм рддреИрдирд╛рдд рдХреЗрд▓реЗ рддрд░ рдЖрдгрд┐ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рджреЗрдЦреАрд▓?
- рдЖрдгрд┐ GitLab рд░рдирд░ рджреЗрдЦреАрд▓ Kubernetes рдордзреНрдпреЗ?
- рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддреНрдпрд╛рдордзреАрд▓ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдЪреЗ рдХрд╛рдп?
рдкреНрд░рдердо рдХрд╛рдп рдЖрд▓реЗ: GitLab рдЬрд┐рдереЗ рдореА рдорд╛рдЭрд╛ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░реЗрди рдХрд┐рдВрд╡рд╛ рдорд▓рд╛ рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреА GitLab рд╣рд╡реА тАЛтАЛрдЖрд╣реЗ рдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░рд╛ рдХреЛрдб?
рдЕрдВрдбреА рд╕рд╣ рдЪрд┐рдХрди
┬лрдУрдпрд╛рдХреЛрдбреЛрди 3 рдбрд╛рдпрдирд╛рд╕реЛрд░рд╕рд╣" [Src ]
рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░реВрди рдбрд┐рд╢ рд╢рд┐рдЬрд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛
TL; рдбреЙ
рдПрдХрд╛рдЪ рд╡реЗрд│реА рдПрдХрд╛ рд╕рдВрдШрд╛рдд рд╕рд╛рдореАрд▓ рд╣реЛрдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ рдХрд╛?
$ export MY_SELECTEL_TOKEN=<token>
$ curl https://gitlab.com/chicken-or-egg/mks/make/-/snippets/2002106/raw | bash
рд╕рд╛рд╣рд┐рддреНрдп:
- my.selectel.ru рд╡рд░реВрди рдЦрд╛рддреЗ;
- рдЦрд╛рддреЗ рдЯреЛрдХрди;
- рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреМрд╢рд▓реНрдпреЗ;
- рд╣реЗрд▓реНрдо рдХреМрд╢рд▓реНрдпреЗ;
- рдЯреЗрд░рд╛рдлреЙрд░реНрдо рдХреМрд╢рд▓реНрдпреЗ;
- рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ GitLab;
- рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ GitLab рд░рдирд░.
рдХреГрддреА:
- рдкреЕрдиреЗрд▓рдордзреВрди MY_SELECTEL_TOKEN рдорд┐рд│рд╡рд╛ my.selectel.ru.
- рддреНрдпрд╛рд╡рд░ рдЦрд╛рддреЗ рдЯреЛрдХрди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реВрди рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ рддрдпрд╛рд░ рдХрд░рд╛.
- рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреВрди KUBECONFIG рдорд┐рд│рд╡рд╛.
- Kubernetes рд╡рд░ 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 рдХрдбреВрди рдЯреЛрдХрди рдорд┐рд│рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
openstack token issue -c id -f value > token
рдЖрдгрд┐ рдпрд╛ рдЯреЛрдХрдирд╕рд╣ рдореЕрдиреЗрдЬреНрдб рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рд╕рд┐рд▓реЗрдХреНрдЯрд▓ API рд▓рд╛ рд╡рд┐рдирдВрддреА рдХрд░рд╛. k8s_id рдмрд╛рд╣реЗрд░ рджреЗрддреЗ рдЫрдд:
curl -XGET -H "x-auth-token: $(cat token)" "https://ru-3.mks.selcloud.ru/v1/clusters/$(cat k8s_id)/kubeconfig" -o kubeConfig.yaml
рдХрдкрдХреЙрдиреНрдлрд┐рдЧрдордзреНрдпреЗ рдкреЕрдиреЗрд▓рджреНрд╡рд╛рд░реЗ рджреЗрдЦреАрд▓ рдкреНрд░рд╡реЗрд╢ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
4 рдкрд╛рдКрд▓. рдХреНрд▓рд╕реНрдЯрд░ рдмреЗрдХ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╛рд▓реНрдпрд╛рдирдВрддрд░, рдЖрдореНрд╣реА рдЪрд╡реАрдиреБрд╕рд╛рд░ рд╡рд░ рдпрд╛рдорд▓ рдШрд╛рд▓реВ рд╢рдХрддреЛ.
рдореА рдЬреЛрдбрдгреНрдпрд╛рд╕ рдкреНрд░рд╛рдзрд╛рдиреНрдп рджреЗрддреЛ:
- рдиреЗрдорд╕реНрдкреЗрд╕
- рд╕реНрдЯреЛрд░реЗрдЬ рд╡рд░реНрдЧ
- рдкреЙрдб рд╕реБрд░рдХреНрд╖рд╛ рдзреЛрд░рдг рдЖрдгрд┐ рдпрд╛рдкреНрд░рдорд╛рдгреЗ.
рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдореА рдЭреЛрдирдордзреНрдпреЗ рдХреНрд▓рд╕реНрдЯрд░ рдирд┐рд╡рдбрд▓реЗ рд╣реЛрддреЗ ru-3a, рддрд░ рдорд▓рд╛ рдпрд╛ рдЭреЛрдирдордзреАрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреНрд▓рд╛рд╕рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.
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 рдорд┐рдирд┐рдЯреЗ рдмрд╛рд╣реНрдп IP рдкреНрд░рд╛рдкреНрдд рд╣реЛрдгреНрдпрд╛рдЪреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЛ:
рдкреНрд░рд╛рдкреНрдд рдмрд╛рд╣реНрдп IP:
6 рдкрд╛рдКрд▓. GitLab рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛.
$ 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 рдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд░рд╕реНрдкрд░рд╡рд┐рд░реЛрдзреА рдкреНрд░рдХрд▓реНрдк рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рд╣рдЯрд╡рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓. рдирдВрддрд░ `$make all` рдХрдорд╛рдВрдб рдкреБрдиреНрд╣рд╛ рдЪрд╛рд▓рд╡рд╛
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)
рдЭрд╛рд▓реЗ:
рдирд┐рд╖реНрдХрд░реНрд╖
рдЖрдореНрд╣реА рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдорд╢реАрдирдордзреВрди рд╕рд░реНрд╡ рдХрд╛рд╣реА рдШреЛрд╖рдгрд╛рддреНрдордХрдкрдгреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рд╢рдХрддреЛ. рдЖрддрд╛ рдорд▓рд╛ рд╣реА рд╕рд░реНрд╡ рдХрд╛рд░реНрдпреЗ CI рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗрдд рдЖрдгрд┐ рдлрдХреНрдд рдмрдЯрдгреЗ рджрд╛рдмрд╛рдпрдЪреА рдЖрд╣реЗрдд. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреА рд╕реНрдерд╛рдирд┐рдХ рд░рд╛рдЬреНрдпреЗ (рдЯреЗрд░рд╛рдлреЙрд░реНрдо рд╕реНрдЯреЗрдЯ) рд╕реАрдЖрдпрдХрдбреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рдкреБрдвреАрд▓ рднрд╛рдЧрд╛рдд рдЖрд╣реЗ.
рдЖрдордЪреНрдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рдШреНрдпрд╛
рдмреНрд▓реЙрдЧ рдирд╡реАрди рд▓реЗрдЦрд╛рдВрдЪреЗ рдкреНрд░рдХрд╛рд╢рди рдЪреБрдХрд╡реВ рдирдпреЗ рдореНрд╣рдгреВрди!
рд╕реНрддреНрд░реЛрдд: www.habr.com