129 lines
4.1 KiB
YAML
129 lines
4.1 KiB
YAML
|
# Copyright 2022 Google LLC
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
# you may not use this file except in compliance with the License.
|
||
|
# You may obtain a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
# See the License for the specific language governing permissions and
|
||
|
# limitations under the License.
|
||
|
|
||
|
- hosts: mgmt
|
||
|
gather_facts: "no"
|
||
|
vars_files:
|
||
|
- vars/vars.yaml
|
||
|
environment:
|
||
|
USE_GKE_GCLOUD_AUTH_PLUGIN: True
|
||
|
tasks:
|
||
|
- name: Download the Google Cloud SDK package repository signing key
|
||
|
get_url:
|
||
|
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
|
||
|
dest: /usr/share/keyrings/cloud.google.gpg
|
||
|
force: yes
|
||
|
become: true
|
||
|
become_user: root
|
||
|
- name: Add Google Cloud SDK package repository source
|
||
|
apt_repository:
|
||
|
filename: google-cloud-sdk
|
||
|
repo: "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main"
|
||
|
state: present
|
||
|
update_cache: yes
|
||
|
become: true
|
||
|
become_user: root
|
||
|
- name: Install dependencies
|
||
|
apt:
|
||
|
pkg:
|
||
|
- google-cloud-sdk-gke-gcloud-auth-plugin
|
||
|
- kubectl
|
||
|
state: present
|
||
|
become: true
|
||
|
become_user: root
|
||
|
- name: Enable bash completion for kubectl
|
||
|
shell:
|
||
|
cmd: kubectl completion bash > /etc/bash_completion.d/kubectl
|
||
|
creates: /etc/bash_completion.d/kubectl
|
||
|
become: true
|
||
|
become_user: root
|
||
|
- name: Get cluster credentials
|
||
|
shell: >
|
||
|
gcloud container clusters get-credentials {{ cluster }}
|
||
|
--region {{ region }}
|
||
|
--project {{ project_id }}
|
||
|
--internal-ip
|
||
|
- name: Render templates
|
||
|
template:
|
||
|
src: ../bundle/{{ item }}/kustomization.yaml.j2
|
||
|
dest: ../bundle/{{ item }}/kustomization.yaml
|
||
|
delegate_to: localhost
|
||
|
with_items:
|
||
|
- monitoring
|
||
|
- locust
|
||
|
- name: Remove bundle locally
|
||
|
local_action:
|
||
|
module: file
|
||
|
path: ../bundle.tar.gz
|
||
|
state: absent
|
||
|
- name: Archive bundle locally
|
||
|
archive:
|
||
|
path: ../bundle
|
||
|
dest: ../bundle.tar.gz
|
||
|
delegate_to: localhost
|
||
|
- name: Unarchive bundle remotely
|
||
|
unarchive:
|
||
|
src: ../bundle.tar.gz
|
||
|
dest: ~/
|
||
|
- name: Build locust image
|
||
|
shell: >
|
||
|
gcloud builds submit --tag {{ region }}-docker.pkg.dev/{{ project_id }}/registry/load-test:latest \
|
||
|
--project {{ project_id }} .
|
||
|
args:
|
||
|
chdir: ~/bundle/locust/image
|
||
|
- name: Enable scraping of kubelet and cAdvisor metrics
|
||
|
shell: >
|
||
|
kubectl patch operatorconfig config
|
||
|
-n gmp-public
|
||
|
--type=merge
|
||
|
-p '{"collection":{"kubeletScraping":{"interval": "30s"}}}'
|
||
|
- name: Deploy monitoring tooling
|
||
|
shell: >
|
||
|
kubectl apply -k .
|
||
|
args:
|
||
|
chdir: ~/bundle/monitoring
|
||
|
- name: Deploy app
|
||
|
shell: >
|
||
|
kubectl apply -k .
|
||
|
args:
|
||
|
chdir: ~/bundle/app
|
||
|
- name: Get forwarding rule name
|
||
|
shell: >
|
||
|
while true; do
|
||
|
forwarding_rule_name=$(kubectl get ingress -n sample -o=jsonpath='{.items[0].metadata.annotations.ingress\.kubernetes\.io\/forwarding-rule}')
|
||
|
if [ -n "$forwarding_rule_name" ]; then
|
||
|
echo $forwarding_rule_name
|
||
|
break
|
||
|
fi
|
||
|
sleep 10
|
||
|
done
|
||
|
register: forwarding_rule_name_output
|
||
|
- name: Set fact forwarding_url_name
|
||
|
set_fact:
|
||
|
forwarding_rule_name: "{{ forwarding_rule_name_output.stdout }}"
|
||
|
- name: Render template (HPA)
|
||
|
template:
|
||
|
src: ../bundle/app/hpa.yaml.j2
|
||
|
dest: ~/bundle/app/hpa.yaml
|
||
|
- name: Apply HPA manifest
|
||
|
shell: >
|
||
|
kubectl apply -f hpa.yaml
|
||
|
args:
|
||
|
chdir: ~/bundle/app
|
||
|
- name: Deploy locust
|
||
|
shell: >
|
||
|
kubectl apply -k .
|
||
|
args:
|
||
|
chdir: ~/bundle/locust
|