archive/deploy.yaml (162 lines of code) (raw):
apiVersion: v1
kind: Namespace
metadata:
name: istio-system
---
apiVersion: v1
kind: Service
metadata:
name: istio
namespace: istio-system
labels:
app: istio
spec:
type: LoadBalancer
selector:
app: istio
ports:
- name: http
port: 80
- name: https
port: 443
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: istio
namespace: istio-system
spec:
selector:
matchLabels:
app: istio
template:
metadata:
labels:
app: istio
istio: ingressgateway
spec:
serviceAccountName: istio
containers:
- name: istio
# Pinned to latest verified version, as this is changing rapidly
image: gcr.io/istio-testing/pilot:1.8-alpha.39f0b315f9f2ac29df449bf54994f8b0a6aec057
imagePullPolicy: Always
args:
- discovery
env:
- name: PILOT_ENABLED_SERVICE_APIS
value: "true" # This will be enabled by default in the future
- name: VALIDATION_WEBHOOK_CONFIG_NAME
value: ""
- name: ENABLE_CA_SERVER
value: "false"
volumeMounts:
- name: config-volume
mountPath: /etc/istio/config
- name: proxy
image: gcr.io/istio-testing/proxyv2:1.8-alpha.39f0b315f9f2ac29df449bf54994f8b0a6aec057
args:
- proxy
- router
env:
# TODO(https://github.com/istio/istio/issues/24655) remove this
- name: JWT_POLICY
value: first-party-jwt
- name: ISTIO_META_CLUSTER_ID
value: Kubernetes
- name: ISTIO_META_CONFIG_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- mountPath: /etc/istio/pod
name: podinfo
- name: config-volume
mountPath: /etc/istio/config
- name: ingressgatewaysdsudspath
mountPath: /var/run/ingress_gateway
volumes:
- downwardAPI:
items:
- fieldRef:
fieldPath: metadata.labels
path: labels
- fieldRef:
fieldPath: metadata.annotations
path: annotations
name: podinfo
- emptyDir:
medium: Memory
name: local-certs
- name: config-volume
configMap:
name: istio
- name: ingressgatewaysdsudspath
emptyDir: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: istio
namespace: istio-system
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: istio
namespace: istio-system
rules:
- apiGroups: [""]
resources: ["services", "nodes", "pods", "endpoints", "secrets", "namespaces"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create", "get", "watch", "list", "update", "delete"]
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["create", "update", "get", "list", "watch"]
- apiGroups: ["networking.x-k8s.io"]
resources: ["*"]
verbs: ["get", "list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses", "ingressclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["ingresses/status"]
verbs: ["*"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["get", "list", "watch"]
# Pilot will try to read these even if they aren't existing. For now, just give access.
- apiGroups:
- config.istio.io
- networking.istio.io
- authentication.istio.io
- rbac.istio.io
- security.istio.io
resources: ["*"]
verbs: [get, list, watch]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: istio
namespace: istio-system
subjects:
- kind: ServiceAccount
name: istio
namespace: istio-system
roleRef:
kind: ClusterRole
name: istio
apiGroup: rbac.authorization.k8s.io
---
kind: ConfigMap
apiVersion: v1
metadata:
name: istio
namespace: istio-system
data:
mesh: |-
enableAutoMtls: false
accessLogFile: /dev/stdout
defaultConfig:
discoveryAddress: localhost:15010
controlPlaneAuthPolicy: NONE