grpc-xds/k8s/cert-manager/skaffold.yaml (95 lines of code) (raw):
# Copyright 2024 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.
# The Kubernetes resource file paths in this file assume that you execute
# Skaffold from the base directory.
#
# TODO: Create separate intermediate CAs and issuers in each cluster.
apiVersion: skaffold/v3
kind: Config
metadata:
name: cert-manager
annotations:
config.kubernetes.io/local-config: "true"
build: {}
deploy:
kubectl:
defaultNamespace: ""
hooks:
after:
- host:
command: ["kubectl", "wait", "--for=condition=established", "--timeout=30s", "crd", "certificates.cert-manager.io"]
- host:
command: ["kubectl", "rollout", "status", "--namespace=cert-manager", "deployment", "cert-manager"]
- host:
command: ["kubectl", "rollout", "status", "--namespace=cert-manager", "deployment", "cert-manager-webhook"]
manifests:
rawYaml:
- https://github.com/cert-manager/cert-manager/releases/download/v1.14.7/cert-manager.yaml # kpt-set: https://github.com/cert-manager/cert-manager/releases/download/${cert-manager-version}/cert-manager.yaml
---
apiVersion: skaffold/v3
kind: Config
metadata:
name: root-ca
annotations:
config.kubernetes.io/local-config: "true"
build: {}
deploy:
kubeContext: kind-grpc-xds # generate the root CA certificate in the first cluster, and export it for use in the second cluster
kubectl:
defaultNamespace: cert-manager
hooks:
after:
- host:
command: ["kubectl", "wait", "--for=condition=ready", "--timeout=30s", "clusterissuer", "root-ca"]
- host:
command: ["sh", "-c", "kubectl --context=kind-grpc-xds --namespace=cert-manager get secret root-ca-certificate --output=yaml > k8s/cert-manager/root-ca-external/secret-root-ca.yaml"]
manifests:
kustomize:
paths: ["k8s/cert-manager/root-ca"]
---
apiVersion: skaffold/v3
kind: Config
metadata:
name: root-ca-external
annotations:
config.kubernetes.io/local-config: "true"
build: {}
deploy:
kubeContext: kind-grpc-xds-2 # install the exported root CA certificate from the first cluster in the second cluster
kubectl:
defaultNamespace: cert-manager
hooks:
after:
- host:
command: ["kubectl", "--context=kind-grpc-xds-2", "wait", "--for=condition=ready", "--timeout=30s", "clusterissuer", "root-ca"]
manifests:
kustomize:
buildArgs: ["--load-restrictor=LoadRestrictionsNone"]
paths: ["k8s/cert-manager/root-ca-external"]
---
apiVersion: skaffold/v3
kind: Config
metadata:
name: ca-service-issuer-controller
annotations:
config.kubernetes.io/local-config: "true"
build: {}
deploy:
kubectl:
defaultNamespace: cert-manager
hooks:
after:
- host:
command: ["kubectl", "wait", "--for=condition=established", "--timeout=30s", "crd", "googlecasclusterissuers.cas-issuer.jetstack.io"]
- host:
command: ["kubectl", "rollout", "status", "--namespace=cert-manager", "deployment", "cert-manager-google-cas-issuer"]
manifests:
kustomize:
buildArgs: ["--load-restrictor=LoadRestrictionsNone"]
paths: ["k8s/cert-manager/ca-service-issuer-controller"]
---
apiVersion: skaffold/v3
kind: Config
metadata:
name: ca-service-cluster-issuer
annotations:
config.kubernetes.io/local-config: "true"
build: {}
manifests:
kustomize:
buildArgs: ["--load-restrictor=LoadRestrictionsNone"]
paths: ["k8s/cert-manager/ca-service-cluster-issuer"]