Last active
November 30, 2017 02:17
-
-
Save hiiamyes/cef2e54269276f6ce85a47bdb22fc05a to your computer and use it in GitHub Desktop.
gek web deployment
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
project="pronect-name" | |
zone="us-east1-b" | |
cluster="cluster-name" | |
namespace="namespace-if-needed" | |
tput setaf 2; echo "Deploying..." | |
tput sgr0; | |
gcloud container clusters get-credentials $cluster --zone $zone --project $project | |
# ref: | |
# https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ | |
# https://kubernetes-v1-4.github.io/docs/user-guide/kubectl/kubectl_apply/ | |
kubectl apply -f "./scripts/gke/beta/namespaces.yaml" | |
kubectl --namespace=$namespace apply -f "./deployment.yaml" | |
kubectl --namespace=$namespace apply -f "./service.yaml" | |
kubectl --namespace=$namespace delete -f "./ingress.yaml" | |
kubectl --namespace=$namespace apply -f "./ingress.yaml" | |
tput setaf 2; echo "Complete" | |
tput sgr0; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ | |
# https://kubernetes.io/docs/api-reference/v1.8/ | |
apiVersion: apps/v1beta1 # use apps/v1beta1 for versions before 1.8.0 | |
kind: Deployment | |
metadata: | |
name: web-deployment | |
spec: | |
replicas: 1 | |
template: | |
metadata: | |
labels: | |
app: web | |
spec: # https://kubernetes.io/docs/api-reference/v1.8/#podspec-v1-core | |
imagePullSecrets: | |
- name: gcr-json-key | |
containers: # https://kubernetes.io/docs/api-reference/v1.8/#container-v1-core | |
- name: web | |
image: asia.gcr.io/project-name/web:latest | |
imagePullPolicy: Always # https://kubernetes.io/docs/concepts/containers/images/#updating-images | |
ports: # https://kubernetes.io/docs/api-reference/v1.8/#containerport-v1-core | |
- containerPort: 3000 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ | |
# https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | |
apiVersion: v1 | |
data: | |
.dockercfg: eyJodHRwczovL2FzaWEuZ2NyLmlvIjp7InVzZXJuYW1lIjoiX2pzb25fa2V5IiwicGFzc3dvcmQiOiJ7XG4gIFwidHlwZVwiOiBcInNlcnZpY2VfYWNjb3VudFwiLFxuICBcInByb2plY3RfaWRcIjogXCJpbmxpbmUtZGV2XCIsXG4gIFwicHJpdmF0ZV9rZXlfaWRcIjogXCJkNzg5OTgwZGJmMDIxN2Y3MTc5NjUwMmRiZDExOWZmMmI0YzdjNzY5XCIsXG4gIFwicHJpdmF0ZV9rZXlcIjogXCItLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS1cXG5NSUlFdndJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLa3dnZ1NsQWdFQUFvSUJBUUM1RGlxczBUVGIrZUJzXFxuNi8zOTlsTTJlbUNqSlBSTjdHa2FEOWdXNS9zTDJtbkN1eGRMSVdueldRYWczUmZySmRsRHg3end6NTVrVTdDblxcbkVzR2dDMEdVRk4wbTVRRUNpZG5kbHFoSFBMbVpsYTJZMndoTlByRm82OE9UM21VTUpNcGV4RUFuQWFidjRuVC9cXG5adkl6VDFsUVNTRzdMMFM0YzdUYU5mN2ttRWhsSGlKRFhjTnYxREI0U2hBbFdJMHVHVmlIeC9LTlJ4cUFqdGxzXFxuVTZyR3hCdTYxQmlGTnYzZnZ3TlZXeUFnMHQvR3BPRmJ3UHROKzkrc0pvU3U1V3NtU0xiVmt2U0pWNFdmSGVOL1xcbjU0dDlQWnU5SWVFazlma1poWUlidk5mN2kzVkV2WWNKNFkrSkhiS1hnUlAvUEpYVXM2OG4vaHlySW81SlZ2UWJcXG42OVQ3NGhqWEFnTUJBQUVDZ2dFQUZzSG12cHoxdHEycWkwcVVVRFNJTkRWbGgvcWw3cVZKb1pKY1BTam5KeVNEXFxuaUJhUS9VVE5Ma2QrK0s1bjRCdWw5ZDlzM1dKeTlKeVVKMSszbnhKelRKNHFPanZFWFljTlcySkpMSVdMdjViNFxcbkk4bWY0anY0L2xHc0doV3A4STNmc3pySU51UE5uMGVHb3RnS3BnTzJsSmlCeE83QnNUdE5mTjVTQzlPc1ozN1JcXG5BVXlrQjU0bkZuOGpnRk1lcVp5dStaUzUvRWZGVlpWUWZ1ZFBncmNLdXBJcUFXWk8wNzRXeitFQkVkUzZOMVBUXFxubVM3TTZ0NmlkeExSdDFjM2ZhUDdXdVdzQnA5UVJOaWJ6akxScm5mTEtiVHBqNUp3NS90T3J5SzRyczRua3VjQVxcbmQzU0J5UjVwTFEwdlNoS3NiNEVicGlLS2VIVUlXQmFMd2w0SnR4RkxsUUtCZ1FEcXJzTWtyMTk0RTVrRUtBR0hcXG5nT1ZsdGFhb3lBZ21vajdpbkhlQndGR0VOWkJCU0lQZEJjY2tncjB0NHFReWN0dE9aMndoVXVvMUZqM3VSWWgrXFxuWFJsZk9vU0cvNVpXeTdsbkpBRWlkTTNlWDRMR1lKUFY1b3lyOW5iRklQQnhOUHNDendIODNpQnhSdHpqK0hoWlxcbk1rbVhQN1h3TVJNUG9OOEMxV0pDcDk1Q0V3S0JnUURKM1dMUkRxOHN5WEJrUzBTNkJobERvcU1HYmwwb0EyUk9cXG5hTk1VRzZIajBFTThIZVVSMDFraEdVd1RxZUpBZ0w5bFo2Y3FBUTRJM3FOMTNWR1hNL1dzM1F0eHpRMGVIT25qXFxuaEpYZ2lQUVVTWWRPRlB2YjRFU3UzeHhQWVFET2dZMFVBbzZaZGh5OVVtaWVwc01EZ0cwQ3dzZGVURjVHY3NKdVxcbjc0cjdnckVHclFLQmdRRG9pTHV4V05mRzJkeFBRdmlvOUMzWXh0SFpBVU1hVEw3MHVVYXMyUXVzYllwL05VUDdcXG5ONk5uNk9kY1ZPcVBWa0U1QWI4aGtjK2hSR1dlOTJUVW1KandROEpYSlY4b3Azb1EyWnNLTWlSZWg5TERqNlJNXFxuV01IZ0Rqa0hBS2xkOHJvWXdWYmQ0SmJTeHYxT0liL1YyYjhUVDd5TnY0SjhoTkVVTkt6RkVTSm40d0tCZ1FDN1xcblJWNEtNa1JER1hIaUtZM053aUNvQlhhV1hjYWdlMTBQL09GdGN5RWlGckI1VWdhVUhlMCs3cGdNV2Z0aStjNFdcXG5CaTRub3FqaGc2SkRreG5CVzF2Y2pZaXpmNVplekZZVFU0b3pydm80NCtuWmYxQVVNSituVjZhTTRhSDg4bVR1XFxuSGwwcWMwL0FOM2FGVUpIMGFxMDI5WG85dWoxdnY4RXZaNTBaTGFxTFZRS0JnUUNUY0MwaEMwUE5WczhRc1ROelxcblBMZVI4S0FKMG9PazNRSFo1WlhFdHpJWS9WRTd1cW9PdFBCeGI0V1ZMN0FsVkQ4UzRYRjBsZkJmZFFCcTJ1VjJcXG5ES0dCZzMvMGpyVXNoanNQY3h0V3RwQkxMSlMxaWpuZTBsNXIrNUZhQStwcExTcGxLaFhzandHUWVsZkdrSUdCXFxuNEJPN2lwY1dOS1JBRXV1amxhUmJVQVFjZmc9PVxcbi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS1cXG5cIixcbiAgXCJjbGllbnRfZW1haWxcIjogXCJnY3ItcHVsbEBpbmxpbmUtZGV2LmlhbS5nc2VydmljZWFjY291bnQuY29tXCIsXG4gIFwiY2xpZW50X2lkXCI6IFwiMTE0NjQ4MDM4NzA4MzY4MTYxNzY3XCIsXG4gIFwiYXV0aF91cmlcIjogXCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvYXV0aFwiLFxuICBcInRva2VuX3VyaVwiOiBcImh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlblwiLFxuICBcImF1dGhfcHJvdmlkZXJfeDUwOV9jZXJ0X3VybFwiOiBcImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92MS9jZXJ0c1wiLFxuICBcImNsaWVudF94NTA5X2NlcnRfdXJsXCI6IFwiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vcm9ib3QvdjEvbWV0YWRhdGEveDUwOS9nY3ItcHVsbCU0MGlubGluZS1kZXYuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb21cIlxufSIsImVtYWlsIjoiaXRAaW5saW5lLnR3IiwiYXV0aCI6IlgycHpiMjVmYTJWNU9uc0tJQ0FpZEhsd1pTSTZJQ0p6WlhKMmFXTmxYMkZqWTI5MWJuUWlMQW9nSUNKd2NtOXFaV04wWDJsa0lqb2dJbWx1YkdsdVpTMWtaWFlpTEFvZ0lDSndjbWwyWVhSbFgydGxlVjlwWkNJNklDSmtOemc1T1Rnd1pHSm1NREl4TjJZM01UYzVOalV3TW1SaVpERXhPV1ptTW1JMFl6ZGpOelk1SWl3S0lDQWljSEpwZG1GMFpWOXJaWGtpT2lBaUxTMHRMUzFDUlVkSlRpQlFVa2xXUVZSRklFdEZXUzB0TFMwdFhHNU5TVWxGZG5kSlFrRkVRVTVDWjJ0eGFHdHBSemwzTUVKQlVVVkdRVUZUUTBKTGEzZG5aMU5zUVdkRlFVRnZTVUpCVVVNMVJHbHhjekJVVkdJclpVSnpYRzQyTHpNNU9XeE5NbVZ0UTJwS1VGSk9OMGRyWVVRNVoxYzFMM05NTW0xdVEzVjRaRXhKVjI1NlYxRmhaek5TWm5KS1pHeEVlRGQ2ZDNvMU5XdFZOME51WEc1RmMwZG5RekJIVlVaT01HMDFVVVZEYVdSdVpHeHhhRWhRVEcxYWJHRXlXVEozYUU1UWNrWnZOamhQVkROdFZVMUtUWEJsZUVWQmJrRmhZblkwYmxRdlhHNWFka2w2VkRGc1VWTlRSemRNTUZNMFl6ZFVZVTVtTjJ0dFJXaHNTR2xLUkZoalRuWXhSRUkwVTJoQmJGZEpNSFZIVm1sSWVDOUxUbEo0Y1VGcWRHeHpYRzVWTm5KSGVFSjFOakZDYVVaT2RqTm1kbmRPVmxkNVFXY3dkQzlIY0U5R1luZFFkRTRyT1N0elNtOVRkVFZYYzIxVFRHSldhM1pUU2xZMFYyWklaVTR2WEc0MU5IUTVVRnAxT1VsbFJXczVabXRhYUZsSlluWk9aamRwTTFaRmRsbGpTalJaSzBwSVlrdFlaMUpRTDFCS1dGVnpOamh1TDJoNWNrbHZOVXBXZGxGaVhHNDJPVlEzTkdocVdFRm5UVUpCUVVWRFoyZEZRVVp6U0cxMmNIb3hkSEV5Y1drd2NWVlZSRk5KVGtSV2JHZ3ZjV3czY1ZaS2IxcEtZMUJUYW01S2VWTkVYRzVwUW1GUkwxVlVUa3hyWkNzclN6VnVORUoxYkRsa09YTXpWMHA1T1VwNVZVb3hLek51ZUVwNlZFbzBjVTlxZGtWWVdXTk9WekpLU2t4SlYweDJOV0kwWEc1Sk9HMW1OR3AyTkM5c1IzTkhhRmR3T0VrelpuTjZja2xPZFZCT2JqQmxSMjkwWjB0d1owOHliRXBwUW5oUE4wSnpWSFJPWms0MVUwTTVUM05hTXpkU1hHNUJWWGxyUWpVMGJrWnVPR3BuUmsxbGNWcDVkU3RhVXpVdlJXWkdWbHBXVVdaMVpGQm5jbU5MZFhCSmNVRlhXazh3TnpSWGVpdEZRa1ZrVXpaT01WQlVYRzV0VXpkTk5uUTJhV1I0VEZKME1XTXpabUZRTjFkMVYzTkNjRGxSVWs1cFlucHFURkp5Ym1aTVMySlVjR28xU25jMUwzUlBjbmxMTkhKek5HNXJkV05CWEc1a00xTkNlVkkxY0V4Uk1IWlRhRXR6WWpSRlluQnBTMHRsU0ZWSlYwSmhUSGRzTkVwMGVFWk1iRkZMUW1kUlJIRnljMDFyY2pFNU5FVTFhMFZMUVVkSVhHNW5UMVpzZEdGaGIzbEJaMjF2YWpkcGJraGxRbmRHUjBWT1drSkNVMGxRWkVKalkydG5jakIwTkhGUmVXTjBkRTlhTW5kb1ZYVnZNVVpxTTNWU1dXZ3JYRzVZVW14bVQyOVRSeTgxV2xkNU4yeHVTa0ZGYVdSTk0yVllORXhIV1VwUVZqVnZlWEk1Ym1KR1NWQkNlRTVRYzBONmQwZzRNMmxDZUZKMGVtb3JTR2hhWEc1TmEyMVlVRGRZZDAxU1RWQnZUamhETVZkS1EzQTVOVU5GZDB0Q1oxRkVTak5YVEZKRWNUaHplVmhDYTFNd1V6WkNhR3hFYjNGTlIySnNNRzlCTWxKUFhHNWhUazFWUnpaSWFqQkZUVGhJWlZWU01ERnJhRWRWZDFSeFpVcEJaMHc1YkZvMlkzRkJVVFJKTTNGT01UTldSMWhOTDFkek0xRjBlSHBSTUdWSVQyNXFYRzVvU2xobmFWQlJWVk5aWkU5R1VIWmlORVZUZFRONGVGQlpVVVJQWjFrd1ZVRnZObHBrYUhrNVZXMXBaWEJ6VFVSblJ6QkRkM05rWlZSR05VZGpjMHAxWEc0M05ISTNaM0pGUjNKUlMwSm5VVVJ2YVV4MWVGZE9aa2N5WkhoUVVYWnBiemxETTFsNGRFaGFRVlZOWVZSTU56QjFWV0Z6TWxGMWMySlpjQzlPVlZBM1hHNU9OazV1Tms5a1kxWlBjVkJXYTBVMVFXSTRhR3RqSzJoU1IxZGxPVEpVVlcxS2FuZFJPRXBZU2xZNGIzQXpiMUV5V25OTFRXbFNaV2c1VEVScU5sSk5YRzVYVFVoblJHcHJTRUZMYkdRNGNtOVpkMVppWkRSS1lsTjRkakZQU1dJdlZqSmlPRlJVTjNsT2RqUktPR2hPUlZWT1MzcEdSVk5LYmpSM1MwSm5VVU0zWEc1U1ZqUkxUV3RTUkVkWVNHbExXVE5PZDJsRGIwSllZVmRZWTJGblpURXdVQzlQUm5SamVVVnBSbkpDTlZWbllWVklaVEFyTjNCblRWZG1kR2tyWXpSWFhHNUNhVFJ1YjNGcWFHYzJTa1JyZUc1Q1Z6RjJZMnBaYVhwbU5WcGxla1paVkZVMGIzcHlkbTgwTkN0dVdtWXhRVlZOU2l0dVZqWmhUVFJoU0RnNGJWUjFYRzVJYkRCeFl6QXZRVTR6WVVaVlNrZ3dZWEV3TWpsWWJ6bDFhakYyZGpoRmRsbzFNRnBNWVhGTVZsRkxRbWRSUTFSalF6Qm9RekJRVGxaek9GRnpWRTU2WEc1UVRHVlNPRXRCU2pCdlQyc3pVVWhhTlZwWVJYUjZTVmt2VmtVM2RYRnZUM1JRUW5oaU5GZFdURGRCYkZaRU9GTTBXRVl3YkdaQ1ptUlJRbkV5ZFZZeVhHNUVTMGRDWnpNdk1HcHlWWE5vYW5OUVkzaDBWM1J3UWt4TVNsTXhhV3B1WlRCc05YSXJOVVpoUVN0d2NFeFRjR3hMYUZoemFuZEhVV1ZzWmtkclNVZENYRzQwUWs4M2FYQmpWMDVMVWtGRmRYVnFiR0ZTWWxWQlVXTm1aejA5WEc0dExTMHRMVVZPUkNCUVVrbFdRVlJGSUV0RldTMHRMUzB0WEc0aUxBb2dJQ0pqYkdsbGJuUmZaVzFoYVd3aU9pQWlaMk55TFhCMWJHeEFhVzVzYVc1bExXUmxkaTVwWVcwdVozTmxjblpwWTJWaFkyTnZkVzUwTG1OdmJTSXNDaUFnSW1Oc2FXVnVkRjlwWkNJNklDSXhNVFEyTkRnd016ZzNNRGd6TmpneE5qRTNOamNpTEFvZ0lDSmhkWFJvWDNWeWFTSTZJQ0pvZEhSd2N6b3ZMMkZqWTI5MWJuUnpMbWR2YjJkc1pTNWpiMjB2Ynk5dllYVjBhREl2WVhWMGFDSXNDaUFnSW5SdmEyVnVYM1Z5YVNJNklDSm9kSFJ3Y3pvdkwyRmpZMjkxYm5SekxtZHZiMmRzWlM1amIyMHZieTl2WVhWMGFESXZkRzlyWlc0aUxBb2dJQ0poZFhSb1gzQnliM1pwWkdWeVgzZzFNRGxmWTJWeWRGOTFjbXdpT2lBaWFIUjBjSE02THk5M2QzY3VaMjl2WjJ4bFlYQnBjeTVqYjIwdmIyRjFkR2d5TDNZeEwyTmxjblJ6SWl3S0lDQWlZMnhwWlc1MFgzZzFNRGxmWTJWeWRGOTFjbXdpT2lBaWFIUjBjSE02THk5M2QzY3VaMjl2WjJ4bFlYQnBjeTVqYjIwdmNtOWliM1F2ZGpFdmJXVjBZV1JoZEdFdmVEVXdPUzluWTNJdGNIVnNiQ1UwTUdsdWJHbHVaUzFrWlhZdWFXRnRMbWR6WlhKMmFXTmxZV05qYjNWdWRDNWpiMjBpQ24wPSJ9fQ== | |
kind: Secret | |
metadata: | |
name: gcr-json-key | |
type: kubernetes.io/dockercfg |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://github.com/jetstack/kube-lego#ingress-controllers | |
# https://github.com/jetstack/kube-lego/blob/master/examples/gce/echoserver/ingress-tls.yaml | |
apiVersion: extensions/v1beta1 | |
kind: Ingress | |
metadata: | |
name: web-ingress | |
annotations: | |
kubernetes.io/ingress.global-static-ip-name: web-beta # https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#step_2b_using_an_ingress | |
# kubernetes.io/tls-acme: "true" | |
kubernetes.io/ingress.class: "gce" # https://github.com/kubernetes/ingress-nginx#annotation-ingressclass | |
# ingress.kubernetes.io/force-ssl-redirect: "true" | |
labels: | |
app: web | |
spec: | |
# https://github.com/jetstack/kube-lego#how-kube-lego-works | |
# https://kubernetes.io/docs/concepts/services-networking/ingress/#tls | |
# tls: | |
# - secretName: web-tls # The secretName statements have to be unique per namespace | |
# hosts: | |
# - web.com | |
backend: | |
serviceName: web-service | |
servicePort: 80 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apiVersion: v1 | |
kind: Namespace | |
metadata: | |
name: namespace-if-needed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://kubernetes.io/docs/api-reference/v1.8/#service-v1-core | |
apiVersion: v1 | |
kind: Service | |
metadata: | |
name: web-service | |
labels: | |
app: web | |
spec: # https://kubernetes.io/docs/api-reference/v1.8/#servicespec-v1-core | |
type: NodePort | |
ports: # https://kubernetes.io/docs/api-reference/v1.8/#serviceport-v1-core | |
- port: 80 | |
targetPort: 3000 | |
selector: | |
app: web |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment