
Solusi OpenSource yang mendefinisikan dan mengelola siklus hidup sumber daya yang digunakan dan disediakan menjadi cloud!
Jelajahi dokumen »
SLD membantu mempercepat penyebaran, menimbang dan membuat IAAC dapat digunakan kembali, menghasilkan bentuk dinamis dan mempertahankan variabel yang berbeda di setiap lingkungan dengan kode yang sama. Dengan SLD, Anda dapat menjadwalkan penyebaran infrastruktur seperti penghancurannya, mengelola pengguna berdasarkan peran dan tumpukan terpisah berdasarkan pasukan dan lingkungan


Fitur Utama:
SLD adalah cara mudah untuk menggunakan kode Terrafrom Anda!
Anda membutuhkan Docker dan Docker-Compse atau Kind (direkomendasikan).
Kloning repo SLD
git clone https://github.com/D10S0VSkY-OSS/Stack-Lifecycle-Deployment.gitMenyebarkan SLD di K8 dengan jenis
cd Stack-Lifecycle-Deployment/play-with-sld/kubernetes
sh kplay.sh startHasil:
Starting SLD for play
Creating cluster " kind " ...
✓ Ensuring node image (kindest/node:v1.20.2) ?
✓ Preparing nodes ? ?
✓ Writing configuration
✓ Starting control-plane ?️
✓ Installing CNI ?
✓ Installing StorageClass ?
✓ Joining worker nodes ?
Set kubectl context to " kind-kind "
You can now use your cluster with:
kubectl cluster-info --context kind-kindBuat pengguna init
sh kplay.sh initHasil:
kind ok
docker ok
kubectl ok
jq ok
curl ok
init SLD
# ################################################
# Now, you can play with SLD ?️ #
# ################################################
API: http://localhost:5000/docs
DASHBOARD: http://localhost:5000/
---------------------------------------------
username: admin
password: Password08@
---------------------------------------------
Daftar endopints
sh kplay.sh listHasil:
kind ok
docker ok
kubectl ok
List endpoints
API: http://localhost:8000/docs
DASHBOARD: http://localhost:5000/Masuk ke Dasbor:

Klik tautan dasbor:

Tambahkan Akun Cloud

Isi formulir dengan data yang diperlukan. Dalam contoh kami, kami akan menggunakan
secara default pekerja berjalan sebagai skuad1 dan skuad2 untuk tujuan bermain, tetapi Anda dapat mengubahnya dan skala saat Anda mau
Saat Anda menambahkan akun ke penyedia (AWS, GCP, Azure), satu pasukan dibuat, Anda harus membuat pekerja untuk nama skuad yang dibuat, jika Anda tidak melakukannya, penyebaran akan tetap berada di negara bagian yang "tertunda" baca pekerja negara bagian baca negara bagian negara bagian "tertunda" "
Akhirnya tambahkan:
Tambahkan modul terraform atau tumpukan

Awalan didukung: AWS_, GCP_, Azure_
Anda dapat lulus pengguna dan kata sandi sebagai https: // nama pengguna: [email protected]/aws_vpc untuk ssh Anda dapat meneruskannya sebagai rahasia dalam penyebaran ke SLD pengguna
'*' = Memberikan akses ke semua, Anda dapat mengizinkan akses ke satu atau banyak regu yang dipisahkan oleh koma: skuad1, skuad2
https://releases.hashicorp.com/terraform/
Menyebarkan tumpukan pertama Anda !!!
Daftar tumpukan untuk digunakan

Pilih Deploy

SLD akan menghasilkan bentuk dinamis berdasarkan variabel tumpukan, isi formulir dan tekan tombol Deploy

Penting! Tetapkan skuad dan lingkungan yang sama yang sebelumnya kami buat saat menambahkan akun (lihat Tambahkan Akun Cloud)
Sekarang, status tugas akan berubah saat penyebaran berlangsung.

Anda dapat mengontrol siklus hidup implementasi
Anda dapat menghancurkan, mengimplementasikan kembali bahwa SLD akan menjaga nilai-nilai lama atau Anda juga dapat mengedit nilai-nilai itu sesuka hati.
Dan akhirnya Anda dapat mengelola siklus hidup secara terprogram, menangani kehancuran / penciptaan infrastruktur, praktik yang baik untuk rencana tabungan !!!
SLD menggunakan backend jarak jauhnya sendiri, jadi Anda tidak perlu mengonfigurasi backend di Terraform. Contoh berikut menunjukkan konfigurasi backend
terraform {
backend "http" {
address = "http://remote-state:8080/terraform_state/aws_vpc-squad1-develop-vpc_core"
lock_address = "http://remote-state:8080/terraform_lock/aws_vpc-squad1-develop-vpc_core"
lock_method = "PUT"
unlock_address = "http://remote-state:8080/terraform_lock/aws_vpc-squad1-develop-vpc_core"
unlock_method = "DELETE"
}
}
Saat ini SLD mendukung MongoDB, S3 dan backend lokal (hanya untuk tujuan pengujian) untuk mengonfigurasi MongoDB sebagai backend, Anda harus melewati variabel berikut sebagai parameter ke layanan negara-jarak jauh:
# docker-compose.yaml
environment:
SLD_STORE: mongodb
SLD_MONGODB_URL: "mongodb:27017/"
MONGODB_USER: admin
MONGODB_PASSWD: admin
# k8s yaml
env:
- name: SLD_STORE
value: mongodb
- name: SLD_MONGODB_URL
value: "mongodb:27017/"
- name: MONGODB_USER
value: admin
- name: MONGODB_PASSWD
value: admin
Untuk mengonfigurasi S3, Anda dapat melewati akses dan kunci rahasia AWS, jika SLD berjalan di AWS, disarankan untuk menggunakan peran
env:
- name: SLD_STORE
value: "S3"
- name: SLD_BUCKET
value: "s3-sld-backend-cloud-tf-state"
- name: AWS_ACCESS_KEY
value: ""
- name: AWS_SECRET_ACCESS_KEY
value: ""
Untuk Azure Env, Anda perlu mengatur env berikutnya
env:
- name: SLD_STORE
value: azure
- name: AZURE_STORAGE_CONNECTION_STRING
value: "DefaultEndpointsProtocol=https;AccountName=<YOUR ACCOUNT>;AccountKey=<YOUR ACCESS KEY>;EndpointSuffix=core.windows.net"
Lihat Azure-Storage-Configure-Connection-String
Untuk set penyimpanan cloud google:
SLD_STORE=gcp
export GOOGLE_APPLICATION_CREDENTIALS="/app/sld-gcp-credentials.json"
Impor Kunci Akun Layanan Google ke K8S Secret
kubectl create secret generic gcp-storage --from-file=~/Downloads/storage.json
Ubah SLD-Remote-state.yml Set GCP Storage Cloud Backend dan Mount Secret:
apiVersion: apps/v1
kind: Deployment
metadata:
name: remote-state
labels:
name: remote-state
spec:
replicas: 1
selector:
matchLabels:
name: remote-state
template:
metadata:
labels:
name: remote-state
spec:
subdomain: primary
containers:
- name: remote-state
image: d10s0vsky/sld-remote-state:latest
volumeMounts:
- name: gcp
mountPath: "/app/gcp"
readOnly: true
env:
- name: SLD_STORE
value: gcp
- name: GOOGLE_APPLICATION_CREDENTIALS
value: "/app/gcp/storage.json"
resources:
limits:
memory: 600Mi
cpu: 1
requests:
memory: 300Mi
cpu: 500m
imagePullPolicy: Always
command: ["python3", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080", "--workers", "1"]
ports:
- containerPort: 8080
livenessProbe:
httpGet:
path: /
port: 8080
httpHeaders:
- name: status
value: healthy
initialDelaySeconds: 60
periodSeconds: 60
volumes:
- name: gcp
secret:
secretName: gcp-storage
Untuk dapat menggunakan output tumpukan lain, Anda dapat mengonfigurasinya sebagai berikut, alwys kunci sama seperti "nama tugas"
| stack-name | akun pasukan | Env | menggunakan nama |
|---|---|---|---|
| AWS_VPC | Skuad1 | mengembangkan | VPC_CORE |
data "terraform_remote_state" "vpc_core" {
backend = "http"
config = {
address = "http://remote-state:8080/terraform_state/aws_vpc-squad1-develop-vpc_core"
}
}
Contoh tes:
echo "data.terraform_remote_state.vpc_core.outputs"|terraform console
Para pekerja di SLD bertanggung jawab untuk melaksanakan penyebaran infrastruktur. Anda dapat menggunakan satu atau lebih pekerja untuk setiap akun atau beberapa akun secara bersamaan. Itu semua tergantung pada tingkat paralelisme dan pemisahan yang Anda pertimbangkan
# Example k8s worker for account squad1, change this for each of your accounts
# Stack-Lifecycle-Deployment/play-with-sld/kubernetes/k8s/sld-worker-squad1.yml
# Add replicas for increment paralelism
# Add more squad accounts if you want to group accounts in the same worker:
# command: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1,"another_squad_account"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: stack-deploy-worker-squad1
labels:
name: stack-deploy-worker-squad1
spec:
replicas: 1
selector:
matchLabels:
name: stack-deploy-worker-squad1
template:
metadata:
labels:
name: stack-deploy-worker-squad1
spec:
subdomain: primary
containers:
- name: stack-deploy-worker-squad1
image: d10s0vsky/sld-api:latest
imagePullPolicy: Always
env:
- name: TF_WARN_OUTPUT_ERRORS
value: "1"
resources:
limits:
memory: 600Mi
cpu: 1
requests:
memory: 300Mi
cpu: 500m
command: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1"]
# Example docker-compose worker for account squad1, change this for each of your accounts
# Stack-Lifecycle-Deployment/play-with-sld/docker/docker-compose.yml
worker:
image: d10s0vsky/sld-api:latest
entrypoint: ["celery", "--app", "tasks.celery_worker", "worker", "--loglevel=info", "-c", "1", "-E", "-Q", "squad1"]
environment:
BROKER_USER: admin
BROKER_PASSWD: admin
depends_on:
- rabbit
- redis
- db
- remote-state
SLD memiliki tiga peran yang telah dikonfigurasi sebelumnya bagi pengguna untuk dengan mudah mengelola ini.
| peran | cakupan | keterangan |
|---|---|---|
| Yoda | global | Ruang lingkup global, dapat melihat semua regu dan admin lengkap |
| Darth_vader | satu atau banyak pasukan | Batasi ruang lingkup pasukan, dapat melihat regu yang ditugaskan dan Anda adalah manajer penuh hanya dari regu tersebut |
| Stormtrooper | satu atau banyak pasukan | Batas Rentang Pasukan, Dapat Melihat Pasukan yang Ditugaskan dan Hanya Dapat Menyebarkan Penyebaran yang Ditetapkan pada Skuad Milik |
| R2-D2 | semua, satu atau banyak pasukan | Peran ini hanya untuk identifikasi dan harus dikaitkan dengan yang sebelumnya, kasus penggunaannya adalah untuk pengguna bot yang mengakses API |

Kontribusi adalah apa yang membuat komunitas open source menjadi tempat yang luar biasa untuk dipelajari, menginspirasi, dan menciptakan. Kontribusi apa pun yang Anda buat sangat dihargai .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Didistribusikan di bawah lisensi MIT. Lihat LICENSE untuk informasi lebih lanjut.
Menumpuk Penyebaran Siklus Hidup