├── doc └── schema.png ├── kubernetes ├── jenkins │ ├── options │ ├── service.yaml │ └── deployment.yaml ├── secrets.yaml ├── mysql │ ├── service.json │ └── statefulset.yaml ├── redis │ ├── service.json │ └── statefulset.yaml ├── persistence.yaml └── symfony │ ├── service.json │ └── deployment.yaml ├── scripts ├── get-jenkins-console.sh ├── get-php-console.sh ├── get-jenkins-password.sh ├── create-persistent-volumes.sh ├── stop-and-delete.sh ├── get-service-endpoints.sh ├── clone-my-repository.sh └── start-and-create.sh ├── LICENSE └── README.md /doc/schema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carlosas/kubernetes-for-symfony/HEAD/doc/schema.png -------------------------------------------------------------------------------- /kubernetes/jenkins/options: -------------------------------------------------------------------------------- 1 | --argumentsRealm.passwd.jenkins=jenkins --argumentsRealm.roles.jenkins=admin 2 | -------------------------------------------------------------------------------- /kubernetes/secrets.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: secrets 5 | type: Opaque 6 | data: 7 | mysql_root_password: YXNkZg== 8 | jenkins_options: LS1hcmd1bWVudHNSZWFsbS5wYXNzd2QuamVua2lucz1qZW5raW5zIC0tYXJndW1lbnRzUmVhbG0ucm9sZXMuamVua2lucz1hZG1pbic= 9 | -------------------------------------------------------------------------------- /kubernetes/mysql/service.json: -------------------------------------------------------------------------------- 1 | { 2 | "kind": "Service", 3 | "apiVersion": "v1", 4 | "metadata": { 5 | "name": "mysql" 6 | }, 7 | "spec": { 8 | "selector": { 9 | "app": "mysql" 10 | }, 11 | "type": "ClusterIP", 12 | "ports": [ 13 | { 14 | "protocol": "TCP", 15 | "port": 3306, 16 | "targetPort": 3306 17 | } 18 | ] 19 | } 20 | } -------------------------------------------------------------------------------- /kubernetes/redis/service.json: -------------------------------------------------------------------------------- 1 | { 2 | "kind": "Service", 3 | "apiVersion": "v1", 4 | "metadata": { 5 | "name": "redis" 6 | }, 7 | "spec": { 8 | "selector": { 9 | "app": "redis" 10 | }, 11 | "type": "ClusterIP", 12 | "ports": [ 13 | { 14 | "protocol": "TCP", 15 | "port": 6379, 16 | "targetPort": 6379 17 | } 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /kubernetes/jenkins/service.yaml: -------------------------------------------------------------------------------- 1 | kind: Service 2 | apiVersion: v1 3 | metadata: 4 | name: jenkins 5 | spec: 6 | type: NodePort 7 | selector: 8 | app: symfony 9 | ports: 10 | - protocol: TCP 11 | name: ui 12 | port: 8080 13 | targetPort: 8080 14 | nodePort: 30008 15 | 16 | --- 17 | 18 | kind: Service 19 | apiVersion: v1 20 | metadata: 21 | name: jenkins-discovery 22 | spec: 23 | selector: 24 | app: master 25 | ports: 26 | - protocol: TCP 27 | name: slaves 28 | port: 50000 29 | targetPort: 50000 30 | -------------------------------------------------------------------------------- /scripts/get-jenkins-console.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " Kubernetes-for-Symfony" 4 | echo "" 5 | sleep 1 6 | 7 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 8 | echo "ERROR: Minikube is not running" 9 | fi 10 | 11 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 12 | PHPCONTAINER="$(kubectl get pods | grep -o -E '^jenkins-[0-9a-z\-]+')" 13 | echo "Run 'exit' command or press Ctrl+D to return..." 14 | echo "" 15 | kubectl exec -it ${PHPCONTAINER} -- /bin/bash 16 | fi 17 | 18 | echo "" 19 | -------------------------------------------------------------------------------- /scripts/get-php-console.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " Kubernetes-for-Symfony" 4 | echo "" 5 | sleep 1 6 | 7 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 8 | echo "ERROR: Minikube is not running" 9 | fi 10 | 11 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 12 | PHPCONTAINER="$(kubectl get pods | grep -o -E '^symfony-[0-9a-z\-]+') --container php" 13 | echo "Run 'exit' command or press Ctrl+D to return..." 14 | echo "" 15 | kubectl exec -it ${PHPCONTAINER} -- /bin/bash 16 | fi 17 | 18 | echo "" 19 | -------------------------------------------------------------------------------- /kubernetes/persistence.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: PersistentVolume 3 | metadata: 4 | name: pv-webroot 5 | labels: 6 | type: local 7 | # annotations: 8 | # pv.beta.kubernetes.io/gid: "webfiles" 9 | spec: 10 | capacity: 11 | storage: 50Gi 12 | accessModes: 13 | - ReadWriteOnce 14 | hostPath: 15 | path: /data/pv0001/ 16 | 17 | --- 18 | 19 | apiVersion: v1 20 | kind: PersistentVolumeClaim 21 | metadata: 22 | name: pvc-webroot 23 | labels: 24 | app: symfony 25 | spec: 26 | accessModes: 27 | - ReadWriteOnce 28 | resources: 29 | requests: 30 | storage: 20Gi 31 | -------------------------------------------------------------------------------- /scripts/get-jenkins-password.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " Kubernetes-for-Symfony" 4 | echo "" 5 | echo "" 6 | sleep 1 7 | echo "RETRIEVING PASSWORD..." 8 | echo "" 9 | 10 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 11 | echo "ERROR: Minikube is not running" 12 | fi 13 | 14 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 15 | echo "" 16 | PHPCONTAINER="$(kubectl get pods | grep -o -E '^jenkins-[0-9a-z\-]+')" 17 | kubectl exec -it ${PHPCONTAINER} -- cat /var/jenkins_home/secrets/initialAdminPassword 18 | fi 19 | 20 | echo "" 21 | -------------------------------------------------------------------------------- /kubernetes/symfony/service.json: -------------------------------------------------------------------------------- 1 | { 2 | "kind": "Service", 3 | "apiVersion": "v1", 4 | "metadata": { 5 | "name": "symfony" 6 | }, 7 | "spec": { 8 | "selector": { 9 | "app": "symfony" 10 | }, 11 | "type": "NodePort", 12 | "ports": [ 13 | { 14 | "name": "http", 15 | "protocol": "TCP", 16 | "port": 80, 17 | "targetPort": 80, 18 | "nodePort": 30080 19 | }, 20 | { 21 | "name": "https", 22 | "protocol": "TCP", 23 | "port": 443, 24 | "targetPort": 443, 25 | "nodePort": 30443 26 | } 27 | ] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /kubernetes/jenkins/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: jenkins 5 | spec: 6 | replicas: 1 7 | template: 8 | metadata: 9 | labels: 10 | app: symfony 11 | spec: 12 | containers: 13 | - name: jenkins 14 | image: jenkins/jenkins:lts 15 | ports: 16 | - containerPort: 8080 17 | - containerPort: 50000 18 | env: 19 | - name: JENKINS_OPTS 20 | valueFrom: 21 | secretKeyRef: 22 | name: secrets 23 | key: jenkins_options 24 | volumeMounts: 25 | - mountPath: /var/jenkins_home 26 | name: jenkins-home 27 | volumes: 28 | - name: jenkins-home 29 | emptyDir: {} 30 | -------------------------------------------------------------------------------- /kubernetes/redis/statefulset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: StatefulSet 3 | metadata: 4 | name: redis 5 | spec: 6 | serviceName: redis 7 | replicas: 1 8 | template: 9 | metadata: 10 | labels: 11 | app: redis 12 | spec: 13 | terminationGracePeriodSeconds: 10 14 | containers: 15 | - name: redis 16 | image: redis:3-alpine 17 | imagePullPolicy: Always 18 | ports: 19 | - containerPort: 6379 20 | name: redis 21 | volumeMounts: 22 | - name: redisdata 23 | mountPath: /redisdata 24 | volumeClaimTemplates: 25 | - metadata: 26 | name: redisdata 27 | spec: 28 | accessModes: [ "ReadWriteOnce" ] 29 | resources: 30 | requests: 31 | storage: 5Gi 32 | -------------------------------------------------------------------------------- /kubernetes/symfony/deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: extensions/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: symfony 5 | spec: 6 | replicas: 1 7 | template: 8 | metadata: 9 | labels: 10 | app: symfony 11 | spec: 12 | containers: 13 | - name: nginx 14 | image: carlosas/nginx-symfony 15 | ports: 16 | - containerPort: 80 17 | - containerPort: 443 18 | volumeMounts: 19 | - mountPath: /var/www/application 20 | name: workdir 21 | - name: php 22 | image: carlosas/phpfpm-symfony 23 | volumeMounts: 24 | - mountPath: /var/www/application 25 | name: workdir 26 | volumes: 27 | - name: workdir 28 | persistentVolumeClaim: 29 | claimName: pvc-webroot 30 | -------------------------------------------------------------------------------- /kubernetes/mysql/statefulset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: StatefulSet 3 | metadata: 4 | name: mysql 5 | spec: 6 | serviceName: "mysql" 7 | replicas: 1 8 | template: 9 | metadata: 10 | labels: 11 | app: mysql 12 | spec: 13 | terminationGracePeriodSeconds: 0 14 | volumes: 15 | - name: mysqldata 16 | hostPath: 17 | path: /mysqldata 18 | containers: 19 | - name: mysql 20 | image: mysql:5 21 | env: 22 | - name: MYSQL_ROOT_PASSWORD 23 | valueFrom: 24 | secretKeyRef: 25 | name: secrets 26 | key: mysql_root_password 27 | ports: 28 | - containerPort: 3306 29 | name: mysql 30 | volumeMounts: 31 | - name: mysqldata 32 | mountPath: /var/lib/mysql 33 | 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Carlos Alandete Sastre 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kubernetes for Symfony 2 | 3 | [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](LICENSE) 4 | [![contributions](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat-square)](https://github.com/carlosas/kubernetes-for-symfony/issues) 5 | [![HitCount](http://hits.dwyl.com/carlosas/kubernetes-for-symfony.svg)](README.md) 6 | 7 | ![](doc/schema.png) 8 | 9 | --- 10 | 11 | WARNING :warning: **This project is no longer maintained (for now)** 12 | 13 | --- 14 | 15 | ## Introduction 16 | 17 | This stack is a starting point for building a distributed and scalable stack with Kubernetes. It runs locally with Minikube, but it can be modified to use AWS or GCE. Any contribution in this direction would be appreciated. 18 | 19 | ## Quick guide 20 | 21 | ### Requirements 22 | 23 | * kubectl https://kubernetes.io/docs/tasks/tools/install-kubectl/ 24 | * minikube https://kubernetes.io/docs/tasks/tools/install-minikube/ 25 | 26 | ### Usage 27 | 28 | #### Build and start the stack: 29 | 30 | * Define your passwords in *kubernetes/secrets.yaml*, encrypted in base64: 31 | 32 | ```sh 33 | echo -n "MYPASSWORD" | base64 34 | ``` 35 | 36 | > For Jenkins encrypt: `--argumentsRealm.passwd.jenkins=MYPASSWORD --argumentsRealm.roles.jenkins=admin` 37 | 38 | * Start the stack 39 | 40 | ```sh 41 | ./scripts/start-and-create.sh 42 | ``` 43 | 44 | * Create local persistent volumes 45 | 46 | ```sh 47 | ./scripts/create-persistent-volumes.sh 48 | ``` 49 | 50 | * Clone your repository into the stack *(set 'mysql' as database host)* 51 | 52 | ```sh 53 | ./scripts/clone-my-repository.sh 54 | ``` 55 | 56 | #### Clean up and stop the stack: 57 | 58 | ```sh 59 | ./scripts/stop-and-delete.sh 60 | ``` 61 | -------------------------------------------------------------------------------- /scripts/create-persistent-volumes.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " .-+symmmKKKKmmmys+-." 4 | echo " :sfKKKKKKKKKKKKKKKKKKKKfs:" 5 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 6 | echo " +mKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKm." 7 | echo " :mKKKKKKKKKKKKKKKKKKKKKKKKKf-*^^-oKKKm:" 8 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKK' .odm. ':dKKKo" 9 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKy' :KKKKb ;hKKKKo" 10 | echo " oKKKKKKKKKKKKKKKYYYKKKKKKK: .KKKKKKhdmKKKKKKo" 11 | echo " yKKKKKKKKKKKKs' 'qKKK- sKKKsymKKKKKKKKKKy" 12 | echo " -KKKKKKKKKKKh' /KKKKK. ^* 'KKKK; yKKKKKKKKKK-" 13 | echo " yKKKKKKKKKKK. :mKKKKKKb- /KKm' +KKKKKKKKKKKy" 14 | echo " mKKKKKKKKKKK: 'oKKKKKK _.sodKKKKKKKKKKKKK" 15 | echo " KKKKKKKKKmKKK+ 'dKKKo .KKKKKKKKKKKKKKKKKKKK" 16 | echo " mKKKKKKd' sKKdb :KKK' oKKKKKKKKKKKKKKKKKKKm" 17 | echo " yKKKKKKm .QQgo sKKy 'KKKKKKKKKKKKKKKKKKKKy" 18 | echo " -KKKKKKKm, :hKKK: oKKKKKKKKKKKKKKKKKKKK-" 19 | echo " yKKKKKKKKKbnnnndKKKKKd -KKKKKKKKKKKKKKKKKKKKy" 20 | echo " dKKKKKKKKKKKKKKKKKKK/ .mKKKKKKKKKKKKKKKKKKKd" 21 | echo " dKKKKKKKKKKmKKKKKKh -mKKKKKKKKKKKKKKKKKKKd" 22 | echo " sKKKKKKKs' :KKKd' oKKKKKKKKKKKKKKKKKKKKs" 23 | echo " :mKKKKKs. +QP' +mKKKKKKKKKKKKKKKKKKKm:" 24 | echo " *mKKKmo:.._..odKKKKKKKKKKKKKKKKKKKKm*" 25 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 26 | echo " ':smKKKKKKKKKKKKKKKKKKKKms:'" 27 | echo " '*-+symmmKKKKmmmys+-*'" 28 | echo "" 29 | echo " Kubernetes-for-Symfony" 30 | echo "" 31 | echo "" 32 | sleep 1 33 | echo "STARTING..." 34 | echo "" 35 | 36 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 37 | echo "ERROR: Minikube is not running" 38 | fi 39 | 40 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 41 | 42 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 43 | echo "" 44 | kubectl create -f $DIR/../kubernetes/persistence.yaml 45 | echo "" 46 | fi 47 | -------------------------------------------------------------------------------- /scripts/stop-and-delete.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " .-+symmmKKKKmmmys+-." 4 | echo " :sfKKKKKKKKKKKKKKKKKKKKfs:" 5 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 6 | echo " +mKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKm." 7 | echo " :mKKKKKKKKKKKKKKKKKKKKKKKKKf-*^^-oKKKm:" 8 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKK' .odm. ':dKKKo" 9 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKy' :KKKKb ;hKKKKo" 10 | echo " oKKKKKKKKKKKKKKKYYYKKKKKKK: .KKKKKKhdmKKKKKKo" 11 | echo " yKKKKKKKKKKKKs' 'qKKK- sKKKsymKKKKKKKKKKy" 12 | echo " -KKKKKKKKKKKh' /KKKKK. ^* 'KKKK; yKKKKKKKKKK-" 13 | echo " yKKKKKKKKKKK. :mKKKKKKb- /KKm' +KKKKKKKKKKKy" 14 | echo " mKKKKKKKKKKK: 'oKKKKKK _.sodKKKKKKKKKKKKK" 15 | echo " KKKKKKKKKmKKK+ 'dKKKo .KKKKKKKKKKKKKKKKKKKK" 16 | echo " mKKKKKKd' sKKdb :KKK' oKKKKKKKKKKKKKKKKKKKm" 17 | echo " yKKKKKKm .QQgo sKKy 'KKKKKKKKKKKKKKKKKKKKy" 18 | echo " -KKKKKKKm, :hKKK: oKKKKKKKKKKKKKKKKKKKK-" 19 | echo " yKKKKKKKKKbnnnndKKKKKd -KKKKKKKKKKKKKKKKKKKKy" 20 | echo " dKKKKKKKKKKKKKKKKKKK/ .mKKKKKKKKKKKKKKKKKKKd" 21 | echo " dKKKKKKKKKKmKKKKKKh -mKKKKKKKKKKKKKKKKKKKd" 22 | echo " sKKKKKKKs' :KKKd' oKKKKKKKKKKKKKKKKKKKKs" 23 | echo " :mKKKKKs. +QP' +mKKKKKKKKKKKKKKKKKKKm:" 24 | echo " *mKKKmo:.._..odKKKKKKKKKKKKKKKKKKKKm*" 25 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 26 | echo " ':smKKKKKKKKKKKKKKKKKKKKms:'" 27 | echo " '*-+symmmKKKKmmmys+-*'" 28 | echo "" 29 | echo " Kubernetes-for-Symfony" 30 | echo "" 31 | echo "" 32 | echo "STOPPING..." 33 | echo "" 34 | sleep 1 35 | 36 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 37 | echo "ERROR: Minikube is not running" 38 | fi 39 | 40 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 41 | kubectl delete services --all 42 | kubectl delete deployments --all 43 | kubectl delete statefulsets --all 44 | kubectl delete secrets --all 45 | echo "" 46 | while ([[ $(kubectl get pods | grep "No resources found.") == "No resources found." ]]); do 47 | echo "Waiting, pods are not dead yet..." 48 | sleep 5 49 | done 50 | sleep 1 51 | minikube stop 52 | echo "" 53 | fi 54 | -------------------------------------------------------------------------------- /scripts/get-service-endpoints.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " .-+symmmKKKKmmmys+-." 4 | echo " :sfKKKKKKKKKKKKKKKKKKKKfs:" 5 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 6 | echo " +mKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKm." 7 | echo " :mKKKKKKKKKKKKKKKKKKKKKKKKKf-*^^-oKKKm:" 8 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKK' .odm. ':dKKKo" 9 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKy' :KKKKb ;hKKKKo" 10 | echo " oKKKKKKKKKKKKKKKYYYKKKKKKK: .KKKKKKhdmKKKKKKo" 11 | echo " yKKKKKKKKKKKKs' 'qKKK- sKKKsymKKKKKKKKKKy" 12 | echo " -KKKKKKKKKKKh' /KKKKK. ^* 'KKKK; yKKKKKKKKKK-" 13 | echo " yKKKKKKKKKKK. :mKKKKKKb- /KKm' +KKKKKKKKKKKy" 14 | echo " mKKKKKKKKKKK: 'oKKKKKK _.sodKKKKKKKKKKKKK" 15 | echo " KKKKKKKKKmKKK+ 'dKKKo .KKKKKKKKKKKKKKKKKKKK" 16 | echo " mKKKKKKd' sKKdb :KKK' oKKKKKKKKKKKKKKKKKKKm" 17 | echo " yKKKKKKm .QQgo sKKy 'KKKKKKKKKKKKKKKKKKKKy" 18 | echo " -KKKKKKKm, :hKKK: oKKKKKKKKKKKKKKKKKKKK-" 19 | echo " yKKKKKKKKKbnnnndKKKKKd -KKKKKKKKKKKKKKKKKKKKy" 20 | echo " dKKKKKKKKKKKKKKKKKKK/ .mKKKKKKKKKKKKKKKKKKKd" 21 | echo " dKKKKKKKKKKmKKKKKKh -mKKKKKKKKKKKKKKKKKKKd" 22 | echo " sKKKKKKKs' :KKKd' oKKKKKKKKKKKKKKKKKKKKs" 23 | echo " :mKKKKKs. +QP' +mKKKKKKKKKKKKKKKKKKKm:" 24 | echo " *mKKKmo:.._..odKKKKKKKKKKKKKKKKKKKKm*" 25 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 26 | echo " ':smKKKKKKKKKKKKKKKKKKKKms:'" 27 | echo " '*-+symmmKKKKmmmys+-*'" 28 | echo "" 29 | echo " Kubernetes-for-Symfony" 30 | echo "" 31 | echo "" 32 | sleep 1 33 | echo "CHECKING..." 34 | echo "" 35 | 36 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 37 | echo "ERROR: Minikube is not running" 38 | fi 39 | 40 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 41 | URL_HTTP="$(minikube service symfony --url | sed -n '1 p')" 42 | URL_HTTPS="$(minikube service symfony --url | sed -n '2 p')" 43 | URL_JENKINS="$(minikube service jenkins --url)" 44 | echo "" 45 | kubectl get services 46 | echo "" 47 | echo "SYMFONY HTTP ENDPOINT -> ${URL_HTTP}" 48 | echo "SYMFONY HTTPS ENDPOINT -> ${URL_HTTPS}" 49 | echo "JENKINS ENDPOINT -> ${URL_JENKINS}" 50 | fi 51 | 52 | echo "" 53 | -------------------------------------------------------------------------------- /scripts/clone-my-repository.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " .-+symmmKKKKmmmys+-." 4 | echo " :sfKKKKKKKKKKKKKKKKKKKKfs:" 5 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 6 | echo " +mKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKm." 7 | echo " :mKKKKKKKKKKKKKKKKKKKKKKKKKf-*^^-oKKKm:" 8 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKK' .odm. ':dKKKo" 9 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKy' :KKKKb ;hKKKKo" 10 | echo " oKKKKKKKKKKKKKKKYYYKKKKKKK: .KKKKKKhdmKKKKKKo" 11 | echo " yKKKKKKKKKKKKs' 'qKKK- sKKKsymKKKKKKKKKKy" 12 | echo " -KKKKKKKKKKKh' /KKKKK. ^* 'KKKK; yKKKKKKKKKK-" 13 | echo " yKKKKKKKKKKK. :mKKKKKKb- /KKm' +KKKKKKKKKKKy" 14 | echo " mKKKKKKKKKKK: 'oKKKKKK _.sodKKKKKKKKKKKKK" 15 | echo " KKKKKKKKKmKKK+ 'dKKKo .KKKKKKKKKKKKKKKKKKKK" 16 | echo " mKKKKKKd' sKKdb :KKK' oKKKKKKKKKKKKKKKKKKKm" 17 | echo " yKKKKKKm .QQgo sKKy 'KKKKKKKKKKKKKKKKKKKKy" 18 | echo " -KKKKKKKm, :hKKK: oKKKKKKKKKKKKKKKKKKKK-" 19 | echo " yKKKKKKKKKbnnnndKKKKKd -KKKKKKKKKKKKKKKKKKKKy" 20 | echo " dKKKKKKKKKKKKKKKKKKK/ .mKKKKKKKKKKKKKKKKKKKd" 21 | echo " dKKKKKKKKKKmKKKKKKh -mKKKKKKKKKKKKKKKKKKKd" 22 | echo " sKKKKKKKs' :KKKd' oKKKKKKKKKKKKKKKKKKKKs" 23 | echo " :mKKKKKs. +QP' +mKKKKKKKKKKKKKKKKKKKm:" 24 | echo " *mKKKmo:.._..odKKKKKKKKKKKKKKKKKKKKm*" 25 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 26 | echo " ':smKKKKKKKKKKKKKKKKKKKKms:'" 27 | echo " '*-+symmmKKKKmmmys+-*'" 28 | echo "" 29 | echo " Kubernetes-for-Symfony" 30 | echo "" 31 | echo "" 32 | sleep 1 33 | echo "CLONING REPOSITORY..." 34 | echo "" 35 | 36 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 37 | echo "ERROR: Minikube is not running" 38 | fi 39 | 40 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 41 | echo "" 42 | PHPCONTAINER="$(kubectl get pods | grep -o -E '^symfony-[0-9a-z\-]+') --container php" 43 | kubectl exec -it ${PHPCONTAINER} -- git clone https://github.com/symfony/symfony-standard.git /var/www/application/ 44 | kubectl exec -it ${PHPCONTAINER} -- chmod -R 777 /var/www/application/var/cache/ /var/www/application/var/logs/ /var/www/application/var/sessions/ 45 | kubectl exec -it ${PHPCONTAINER} -- composer install 46 | fi 47 | 48 | echo "" 49 | -------------------------------------------------------------------------------- /scripts/start-and-create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | echo "" 3 | echo " .-+symmmKKKKmmmys+-." 4 | echo " :sfKKKKKKKKKKKKKKKKKKKKfs:" 5 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 6 | echo " +mKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKm." 7 | echo " :mKKKKKKKKKKKKKKKKKKKKKKKKKf-*^^-oKKKm:" 8 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKK' .odm. ':dKKKo" 9 | echo " oKKKKKKKKKKKKKKKKKKKKKKKKKy' :KKKKb ;hKKKKo" 10 | echo " oKKKKKKKKKKKKKKKYYYKKKKKKK: .KKKKKKhdmKKKKKKo" 11 | echo " yKKKKKKKKKKKKs' 'qKKK- sKKKsymKKKKKKKKKKy" 12 | echo " -KKKKKKKKKKKh' /KKKKK. ^* 'KKKK; yKKKKKKKKKK-" 13 | echo " yKKKKKKKKKKK. :mKKKKKKb- /KKm' +KKKKKKKKKKKy" 14 | echo " mKKKKKKKKKKK: 'oKKKKKK _.sodKKKKKKKKKKKKK" 15 | echo " KKKKKKKKKmKKK+ 'dKKKo .KKKKKKKKKKKKKKKKKKKK" 16 | echo " mKKKKKKd' sKKdb :KKK' oKKKKKKKKKKKKKKKKKKKm" 17 | echo " yKKKKKKm .QQgo sKKy 'KKKKKKKKKKKKKKKKKKKKy" 18 | echo " -KKKKKKKm, :hKKK: oKKKKKKKKKKKKKKKKKKKK-" 19 | echo " yKKKKKKKKKbnnnndKKKKKd -KKKKKKKKKKKKKKKKKKKKy" 20 | echo " dKKKKKKKKKKKKKKKKKKK/ .mKKKKKKKKKKKKKKKKKKKd" 21 | echo " dKKKKKKKKKKmKKKKKKh -mKKKKKKKKKKKKKKKKKKKd" 22 | echo " sKKKKKKKs' :KKKd' oKKKKKKKKKKKKKKKKKKKKs" 23 | echo " :mKKKKKs. +QP' +mKKKKKKKKKKKKKKKKKKKm:" 24 | echo " *mKKKmo:.._..odKKKKKKKKKKKKKKKKKKKKm*" 25 | echo " :yKKKKKKKKKKKKKKKKKKKKKKKKKKKKy:" 26 | echo " ':smKKKKKKKKKKKKKKKKKKKKms:'" 27 | echo " '*-+symmmKKKKmmmys+-*'" 28 | echo "" 29 | echo " Kubernetes-for-Symfony" 30 | echo "" 31 | echo "" 32 | sleep 1 33 | echo "STARTING..." 34 | echo "" 35 | 36 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 37 | echo "WARNING: Minikube is already running" 38 | fi 39 | 40 | if [[ $(minikube status | grep 'minikube: Stopped') == 'minikube: Stopped' ]]; then 41 | minikube start 42 | fi 43 | 44 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 45 | 46 | if [[ $(minikube status | grep 'minikube: Running') == 'minikube: Running' ]]; then 47 | echo "" 48 | kubectl create -f $DIR/../kubernetes/secrets.yaml 49 | kubectl create -f $DIR/../kubernetes/symfony/deployment.yaml 50 | kubectl create -f $DIR/../kubernetes/symfony/service.json 51 | kubectl create -f $DIR/../kubernetes/mysql/statefulset.yaml 52 | kubectl create -f $DIR/../kubernetes/mysql/service.json 53 | kubectl create -f $DIR/../kubernetes/jenkins/deployment.yaml 54 | kubectl create -f $DIR/../kubernetes/jenkins/service.yaml 55 | echo "" 56 | URL_HTTP="$(minikube service symfony --url | sed -n '1 p')" 57 | URL_HTTPS="$(minikube service symfony --url | sed -n '2 p')" 58 | URL_JENKINS="$(minikube service jenkins --url)" 59 | echo "" 60 | echo "SYMFONY HTTP ENDPOINT -> ${URL_HTTP}" 61 | echo "SYMFONY HTTPS ENDPOINT -> ${URL_HTTPS}" 62 | echo "JENKINS ENDPOINT -> ${URL_JENKINS}" 63 | echo "" 64 | fi 65 | --------------------------------------------------------------------------------