mirror of
https://github.com/submariner-io/submariner-charts.git
synced 2026-09-21 20:50:35 +00:00
Compare commits
24
Commits
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
name: Bug Report
|
||||||
|
about: Report a bug in Helm Charts
|
||||||
|
labels: bug
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Please use this template while reporting a bug and provide as much info as
|
||||||
|
possible. Not doing so may result in your bug not being addressed in a timely
|
||||||
|
manner. Thanks!
|
||||||
|
|
||||||
|
If the matter is security related, please disclose it privately to the
|
||||||
|
Submariner Owners: https://github.com/orgs/submariner-io/teams/submariner-core
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
**What happened**:
|
||||||
|
|
||||||
|
**What you expected to happen**:
|
||||||
|
|
||||||
|
**How to reproduce it (as minimally and precisely as possible)**:
|
||||||
|
|
||||||
|
**Anything else we need to know?**:
|
||||||
|
|
||||||
|
**Environment**:
|
||||||
|
- Submariner version (use `subctl version`):
|
||||||
|
- Kubernetes version (use `kubectl version`):
|
||||||
|
- Cloud provider or hardware configuration:
|
||||||
|
- OS (e.g: `cat /etc/os-release`):
|
||||||
|
- Kernel (e.g. `uname -a`):
|
||||||
|
- Install tools:
|
||||||
|
- Network plugin and version (if this is a network-related bug):
|
||||||
|
- Others:
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
name: Enhancement Request
|
||||||
|
about: Suggest an enhancement to the Helm Charts project
|
||||||
|
labels: enhancement
|
||||||
|
|
||||||
|
---
|
||||||
|
<!-- Please only use this template for submitting enhancement requests -->
|
||||||
|
|
||||||
|
**What would you like to be added**:
|
||||||
|
|
||||||
|
**Why is this needed**:
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Support Request
|
||||||
|
about: Support request or question relating to Helm Charts
|
||||||
|
labels: support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
GitHub may not the right place for support requests.
|
||||||
|
|
||||||
|
You can also post your question on the [Submariner
|
||||||
|
Slack](https://kubernetes.slack.com/archives/C010RJV694M) or the Submariner
|
||||||
|
[users](https://bit.ly/submariner-users) or
|
||||||
|
[developers](https://bit.ly/submariner-dev) mailing lists.
|
||||||
|
|
||||||
|
If the matter is security related, please disclose it privately to the
|
||||||
|
Submariner Owners: https://github.com/orgs/submariner-io/teams/submariner-core
|
||||||
|
-->
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
name: End to End Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e:
|
||||||
|
name: E2E
|
||||||
|
timeout-minutes: 30
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
steps:
|
||||||
|
- name: Check out the repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Reclaim free space
|
||||||
|
run: |
|
||||||
|
sudo swapoff -a
|
||||||
|
sudo rm -f /swapfile
|
||||||
|
df -h
|
||||||
|
free -h
|
||||||
|
|
||||||
|
- name: Run E2E deployment and tests
|
||||||
|
run: |
|
||||||
|
make e2e
|
||||||
|
|
||||||
|
- name: Post mortem
|
||||||
|
if: failure()
|
||||||
|
run: |
|
||||||
|
df -h
|
||||||
|
free -h
|
||||||
|
make post-mortem
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
name: Release Charts
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Configure Git
|
||||||
|
run: |
|
||||||
|
git config user.name "$GITHUB_ACTOR"
|
||||||
|
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
|
||||||
|
|
||||||
|
- name: Update the charts
|
||||||
|
run: |
|
||||||
|
make release
|
||||||
|
|
||||||
|
- name: Push the charts
|
||||||
|
run: |
|
||||||
|
git add charts/*
|
||||||
|
git commit -m "Chart update"
|
||||||
|
git push
|
||||||
-47
@@ -1,47 +0,0 @@
|
|||||||
language: python
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- HELM_URL=https://storage.googleapis.com/kubernetes-helm
|
|
||||||
- HELM_TGZ=helm-v2.14.3-linux-amd64.tar.gz
|
|
||||||
- TARGET_BR=gh-pages
|
|
||||||
- GH_URL=https://submariner-io.github.io/submariner-charts/charts
|
|
||||||
- CHARTS_DIR=charts
|
|
||||||
- YAMLLINT_VERSION=1.17.0
|
|
||||||
- HELM_FLAGS='--set submariner.serviceDiscovery=true,serviceAccounts.globalnet.create=true,globalCidr="169.254.0.0/16"'
|
|
||||||
|
|
||||||
install:
|
|
||||||
- wget -q ${HELM_URL}/${HELM_TGZ}
|
|
||||||
- tar xzfv ${HELM_TGZ}
|
|
||||||
- PATH=`pwd`/linux-amd64/:$PATH
|
|
||||||
- helm init --client-only
|
|
||||||
- sudo pip install yamllint=="${YAMLLINT_VERSION}"
|
|
||||||
|
|
||||||
script:
|
|
||||||
- for dir in submariner submariner-k8s-broker submariner-operator; do helm lint $dir $HELM_FLAGS; done
|
|
||||||
- yamllint -c .yamllint.yml -s $(find . -type f -name "Chart.yaml")
|
|
||||||
- yamllint -c .yamllint.yml -s $(find . -type f -name "values.yaml")
|
|
||||||
|
|
||||||
after_success:
|
|
||||||
- >
|
|
||||||
if [ $TRAVIS_BRANCH = 'master' ] && [ $TRAVIS_PULL_REQUEST = 'false' ]; then
|
|
||||||
set -e
|
|
||||||
for dir in submariner submariner-k8s-broker submariner-operator; do
|
|
||||||
helm dep update $dir
|
|
||||||
helm package $dir
|
|
||||||
done
|
|
||||||
REPO_URL=`git config remote.origin.url`
|
|
||||||
git clone ${REPO_URL} out && cd out && git checkout gh-pages && mkdir -p ${CHARTS_DIR}
|
|
||||||
cp -f ../submariner-*.tgz ${CHARTS_DIR}/
|
|
||||||
if [ -f charts/index.yaml ]; then
|
|
||||||
helm repo index ${CHARTS_DIR} --url ${GH_URL} --merge index.yaml
|
|
||||||
else
|
|
||||||
helm repo index ${CHARTS_DIR} --url ${GH_URL}
|
|
||||||
fi
|
|
||||||
git config user.name "Travis CI"
|
|
||||||
git config user.email "travis@travis-ci.org"
|
|
||||||
git add -f ${CHARTS_DIR}/*
|
|
||||||
git commit -m "Travis build: $TRAVIS_BUILD_NUMBER"
|
|
||||||
git remote add origin-pages https://${GH_TOKEN}@github.com/submariner-io/submariner-charts.git > /dev/null 2>&1
|
|
||||||
git push --quiet -f -u origin-pages gh-pages
|
|
||||||
fi
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Code of Conduct
|
||||||
|
|
||||||
|
Please see the [Code of Conduct docs on Submariner's website](https://submariner.io/contributing/code-of-conduct/).
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
* @mangelajo @tpantelis @Oats87
|
* @mangelajo @Oats87 @skitt @tpantelis
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
Please see the [Contributing docs on Submariner's website](https://submariner.io/for_developers/).
|
||||||
@@ -6,13 +6,19 @@ include $(SHIPYARD_DIR)/Makefile.inc
|
|||||||
|
|
||||||
CLUSTER_SETTINGS_FLAG = --cluster_settings $(DAPPER_SOURCE)/cluster_settings
|
CLUSTER_SETTINGS_FLAG = --cluster_settings $(DAPPER_SOURCE)/cluster_settings
|
||||||
override CLUSTERS_ARGS += $(CLUSTER_SETTINGS_FLAG)
|
override CLUSTERS_ARGS += $(CLUSTER_SETTINGS_FLAG)
|
||||||
override DEPLOY_ARGS += $(CLUSTER_SETTINGS_FLAG) --deploytool helm
|
override DEPLOY_ARGS += $(CLUSTER_SETTINGS_FLAG) --deploytool helm --deploytool_broker_args '--set submariner.serviceDiscovery=true'
|
||||||
export DEPLOY_ARGS
|
export DEPLOY_ARGS
|
||||||
|
GH_URL=https://submariner-io.github.io/submariner-charts/charts
|
||||||
|
CHARTS_DIR=charts
|
||||||
|
CHARTS_VERSION=0.7.0
|
||||||
|
REPO_URL=$(shell git config remote.origin.url)
|
||||||
|
|
||||||
# Targets to make
|
# Targets to make
|
||||||
|
|
||||||
deploy: clusters preload-images
|
deploy: clusters preload-images
|
||||||
|
|
||||||
|
e2e: E2E_ARGS=cluster1 cluster2
|
||||||
|
|
||||||
preload-images:
|
preload-images:
|
||||||
source $(SCRIPTS_DIR)/lib/debug_functions; \
|
source $(SCRIPTS_DIR)/lib/debug_functions; \
|
||||||
source $(SCRIPTS_DIR)/lib/deploy_funcs; \
|
source $(SCRIPTS_DIR)/lib/deploy_funcs; \
|
||||||
@@ -22,7 +28,20 @@ preload-images:
|
|||||||
import_image quay.io/submariner/$${image}; \
|
import_image quay.io/submariner/$${image}; \
|
||||||
done
|
done
|
||||||
|
|
||||||
.PHONY: preload-images
|
%.tgz:
|
||||||
|
helm dep update $(subst -$(CHARTS_VERSION),,$(basename $(@F)))
|
||||||
|
helm package --version $(CHARTS_VERSION) $(subst -$(CHARTS_VERSION),,$(basename $(@F)))
|
||||||
|
|
||||||
|
release: submariner-$(CHARTS_VERSION).tgz submariner-k8s-broker-$(CHARTS_VERSION).tgz submariner-operator-$(CHARTS_VERSION).tgz
|
||||||
|
git checkout gh-pages
|
||||||
|
mv *.tgz $(CHARTS_DIR)
|
||||||
|
if [ -f $(CHARTS_DIR)/index.yaml ]; then \
|
||||||
|
helm repo index $(CHARTS_DIR) --url $(GH_URL) --merge $(CHARTS_DIR)/index.yaml; \
|
||||||
|
else \
|
||||||
|
helm repo index $(CHARTS_DIR) --url $(GH_URL); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: preload-images release
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# submariner-charts
|
# submariner-charts
|
||||||
|
|
||||||
Please see the [Helm docs on Submariner's website](https://submariner.io/deployment/helm/).
|
Please see the [Helm docs on Submariner's website](https://submariner.io/operations/deployment/helm/).
|
||||||
|
|
||||||
## Dev workflow
|
## Development workflow
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- [helm]
|
- [Helm] v3
|
||||||
- [docker] or [podman]
|
- [Docker] or [Podman]
|
||||||
|
|
||||||
### Create a fork and checkout
|
### Create a fork and checkout
|
||||||
|
|
||||||
@@ -21,96 +21,36 @@ cd submariner-charts
|
|||||||
git checkout -b new-feature
|
git checkout -b new-feature
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can modify the helm charts according to your needs.
|
Now you can modify the Helm charts according to your needs.
|
||||||
|
|
||||||
### Serve the modified charts
|
|
||||||
|
|
||||||
Before serving the modified charts, the charts must be packaged for local usage.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm package ./submariner
|
|
||||||
helm package ./submariner-k8s-broker
|
|
||||||
```
|
|
||||||
|
|
||||||
Note: if you just installed helm, you have to init the helm, by running
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm init --client-only
|
|
||||||
```
|
|
||||||
|
|
||||||
Serve the packaged charts through a local helm repository:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker run -d --rm --name helm-repo -p 8080:8080 -v $PWD:/charts -e DEBUG=true -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts chartmuseum/chartmuseum
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo podman run -d --rm --name helm-repo -p 8080:8080 -v $PWD:/charts -e DEBUG=true -e STORAGE=local -e STORAGE_LOCAL_ROOTDIR=/charts chartmuseum/chartmuseum
|
|
||||||
```
|
|
||||||
|
|
||||||
Get the container internal ip:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo
|
|
||||||
```
|
|
||||||
|
|
||||||
The local container will serve the charts locally on port 8080.
|
|
||||||
|
|
||||||
Get logs for the container:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker logs -f helm-repo
|
|
||||||
```
|
|
||||||
|
|
||||||
### Use the modified charts
|
### Use the modified charts
|
||||||
|
|
||||||
Init helm
|
Locally-modified charts can be installed using `helm install`,
|
||||||
|
referring to the local path; for example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
helm init --client-only
|
helm install submariner-k8s-broker ./submariner-k8s-broker ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Add your local repository to helm
|
In the base directory of this repository, a local deployment using the
|
||||||
|
local charts can be obtained by running the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
internal_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo)
|
make deploy
|
||||||
helm repo add test-repo http://$internal_ip:8080
|
|
||||||
```
|
```
|
||||||
|
|
||||||
List the repos:
|
This will start two kind clusters and deploy Submariner using the
|
||||||
|
Broker and Operator charts.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
helm repo list
|
make e2e
|
||||||
```
|
```
|
||||||
|
|
||||||
You should be able to see test-repo in the list
|
will run the end-to-end test suite used to validate that Submariner is
|
||||||
|
working correctly.
|
||||||
Search the new repo for submariner charts:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm search -l test-repo
|
|
||||||
```
|
|
||||||
|
|
||||||
### Modify submariner e2e tests helm deployment script to use your local test-repo
|
|
||||||
|
|
||||||
You can test your helm-charts with e2e tests from the [shipyard](https://github.com/submariner-io/shipyard) repository.
|
|
||||||
In the file `scripts/shared/lib/deploy_helm` change the line from:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
helm repo add submariner-latest https://submariner-io.github.io/submariner-charts/charts
|
|
||||||
```
|
|
||||||
|
|
||||||
to
|
|
||||||
|
|
||||||
```bash
|
|
||||||
internal_ip=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' helm-repo)
|
|
||||||
helm repo add submariner-latest http://$internal_ip:8080
|
|
||||||
```
|
|
||||||
|
|
||||||
<!--links-->
|
<!--links-->
|
||||||
[helm]: https://helm.sh/docs/using_helm/#installing-helm
|
[Helm]: https://helm.sh/docs/using_helm/#installing-helm
|
||||||
[docker]: https://docs.docker.com/install/
|
[Docker]: https://docs.docker.com/install/
|
||||||
[podman]: https://podman.io/getting-started/installation
|
[Podman]: https://podman.io/getting-started/installation
|
||||||
[Create a fork]: https://help.github.com/en/articles/fork-a-repo
|
[Create a fork]: https://help.github.com/en/articles/fork-a-repo
|
||||||
|
|||||||
+7
-19
@@ -9,22 +9,8 @@ readonly SUBMARINER_PSK=$(LC_CTYPE=C tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w
|
|||||||
|
|
||||||
### Functions ###
|
### Functions ###
|
||||||
|
|
||||||
function install_helm() {
|
|
||||||
if kubectl -n kube-system rollout status deploy/tiller-deploy --timeout=3s > /dev/null 2>&1; then
|
|
||||||
echo "Helm already installed, skipping helm installation..."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Installing helm..."
|
|
||||||
kubectl -n kube-system create serviceaccount tiller
|
|
||||||
kubectl create clusterrolebinding tiller --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
|
|
||||||
helm --kube-context "${cluster}" init --service-account tiller
|
|
||||||
kubectl -n kube-system rollout status deploy/tiller-deploy --timeout=30s
|
|
||||||
}
|
|
||||||
|
|
||||||
function deploytool_prereqs() {
|
function deploytool_prereqs() {
|
||||||
helm init --client-only
|
helm version
|
||||||
run_all_clusters install_helm
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_broker() {
|
function setup_broker() {
|
||||||
@@ -33,9 +19,9 @@ function setup_broker() {
|
|||||||
else
|
else
|
||||||
echo "Installing submariner broker..."
|
echo "Installing submariner broker..."
|
||||||
# shellcheck disable=SC2086 # Split on purpose
|
# shellcheck disable=SC2086 # Split on purpose
|
||||||
helm install ./submariner-k8s-broker \
|
helm install "${SUBMARINER_BROKER_NS}" ./submariner-k8s-broker \
|
||||||
|
--create-namespace \
|
||||||
--kube-context "${cluster}" \
|
--kube-context "${cluster}" \
|
||||||
--name "${SUBMARINER_BROKER_NS}" \
|
|
||||||
--namespace "${SUBMARINER_BROKER_NS}" \
|
--namespace "${SUBMARINER_BROKER_NS}" \
|
||||||
${deploytool_broker_args}
|
${deploytool_broker_args}
|
||||||
fi
|
fi
|
||||||
@@ -56,14 +42,16 @@ function helm_install_subm() {
|
|||||||
|
|
||||||
echo "Installing Submariner..."
|
echo "Installing Submariner..."
|
||||||
# shellcheck disable=SC2086 # Split on purpose
|
# shellcheck disable=SC2086 # Split on purpose
|
||||||
helm --kube-context "${cluster}" install ./submariner-operator \
|
helm --kube-context "${cluster}" install submariner-operator \
|
||||||
--name submariner-operator \
|
./submariner-operator \
|
||||||
|
--create-namespace \
|
||||||
--namespace "${SUBM_NS}" \
|
--namespace "${SUBM_NS}" \
|
||||||
--set ipsec.psk="${SUBMARINER_PSK}" \
|
--set ipsec.psk="${SUBMARINER_PSK}" \
|
||||||
--set broker.server="${submariner_broker_url}" \
|
--set broker.server="${submariner_broker_url}" \
|
||||||
--set broker.token="${submariner_broker_token}" \
|
--set broker.token="${submariner_broker_token}" \
|
||||||
--set broker.namespace="${SUBMARINER_BROKER_NS}" \
|
--set broker.namespace="${SUBMARINER_BROKER_NS}" \
|
||||||
--set broker.ca="${submariner_broker_ca}" \
|
--set broker.ca="${submariner_broker_ca}" \
|
||||||
|
--set submariner.cableDriver="${cable_driver}" \
|
||||||
--set submariner.clusterId="${cluster}" \
|
--set submariner.clusterId="${cluster}" \
|
||||||
--set submariner.clusterCidr="${cluster_CIDRs[$cluster]}" \
|
--set submariner.clusterCidr="${cluster_CIDRs[$cluster]}" \
|
||||||
--set submariner.serviceCidr="${service_CIDRs[$cluster]}" \
|
--set submariner.serviceCidr="${service_CIDRs[$cluster]}" \
|
||||||
|
|||||||
@@ -0,0 +1,324 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: clusters.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Cluster
|
||||||
|
plural: clusters
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: endpoints.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Endpoint
|
||||||
|
plural: endpoints
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: gateways.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Gateway
|
||||||
|
plural: gateways
|
||||||
|
scope: Namespaced
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: ha-status
|
||||||
|
type: string
|
||||||
|
description: High Availability Status of the Gateway
|
||||||
|
JSONPath: .status.haStatus
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: multiclusterservices.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: MultiClusterService
|
||||||
|
plural: multiclusterservices
|
||||||
|
singular: multiclusterservice
|
||||||
|
scope: Namespaced
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
properties:
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
clusterServiceInfo:
|
||||||
|
properties:
|
||||||
|
clusterID:
|
||||||
|
type: "string"
|
||||||
|
clusterDomain:
|
||||||
|
type: "string"
|
||||||
|
serviceIP:
|
||||||
|
type: "string"
|
||||||
|
port:
|
||||||
|
type: "integer"
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceexports.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v2alpha1
|
||||||
|
names:
|
||||||
|
kind: ServiceExport
|
||||||
|
plural: serviceexports
|
||||||
|
singular: serviceexport
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceimports.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v2alpha1
|
||||||
|
names:
|
||||||
|
kind: ServiceImport
|
||||||
|
plural: serviceimports
|
||||||
|
singular: serviceimport
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceexports.multicluster.x-k8s.io
|
||||||
|
spec:
|
||||||
|
group: multicluster.x-k8s.io
|
||||||
|
scope: Namespaced
|
||||||
|
names:
|
||||||
|
plural: serviceexports
|
||||||
|
singular: serviceexport
|
||||||
|
kind: ServiceExport
|
||||||
|
shortNames:
|
||||||
|
- svcex
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
jsonPath: .metadata.creationTimestamp
|
||||||
|
"schema":
|
||||||
|
"openAPIV3Schema":
|
||||||
|
description: ServiceExport declares that the Service with the same name and
|
||||||
|
namespace as this export should be consumable from other clusters.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: status describes the current state of an exported service.
|
||||||
|
Service configuration comes from the Service that had the same name
|
||||||
|
and namespace as this ServiceExport. Populated by the multi-cluster
|
||||||
|
service implementation's controller.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: "ServiceExportCondition contains details for the current
|
||||||
|
condition of this service export. \n Once [KEP-1623](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1623-standardize-conditions)
|
||||||
|
is implemented, this will be replaced by metav1.Condition."
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status is one of {"True", "False", "Unknown"}
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type:
|
||||||
|
description: ServiceExportConditionType identifies a specific
|
||||||
|
condition.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceimports.multicluster.x-k8s.io
|
||||||
|
spec:
|
||||||
|
group: multicluster.x-k8s.io
|
||||||
|
scope: Namespaced
|
||||||
|
names:
|
||||||
|
plural: serviceimports
|
||||||
|
singular: serviceimport
|
||||||
|
kind: ServiceImport
|
||||||
|
shortNames:
|
||||||
|
- svcim
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Type
|
||||||
|
type: string
|
||||||
|
description: The type of this ServiceImport
|
||||||
|
jsonPath: .spec.type
|
||||||
|
- name: IP
|
||||||
|
type: string
|
||||||
|
description: The VIP for this ServiceImport
|
||||||
|
jsonPath: .spec.ips
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
jsonPath: .metadata.creationTimestamp
|
||||||
|
"schema":
|
||||||
|
"openAPIV3Schema":
|
||||||
|
description: ServiceImport describes a service imported from clusters in a
|
||||||
|
ClusterSet.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: spec defines the behavior of a ServiceImport.
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- type
|
||||||
|
properties:
|
||||||
|
ips:
|
||||||
|
description: ip will be used as the VIP for this service when type
|
||||||
|
is ClusterSetIP.
|
||||||
|
type: array
|
||||||
|
maxItems: 1
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: ServicePort represents the port on which the service
|
||||||
|
is exposed
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- port
|
||||||
|
properties:
|
||||||
|
appProtocol:
|
||||||
|
description: The application protocol for this port. This field
|
||||||
|
follows standard Kubernetes label syntax. Un-prefixed names
|
||||||
|
are reserved for IANA standard service names (as per RFC-6335
|
||||||
|
and http://www.iana.org/assignments/service-names). Non-standard
|
||||||
|
protocols should use prefixed names such as mycompany.com/my-custom-protocol.
|
||||||
|
Field can be enabled with ServiceAppProtocol feature gate.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: The name of this port within the service. This
|
||||||
|
must be a DNS_LABEL. All ports within a ServiceSpec must have
|
||||||
|
unique names. When considering the endpoints for a Service,
|
||||||
|
this must match the 'name' field in the EndpointPort. Optional
|
||||||
|
if only one ServicePort is defined on this service.
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: The port that will be exposed by this service.
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
protocol:
|
||||||
|
description: The IP protocol for this port. Supports "TCP",
|
||||||
|
"UDP", and "SCTP". Default is TCP.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
sessionAffinity:
|
||||||
|
description: 'Supports "ClientIP" and "None". Used to maintain session
|
||||||
|
affinity. Enable client IP based session affinity. Must be ClientIP
|
||||||
|
or None. Defaults to None. Ignored when type is Headless More info:
|
||||||
|
https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
|
||||||
|
type: string
|
||||||
|
sessionAffinityConfig:
|
||||||
|
description: sessionAffinityConfig contains session affinity configuration.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
clientIP:
|
||||||
|
description: clientIP contains the configurations of Client IP
|
||||||
|
based session affinity.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
timeoutSeconds:
|
||||||
|
description: timeoutSeconds specifies the seconds of ClientIP
|
||||||
|
type session sticky time. The value must be >0 && <=86400(for
|
||||||
|
1 day) if ServiceAffinity == "ClientIP". Default value is
|
||||||
|
10800(for 3 hours).
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
type:
|
||||||
|
description: type defines the type of this service. Must be ClusterSetIP
|
||||||
|
or Headless.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- ClusterSetIP
|
||||||
|
- Headless
|
||||||
|
status:
|
||||||
|
description: status contains information about the exported services that
|
||||||
|
form the multi-cluster service referenced by this ServiceImport.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
clusters:
|
||||||
|
description: clusters is the list of exporting clusters from which
|
||||||
|
this service was derived.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: ClusterStatus contains service configuration mapped
|
||||||
|
to a specific source cluster
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- cluster
|
||||||
|
properties:
|
||||||
|
cluster:
|
||||||
|
description: cluster is the name of the exporting cluster. Must
|
||||||
|
be a valid RFC-1123 DNS label.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- cluster
|
||||||
|
x-kubernetes-list-type: map
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
{{- if .Values.crd.create -}}
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: clusters.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Cluster
|
|
||||||
plural: clusters
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: endpoints.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Endpoint
|
|
||||||
plural: endpoints
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: gateways.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Gateway
|
|
||||||
plural: gateways
|
|
||||||
scope: Namespaced
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: ha-status
|
|
||||||
type: string
|
|
||||||
description: High Availability Status of the Gateway
|
|
||||||
JSONPath: .status.haStatus
|
|
||||||
---
|
|
||||||
{{- if .Values.submariner.serviceDiscovery }}
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: multiclusterservices.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: MultiClusterService
|
|
||||||
plural: multiclusterservices
|
|
||||||
singular: multiclusterservice
|
|
||||||
scope: Namespaced
|
|
||||||
validation:
|
|
||||||
openAPIV3Schema:
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
properties:
|
|
||||||
clusterServiceInfo:
|
|
||||||
properties:
|
|
||||||
clusterID:
|
|
||||||
type: "string"
|
|
||||||
clusterDomain:
|
|
||||||
type: "string"
|
|
||||||
serviceIP:
|
|
||||||
type: "string"
|
|
||||||
port:
|
|
||||||
type: "integer"
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceexports.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v2alpha1
|
|
||||||
names:
|
|
||||||
kind: ServiceExport
|
|
||||||
plural: serviceexports
|
|
||||||
singular: serviceexport
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceimports.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v2alpha1
|
|
||||||
names:
|
|
||||||
kind: ServiceImport
|
|
||||||
plural: serviceimports
|
|
||||||
singular: serviceimport
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceexports.multicluster.x-k8s.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: multicluster.x-k8s.io
|
|
||||||
scope: Namespaced
|
|
||||||
names:
|
|
||||||
plural: serviceexports
|
|
||||||
singular: serviceexport
|
|
||||||
kind: ServiceExport
|
|
||||||
shortNames:
|
|
||||||
- svcex
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
jsonPath: .metadata.creationTimestamp
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceimports.multicluster.x-k8s.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: multicluster.x-k8s.io
|
|
||||||
scope: Namespaced
|
|
||||||
names:
|
|
||||||
plural: serviceimports
|
|
||||||
singular: serviceimport
|
|
||||||
kind: ServiceImport
|
|
||||||
shortNames:
|
|
||||||
- svcim
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Type
|
|
||||||
type: string
|
|
||||||
description: The type of this ServiceImport
|
|
||||||
jsonPath: .spec.type
|
|
||||||
- name: IP
|
|
||||||
type: string
|
|
||||||
description: The VIP for this ServiceImport
|
|
||||||
jsonPath: .spec.ips
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
jsonPath: .metadata.creationTimestamp
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
@@ -4,7 +4,6 @@ kind: CustomResourceDefinition
|
|||||||
metadata:
|
metadata:
|
||||||
name: submariners.submariner.io
|
name: submariners.submariner.io
|
||||||
annotations:
|
annotations:
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
controller-gen.kubebuilder.io/version: v0.3.0
|
controller-gen.kubebuilder.io/version: v0.3.0
|
||||||
spec:
|
spec:
|
||||||
group: submariner.io
|
group: submariner.io
|
||||||
@@ -69,7 +69,7 @@ Create the name of the submariner-globalnet service account to use
|
|||||||
*/}}
|
*/}}
|
||||||
{{- define "submariner.globalnetServiceAccountName" -}}
|
{{- define "submariner.globalnetServiceAccountName" -}}
|
||||||
{{- if .Values.serviceAccounts.globalnet.create -}}
|
{{- if .Values.serviceAccounts.globalnet.create -}}
|
||||||
{{ default (printf "%s:globalnet" (include "submariner.fullname" .)) .Values.serviceAccounts.globalnet.name }}
|
{{ default (printf "%s-globalnet" (include "submariner.fullname" .)) .Values.serviceAccounts.globalnet.name }}
|
||||||
{{- else -}}
|
{{- else -}}
|
||||||
{{ default "default" .Values.serviceAccounts.globalnet.name }}
|
{{ default "default" .Values.serviceAccounts.globalnet.name }}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|||||||
@@ -0,0 +1,324 @@
|
|||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: clusters.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Cluster
|
||||||
|
plural: clusters
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: endpoints.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Endpoint
|
||||||
|
plural: endpoints
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: gateways.submariner.io
|
||||||
|
spec:
|
||||||
|
group: submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: Gateway
|
||||||
|
plural: gateways
|
||||||
|
scope: Namespaced
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: ha-status
|
||||||
|
type: string
|
||||||
|
description: High Availability Status of the Gateway
|
||||||
|
JSONPath: .status.haStatus
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: multiclusterservices.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v1
|
||||||
|
names:
|
||||||
|
kind: MultiClusterService
|
||||||
|
plural: multiclusterservices
|
||||||
|
singular: multiclusterservice
|
||||||
|
scope: Namespaced
|
||||||
|
validation:
|
||||||
|
openAPIV3Schema:
|
||||||
|
properties:
|
||||||
|
spec:
|
||||||
|
properties:
|
||||||
|
clusterServiceInfo:
|
||||||
|
properties:
|
||||||
|
clusterID:
|
||||||
|
type: "string"
|
||||||
|
clusterDomain:
|
||||||
|
type: "string"
|
||||||
|
serviceIP:
|
||||||
|
type: "string"
|
||||||
|
port:
|
||||||
|
type: "integer"
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceexports.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v2alpha1
|
||||||
|
names:
|
||||||
|
kind: ServiceExport
|
||||||
|
plural: serviceexports
|
||||||
|
singular: serviceexport
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1beta1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceimports.lighthouse.submariner.io
|
||||||
|
spec:
|
||||||
|
group: lighthouse.submariner.io
|
||||||
|
version: v2alpha1
|
||||||
|
names:
|
||||||
|
kind: ServiceImport
|
||||||
|
plural: serviceimports
|
||||||
|
singular: serviceimport
|
||||||
|
scope: Namespaced
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceexports.multicluster.x-k8s.io
|
||||||
|
spec:
|
||||||
|
group: multicluster.x-k8s.io
|
||||||
|
scope: Namespaced
|
||||||
|
names:
|
||||||
|
plural: serviceexports
|
||||||
|
singular: serviceexport
|
||||||
|
kind: ServiceExport
|
||||||
|
shortNames:
|
||||||
|
- svcex
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
jsonPath: .metadata.creationTimestamp
|
||||||
|
"schema":
|
||||||
|
"openAPIV3Schema":
|
||||||
|
description: ServiceExport declares that the Service with the same name and
|
||||||
|
namespace as this export should be consumable from other clusters.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
status:
|
||||||
|
description: status describes the current state of an exported service.
|
||||||
|
Service configuration comes from the Service that had the same name
|
||||||
|
and namespace as this ServiceExport. Populated by the multi-cluster
|
||||||
|
service implementation's controller.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
conditions:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: "ServiceExportCondition contains details for the current
|
||||||
|
condition of this service export. \n Once [KEP-1623](https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/1623-standardize-conditions)
|
||||||
|
is implemented, this will be replaced by metav1.Condition."
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- status
|
||||||
|
- type
|
||||||
|
properties:
|
||||||
|
lastTransitionTime:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: Status is one of {"True", "False", "Unknown"}
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "True"
|
||||||
|
- "False"
|
||||||
|
- Unknown
|
||||||
|
type:
|
||||||
|
description: ServiceExportConditionType identifies a specific
|
||||||
|
condition.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- type
|
||||||
|
x-kubernetes-list-type: map
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: serviceimports.multicluster.x-k8s.io
|
||||||
|
spec:
|
||||||
|
group: multicluster.x-k8s.io
|
||||||
|
scope: Namespaced
|
||||||
|
names:
|
||||||
|
plural: serviceimports
|
||||||
|
singular: serviceimport
|
||||||
|
kind: ServiceImport
|
||||||
|
shortNames:
|
||||||
|
- svcim
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- name: Type
|
||||||
|
type: string
|
||||||
|
description: The type of this ServiceImport
|
||||||
|
jsonPath: .spec.type
|
||||||
|
- name: IP
|
||||||
|
type: string
|
||||||
|
description: The VIP for this ServiceImport
|
||||||
|
jsonPath: .spec.ips
|
||||||
|
- name: Age
|
||||||
|
type: date
|
||||||
|
jsonPath: .metadata.creationTimestamp
|
||||||
|
"schema":
|
||||||
|
"openAPIV3Schema":
|
||||||
|
description: ServiceImport describes a service imported from clusters in a
|
||||||
|
ClusterSet.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
apiVersion:
|
||||||
|
description: 'APIVersion defines the versioned schema of this representation
|
||||||
|
of an object. Servers should convert recognized schemas to the latest
|
||||||
|
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
||||||
|
type: string
|
||||||
|
kind:
|
||||||
|
description: 'Kind is a string value representing the REST resource this
|
||||||
|
object represents. Servers may infer this from the endpoint the client
|
||||||
|
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
||||||
|
type: string
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
spec:
|
||||||
|
description: spec defines the behavior of a ServiceImport.
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- ports
|
||||||
|
- type
|
||||||
|
properties:
|
||||||
|
ips:
|
||||||
|
description: ip will be used as the VIP for this service when type
|
||||||
|
is ClusterSetIP.
|
||||||
|
type: array
|
||||||
|
maxItems: 1
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
ports:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: ServicePort represents the port on which the service
|
||||||
|
is exposed
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- port
|
||||||
|
properties:
|
||||||
|
appProtocol:
|
||||||
|
description: The application protocol for this port. This field
|
||||||
|
follows standard Kubernetes label syntax. Un-prefixed names
|
||||||
|
are reserved for IANA standard service names (as per RFC-6335
|
||||||
|
and http://www.iana.org/assignments/service-names). Non-standard
|
||||||
|
protocols should use prefixed names such as mycompany.com/my-custom-protocol.
|
||||||
|
Field can be enabled with ServiceAppProtocol feature gate.
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
description: The name of this port within the service. This
|
||||||
|
must be a DNS_LABEL. All ports within a ServiceSpec must have
|
||||||
|
unique names. When considering the endpoints for a Service,
|
||||||
|
this must match the 'name' field in the EndpointPort. Optional
|
||||||
|
if only one ServicePort is defined on this service.
|
||||||
|
type: string
|
||||||
|
port:
|
||||||
|
description: The port that will be exposed by this service.
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
protocol:
|
||||||
|
description: The IP protocol for this port. Supports "TCP",
|
||||||
|
"UDP", and "SCTP". Default is TCP.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-type: atomic
|
||||||
|
sessionAffinity:
|
||||||
|
description: 'Supports "ClientIP" and "None". Used to maintain session
|
||||||
|
affinity. Enable client IP based session affinity. Must be ClientIP
|
||||||
|
or None. Defaults to None. Ignored when type is Headless More info:
|
||||||
|
https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
|
||||||
|
type: string
|
||||||
|
sessionAffinityConfig:
|
||||||
|
description: sessionAffinityConfig contains session affinity configuration.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
clientIP:
|
||||||
|
description: clientIP contains the configurations of Client IP
|
||||||
|
based session affinity.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
timeoutSeconds:
|
||||||
|
description: timeoutSeconds specifies the seconds of ClientIP
|
||||||
|
type session sticky time. The value must be >0 && <=86400(for
|
||||||
|
1 day) if ServiceAffinity == "ClientIP". Default value is
|
||||||
|
10800(for 3 hours).
|
||||||
|
type: integer
|
||||||
|
format: int32
|
||||||
|
type:
|
||||||
|
description: type defines the type of this service. Must be ClusterSetIP
|
||||||
|
or Headless.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- ClusterSetIP
|
||||||
|
- Headless
|
||||||
|
status:
|
||||||
|
description: status contains information about the exported services that
|
||||||
|
form the multi-cluster service referenced by this ServiceImport.
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
clusters:
|
||||||
|
description: clusters is the list of exporting clusters from which
|
||||||
|
this service was derived.
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
description: ClusterStatus contains service configuration mapped
|
||||||
|
to a specific source cluster
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- cluster
|
||||||
|
properties:
|
||||||
|
cluster:
|
||||||
|
description: cluster is the name of the exporting cluster. Must
|
||||||
|
be a valid RFC-1123 DNS label.
|
||||||
|
type: string
|
||||||
|
x-kubernetes-list-map-keys:
|
||||||
|
- cluster
|
||||||
|
x-kubernetes-list-type: map
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
{{- if .Values.crd.create -}}
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: clusters.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Cluster
|
|
||||||
plural: clusters
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: endpoints.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Endpoint
|
|
||||||
plural: endpoints
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: gateways.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: Gateway
|
|
||||||
plural: gateways
|
|
||||||
scope: Namespaced
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: ha-status
|
|
||||||
type: string
|
|
||||||
description: High Availability Status of the Gateway
|
|
||||||
JSONPath: .status.haStatus
|
|
||||||
---
|
|
||||||
{{- if .Values.submariner.serviceDiscovery }}
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: multiclusterservices.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v1
|
|
||||||
names:
|
|
||||||
kind: MultiClusterService
|
|
||||||
plural: multiclusterservices
|
|
||||||
singular: multiclusterservice
|
|
||||||
scope: Namespaced
|
|
||||||
validation:
|
|
||||||
openAPIV3Schema:
|
|
||||||
properties:
|
|
||||||
spec:
|
|
||||||
properties:
|
|
||||||
clusterServiceInfo:
|
|
||||||
properties:
|
|
||||||
clusterID:
|
|
||||||
type: "string"
|
|
||||||
clusterDomain:
|
|
||||||
type: "string"
|
|
||||||
serviceIP:
|
|
||||||
type: "string"
|
|
||||||
port:
|
|
||||||
type: "integer"
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceexports.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v2alpha1
|
|
||||||
names:
|
|
||||||
kind: ServiceExport
|
|
||||||
plural: serviceexports
|
|
||||||
singular: serviceexport
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1beta1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceimports.lighthouse.submariner.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: lighthouse.submariner.io
|
|
||||||
version: v2alpha1
|
|
||||||
names:
|
|
||||||
kind: ServiceImport
|
|
||||||
plural: serviceimports
|
|
||||||
singular: serviceimport
|
|
||||||
scope: Namespaced
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceexports.multicluster.x-k8s.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: multicluster.x-k8s.io
|
|
||||||
scope: Namespaced
|
|
||||||
names:
|
|
||||||
plural: serviceexports
|
|
||||||
singular: serviceexport
|
|
||||||
kind: ServiceExport
|
|
||||||
shortNames:
|
|
||||||
- svcex
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
jsonPath: .metadata.creationTimestamp
|
|
||||||
---
|
|
||||||
apiVersion: apiextensions.k8s.io/v1
|
|
||||||
kind: CustomResourceDefinition
|
|
||||||
metadata:
|
|
||||||
name: serviceimports.multicluster.x-k8s.io
|
|
||||||
annotations:
|
|
||||||
"helm.sh/hook": crd-install
|
|
||||||
spec:
|
|
||||||
group: multicluster.x-k8s.io
|
|
||||||
scope: Namespaced
|
|
||||||
names:
|
|
||||||
plural: serviceimports
|
|
||||||
singular: serviceimport
|
|
||||||
kind: ServiceImport
|
|
||||||
shortNames:
|
|
||||||
- svcim
|
|
||||||
versions:
|
|
||||||
- name: v1alpha1
|
|
||||||
served: true
|
|
||||||
storage: true
|
|
||||||
additionalPrinterColumns:
|
|
||||||
- name: Type
|
|
||||||
type: string
|
|
||||||
description: The type of this ServiceImport
|
|
||||||
jsonPath: .spec.type
|
|
||||||
- name: IP
|
|
||||||
type: string
|
|
||||||
description: The VIP for this ServiceImport
|
|
||||||
jsonPath: .spec.ips
|
|
||||||
- name: Age
|
|
||||||
type: date
|
|
||||||
jsonPath: .metadata.creationTimestamp
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
||||||
@@ -36,7 +36,7 @@ spec:
|
|||||||
- name: SUBMARINER_CLUSTERID
|
- name: SUBMARINER_CLUSTERID
|
||||||
value: '{{ .Values.submariner.clusterId }}'
|
value: '{{ .Values.submariner.clusterId }}'
|
||||||
- name: SUBMARINER_EXCLUDENS
|
- name: SUBMARINER_EXCLUDENS
|
||||||
value: 'submariner-operator,kube-system,operators'
|
value: 'submariner-operator,kube-system,operators,openshift-monitoring,openshift-dns'
|
||||||
- name: SUBMARINER_NAMESPACE
|
- name: SUBMARINER_NAMESPACE
|
||||||
value: '{{ .Release.Namespace }}'
|
value: '{{ .Release.Namespace }}'
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ metadata:
|
|||||||
rules:
|
rules:
|
||||||
- apiGroups: [""]
|
- apiGroups: [""]
|
||||||
resources: ["nodes"]
|
resources: ["nodes"]
|
||||||
verbs: ["get", "update"]
|
verbs: ["get", "list", "watch", "update"]
|
||||||
---
|
---
|
||||||
apiVersion: rbac.authorization.k8s.io/v1
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
kind: ClusterRoleBinding
|
kind: ClusterRoleBinding
|
||||||
|
|||||||
@@ -41,10 +41,14 @@ spec:
|
|||||||
value: "{{ .Values.submariner.clusterId }}"
|
value: "{{ .Values.submariner.clusterId }}"
|
||||||
- name: SUBMARINER_DEBUG
|
- name: SUBMARINER_DEBUG
|
||||||
value: "{{ .Values.submariner.debug }}"
|
value: "{{ .Values.submariner.debug }}"
|
||||||
- name: SUBMARINER_CLUSTERCIDR
|
- name: SUBMARINER_CLUSTERCIDR
|
||||||
value: "{{ .Values.submariner.clusterCidr }}"
|
value: "{{ .Values.submariner.clusterCidr }}"
|
||||||
- name: SUBMARINER_SERVICECIDR
|
- name: SUBMARINER_SERVICECIDR
|
||||||
value: "{{ .Values.submariner.serviceCidr }}"
|
value: "{{ .Values.submariner.serviceCidr }}"
|
||||||
|
- name: NODE_NAME
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: "spec.nodeName"
|
||||||
resources:
|
resources:
|
||||||
{{ toYaml .Values.routeAgent.resources | indent 10 }}
|
{{ toYaml .Values.routeAgent.resources | indent 10 }}
|
||||||
securityContext:
|
securityContext:
|
||||||
|
|||||||
Reference in New Issue
Block a user